1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC ĐẠI NAM
-------------------------------------------------
NGUYỄN VĂN TUẤN
PHÂN TÍCH DỮ LIỆU THỐNG KÊ
VÀ PYTHON
HÀ NỘI, 2021
2
Chương 1. Thống kê và khai phá dữ liệu
Chương này giới thiệu các kiến thức cơ bản nhất sử dụng trong thống kê.
Sử dụng Excel để tính toán các số liệu thống kê.
Excel là một công cụ phân tích rất mạnh có thể tính toán nhiều số liệu thống
kê, chúng ta sẽ khám phá qua chương này và trong suốt cuốn sách này. Chương
này cung cấp thông tin chi tiết về thống kê sử dụng Excel, bao gồm các nội dung
và cung cấp cơ sở cho các chương sau. Các nội dung được đề cập của Chương:
 Trung bình
 Tương quan
 Hồi quy tuyến tính
Tất cả các hoạt động sẽ được hiển thị và mô tả rõ ràng bằng Exel.
1. Các khái niệm
1.1. Thống kê là gì?
Lĩnh vực thống kê liên quan đến việc thu thập, mô tả và khai phá dữ liệu.
Chúng ta có thể coi dữ liệu là những sự kiện, dữ kiện và số liệu quan sát được.
Một thống kê điển hình mà chúng ta có thể nghe hàng ngày là về thời tiết, ví dụ:
Lượng mưa tháng này cao hơn lượng mưa trung bình trong các tháng hoặc, nhiệt
độ tháng này nóng hơn nhiệt độ trung bình các tháng. Để có kết luận này chúng ta
phải sử dụng các số liệu trung bình của các tháng trước.
1.2. Trung bình, trung vị và mode
Trong thống kê, có ba loại trung bình khác nhau:
 Trung bình: kết quả thu được bằng cách cộng các số lại với nhau rồi
chia tổng số bằng số lượng (thông thường mọi người gọi con số này là Trung bình).
Nếu một dãy số liệu thống kê (mẫu):
1
1
1
,..., .
n
n i
i
x x x x
n 
  
Nếu mẫu gồm n số liệu 1,..., m
x x trong đó mỗi giá trị lặp lại i
r lần thì ta có
công thức tính trung bình mẫu:
1
1
.
m
i i
i
x r x
n 
 
3
 Trung vị (median): là giá trị "giữa" trong danh sách các số. Để tìm ở
giữa, dùng giấy bút viết số được liệt kê dưới dạng số đặt hàng, sau đó xác định vị
trí giữa.
Nếu một dãy số liệu thống kê (mẫu): 1 2 ... ,
n
x x x
   khi đó, kí hiệu trung
vị là m thì:
1
2
1
2 2
, 2 ,
, 2 1, .
2
n
n n
x khi n k k
m x x
khi n k k


 



  
   


Z
Z
 Mode: là giá trị xuất hiện thường xuyên nhất. Nếu không có số lặp lại,
không có mode.
Ví dụ 1. Sử dụng Excel tính giá trị trung bình, trung vị và mode, cho các số
liệu sau: 13, 18, 13, 14, 13, 16, 14, 21, 13.
Giải. Nhập số liệu trong Exel ta có:
Tại ô C nhập công thức tính trung bình mẫu:
= AVERAGE(A1: A9). Thực hiện lệnh ta có kết
quả ở hình dưới đây:
Sau khi nhập mẫu, ta tính trung vị và mode theo lệnh: median(A1: A9),
mode(A1: A9). Ta có kết quả:
4
1.3. Các phép đo
Khi xử lý các số liệu thống kê, chúng ta phải biết độ tin cậy của các số liệu
được tạo ra. Sử dụng các phép đo cụ thể, có thể kiểm tra xem các số liệu được tạo
ra có thể được sử dụng với độ "tin cậy" hay không. Excel cho phép tính toán một
loạt các phép đo: Nếu dữ liệu trong Exel từ ô C1 đến Cn thì:
 Range: sự khác biệt giữa số liệu tối đa và số liệu tối thiểu:
Range = Max(C1:Cn) – Min(C1:Cn).
 Phương sai: giá trị trung bình của các chênh lệch bình phương so với Giá
trị trung bình
Varian = Var(C1:Cn).
 Độ lệch chuẩn: một thống kê phổ biến vì nó cung cấp một chỉ báo về sự
thay đổi: của một tập hợp dữ liệu. Tuy nhiên, nó không phải là thống kê tốt nhất
để sử dụng khi so sánh các bộ dữ liệu khác nhau, đặc biệt nếu dữ liệu có kích thước
khác nhau.
Vtdev = Stdev(C1:Cn).
 Sai số chuẩn (Standard error):
Standard = Stdev(C1:Cn)/Sqrt(Count(C1:Cn)).
Kết quả tính toán các thống kê ở ví dụ 1, được thể hiện trong bảng sau:
5
Ví dụ 2. Cho hai mẫu số liệu sau:
Data1 Data2
21.1 14.8
23.5 27.5
16.8 40.6
19.2 8.2
23.3 33.9
22.8 1.7
Hãy tính các thống kê sau với hai mẫu số liệu trên:
a. Trung bình
b. Median
c. Mod
d. Phương sai
e. Độ lệch chuẩn
f. Sai số chuẩn
Giải. Kết quả tính thể hiện trong bảng sau:
1.4. Tương quan
Sự tương quan cho chúng ta biết liệu hai biến có khác nhau về tính đồng bộ
hay không, tức là một tăng cái kia cũng tăng (hoặc giảm). Thống kê tương quan
thay đổi giữa 1 và -1:
1: tương quan thuận hoàn hảo, cả hai số liệu đều tăng hoặc giảm cùng với
nhau;
0: không có mối tương quan;
6
-1: tương quan âm hoàn hảo, khi một con số này tăng lên con số kia giảm
và ngược lại.
Ví dụ 3. Sử dụng Exel tính mối tương quan (hệ số tương quan) giữa các mẫu
số liệu sau:
a. Data1 với data2;
b. Data1 với data3;
c. Data1 với data4;
với mẫu số liệu cụ thể sau:
Giải. Sử dụng Exel ta có kết quả hệ số tương quan của các cặp dữ liệu trên
sau đây:
Căn cứ bảng trên ta có kết luận:
 Dữ liệu 1 tương quan thuận hoàn toàn với dữ liệu 2;
 Dữ liệu 1 hoàn toàn tương quan nghịch với dữ liệu 3;
 Dữ liệu 1 và dữ liệu 4 hoàn toàn không tương quan, vì vậy Excel trả về
lỗi. Trong trường hợp này, mã lỗi giống như 0.
Phần tiếp theo của bài tập này bao gồm hai phần:
1) Đổi tên bảng tính;
7
2) Tạo đồ thị dữ liệu tương quan trong Excel. Cụ thể:
Đổi tên trang tính Excel, thể hiện trong hình sau:
Để dễ dàng tham khảo, trang tính Excel này đã được đổi tên thành tương
quan. Cụ thể:
1) Nhấp chuột phải vào hộp ở dưới cùng
a. Bước 1. Chọn Rename như được đánh dấu;
b. Bước 2. Ghi thành Correlation.
Đổi tên trang tính trong Excel rất đơn giản và có thể giúp chúng ta xác định
thông tin quan trọng dễ dàng hơn.
Excel có thể cung cấp các biểu đồ sâu sắc một cách dễ dàng. Trong ví dụ
này, chúng ta sẽ tạo một biểu đồ rất đơn giản bằng cách sử dụng biểu đồ phân tán.
Biểu đồ phân tán có nhiều chức năng hơn biểu đồ đường, đó là lý do tại sao chúng
ta sử dụng chúng ở đây.
Hướng dẫn vẽ các biểu đồ phân tán của ví dụ 3. Trong Exel theo hướng dẫn
sau:
8
Các bước làm, cụ thể như sau:
1) Đánh dấu các ô A1 đến B11;
2) Chọn tab CHÈN ở đầu màn hình;
3) Nhấp vào nút biểu đồ phân tán;
4) Chọn Phân tán với các đường mịn và điểm đánh dấu.
Khi chúng ta cần ánh xạ data1 với data3 và data1 với data4, thực yêu như
sau:
1) Bấm vào biểu đồ vừa tạo bằng chuột;
2) Nhấp chuột phải vào biểu đồ và nhấp vào Chọn dữ liệu như được hiển thị
trong hình dưới:
Khi đó, chúng ta cần kích: on add.
9
1) Ô trắng là tên chúng ta muốn đặt cho
dòng Dữ liệu 3;
2) Trục x là trục hoành, vì vậy sẽ cần
dữ liệu từ dữ liệu 1. Kích chọn vào
hộp: Đánh dấu các ô từ A2 đến A11;
3) Trục y là trục tung, vì vậy sẽ cần dữ
liệu từ dữ liệu 3. Nhấp vào hộp: Đánh
dấu các ô C2: C11 Như bạn sẽ thấy
Exel sẽ điền đủ các thông tin cần thiết vào ô số trắng.
Giải thích công thức này như sau:
a. Tương quan - tên của trang tính
b. ! - cho Excel biết rằng tên của
trang tính đã hoàn thành và mong
đợi các tham chiếu ô C.
c. $ A $ 2: $ A $ 11- cho Excel biết
rằng chúng ta sử dụng các ô từ A2
đến A11.
Dấu $ cho Excel biết rằng đây là một ô tuyệt đối giải quyết tham chiếu ô
tuyệt đối biểu thị rằng nếu ta sao chép công thức này ở nơi khác, các ô được đề cử
sẽ không thay đổi. Lặp lại điều trên cho dữ liệu 4, ta nhận được:
Khi đó, chúng ta nhận được đồ thị sau:
10
Với biểu đồ vẫn được đánh dấu, nhấp vào quick layout ta có thể thay đổi
giao diện của đồ thị (1) ở trên:
Ta có nhiều loại biểu đồ để lựa chọn, hãy nhấp
vào biểu đồ đầu tiên ở góc trên cùng bên trái. Ki đó,
thay đổi giao diện của đồ thị như sau:
Bây giờ chúng ta có thể điền thêm thông tin vào biểu đồ. Điều này sẽ liên
quan đến việc sử dụng chuột để nhấp vào phần có liên quan của biểu đồ.
1) Nhấp vào Tiêu đề biểu đồ, để đặt tên cho biểu đồ
a. Vẽ biểu đồ tương quan.
2) Nhấp vào ‘Tiêu đề trục’ trên trục y (dọc).
a. Điền các số.
3) Nhấp vào ‘Tiêu đề trục’ trên trục x (nằm ngang).
a. Dữ liệu 1
11
Ta nhận được biểu đồ tương quan sau:
Ví dụ 4. Hệ số tương quan
Ví dụ này yêu cầu tính toán mối tương quan giữa trí thông minh và đối tác
trong một mối quan hệ. Bảng sau chứa các kết quả thử nghiệm, xếp hạng trong số
30, sự thông minh của các cặp vợ chồng trong một mối quan hệ. Có mối tương
quan giữa: Đối tác 1 và đối tác 2 Xếp hạng đối tác 1 và xếp hạng đối tác 2, ở đó:
(1 = thấp nhất, 6 = cao nhất).
Giải. Sử dụng tìm hệ số tương quan sau:
Các số liệu trên 0,7 hoặc dưới -0,7 có xu
hướng ngụ ý mối tương quan. Hình bên cho
chúng ta thấy rằng có một mối quan hệ giữa
trí thông minh và đối tác, do thống kê tương
quan là trên 0,7. Lưu ý, mối tương quan
không bao hàm nguyên nhân. Ví dụ, trong ví
dụ này, chúng ta không thể nói rằng hẹn hò
với những người thông minh gây ra sự thông
minh.
12
1.5. Hồi quy tuyến tính đơn giản
Một nhiệm vụ phổ biến khác trong phân tích dữ liệu là điều tra mối liên hệ
giữa hai biến bằng cách sử dụng hồi quy. Hồi quy được sử dụng khi chúng ta có
lý do để tin rằng những thay đổi trong một biến số này gây ra những thay đổi trong
một biến số khác. Mối tương quan không phải là bằng chứng cho mối quan hệ
nhân quả, nhưng rất thường xuyên chúng ta nhận thức được mối quan hệ nhân quả
và chúng ta thiết kế một thí nghiệm để điều tra sâu hơn về mối quan hệ đó. Loại
mối quan hệ nhân quả đơn giản nhất là mối quan hệ đường thẳng, có thể được
phân tích bằng cách sử dụng hồi quy tuyến tính.
Y = mX.
Điều này phù hợp với một đường thẳng với dữ liệu bằng cách sử dụng
phương pháp bình phương nhỏ nhất và cung cấp các giá trị của hệ số góc (m) và
giao điểm (c) xác định đường thẳng. Có một số phương pháp khác nhau để tính
toán độ dốc và điểm chặn của đường hồi quy tuyến tính trong Excel, nhưng phương
pháp đơn giản nhất là tạo biểu đồ phân tán và sử dụng tính năng ‘Thêm đường xu
hướng’ (như minh họa tiếp theo).
Ví dụ. Hồi quy tuyến tính đơn giản
Chúng ta muốn kiểm tra xem có mối quan hệ giữa độ dày của miếng bọt
biển và độ hấp thụ chất lỏng của nó hay không. Thiết kế một thí nghiệm với các
mức độ dày khác nhau của bọt biển, với lượng chất lỏng được hấp thụ. Kết quả
được ghi trong bảng sau:
Sao chép các số liệu từ bảng 1.5 vào
Excel và tạo biểu đồ phân tán (không
nối), như trong hình sau:
13
Các bước nhập dữ liệu vào Exel được thể hiện:
1) Đánh dấu các ô từ A1 đến B12;
2) Chọn tab INSERT;
3) Nhấp vào nút biểu đồ phân tán;
4) Chọn Scatter, nhưng lần này, ta chọn biểu đồ đầu tiên.
Để khám phá xem có mối quan hệ giữa độ dày của miếng bọt biển và khả
năng thấm hút hay không, chúng tôi thực hiện như sau:
1) Nhấp chuột phải vào bất kỳ dấu
chấm nào trên biểu đồ;
2) Một menu sẽ bật lên
a. Nhấp vào Add Trendline (thêm
đường xu hướng), Hình 1.18: Lựa
chọn phương trình và r-square:
14
Trong phần lựa chọn
menu, hãy đánh dấu vào
các hộp sau:
1) Hiển thị phương trình
trên biểu đồ;
2) Hiển thị giá trị bình
phương R trên biểu đồ.
Phương trình đầy đủ của
các giá trị độ dốc và điểm
chặn hiện được hiển thị
trên biểu đồ (như trong hình 1.18). Excel đã tạo ra một phương trình hồi quy tuyến
tính đơn giản, cung cấp cho chúng ta cái nhìn sâu sắc về mối quan hệ giữa độ dày
của miếng bọt biển và khả năng thấm hút của nó.
Y = mX.
Phương trình trên đại diện cho một hồi quy tuyến tính đơn giản, trong đó
 Y là những gì chúng ta đang cố gắng dự đoán;
 m là gradient (giá trị chúng ta nhân với giá trị ‘X’);
 X sẽ là độ dày của bọt biển;
 C là điểm giao nhau (nơi đường thẳng cắt trục y).
Sử dụng chức năng quick layout function (như mô tả trong hình 1.13), biểu
đồ đã được gắn nhãn như hình minh họa
 Tiêu đề: đồ thị hồi quy tuyến tính đơn giản
 Trục X: Độ dày miếng bọt biển (mm)
 Trục Y: Độ hấp thụ (ml).
15
Đường thẳng vẽ biểu đồ mối quan hệ giữa trục y (độ hấp thụ) và trục x (độ
dày miếng bọt biển). Thay m và C vào phương trình trên sẽ tạo ra:
Y = 0.1392 X + 0.0668.
Đối với mỗi mm độ dày, chúng ta nên mong đợi nó hấp thụ thêm 0,1392ml
chất (cộng thêm 0,068ml). Nếu ai đó hỏi, "Chúng ta nên mong đợi bao nhiêu khả
năng thấm hút từ một miếng bọt biển dày 10mm", chúng tôi có thể đưa ra câu trả
lời. Sử dụng Y = mX + C, chúng ta biết rằng: m = 0,1392, C = 0,0668, X = 10.
R2
là gì?
R²: thước đo mức độ phù hợp của hồi quy tuyến tính. Giá trị R² là một phân
số từ 0,0 đến 1,0 và không có đơn vị. Giá trị R² là 0,0 có nghĩa là biết X không
giúp ta dự đoán Y. Không có mối quan hệ tuyến tính nào giữa X và Y và đường
phù hợp nhất là đường nằm ngang đi qua giá trị trung bình của tất cả các giá trị Y.
Khi R² = 1,0, tất cả các điểm nằm chính xác trên một đường thẳng không có phân
tán. Biết X cho phép ta dự đoán Y một cách hoàn hảo. Giá trị R2
= 0,7 có nghĩa là
phù hợp tốt.
16
Từ đồ thị được hiển thị trước đây (hình 1.19), chúng ta thấy rằng mô hình
hồi quy tạo ra giá trị r2
= 0,9095. Điều này có nghĩa là mô hình dự đoán tỷ lệ hấp
thụ đủ tốt để chúng ta sử dụng mô hình. Cách tính toán thủ công một hồi quy tuyến
tính đơn giản và r2
sẽ được trình bày sau.
Ví dụ 1. Bài tập này muốn khám phá xem có mối quan hệ giữa tuổi tác và
thị lực hay không. Bảng 1.6 chứa dữ liệu chi tiết về độ tuổi và tình trạng suy giảm
thị lực của mắt. Sử dụng dữ liệu này để tạo một mô hình tuyến tính đơn giản dự
đoán tỷ lệ suy giảm của thị giác theo độ tuổi. Ngoài ra, chúng ta có thể sử dụng
mô hình một cách tự tin không?
Giải.
17
Từ hình 1.22, có thể quan sát thấy rằng khi tuổi tác tăng lên, chúng ta kỳ
vọng tỷ lệ giảm thị lực sẽ tăng 0,1182% khi tuổi tác tăng lên. Với r2
= 0,7461,
chúng ta có thể tự tin sử dụng mô hình này.
1.6 Tóm tắt
Chương này trình bày các khái niệm cơ bản về thống kê theo cách áp dụng.
Cuốn sách này được thiết kế để dành nhiều hơn cho ứng dụng hơn là lý thuyết.
Theo kinh nghiệm của mình, tôi nhận thấy Excel là công cụ hoàn hảo để dạy ứng
dụng thống kê, do tính linh hoạt và khả năng hiển thị của nó. Trong Excel, rất khó
để ẩn kết quả và các phép tính.
18
2. Kiểm định thống kê
Mục này nhằm mục đích phát triển sự hiểu biết sâu hơn về thống kê trong
Excel. Sử dụng nhiều ví dụ và bài tập, mục này sẽ bao gồm các chủ đề:
 Phân bố
 Giả thuyết vô hiệu
 Kiểm định T
 Kiểm định
2
 (Khi bình phương).
2.1 Phân bố
Bất cứ khi nào chúng ta nhìn vào số liệu thống kê, chúng ta phải xem xét sự
phân bố. Phần lớn các lần phân bố sẽ được tập trung xung quanh giá trị trung bình,
điều này được gọi là phân bố chuẩn. Phân bố chuẩn là gì? Phân bố chuẩn là một
phân bố liên tục có dạng "hình chuông". Các phân bố bình thường có thể ước tính
xác suất trong một khoảng giá trị dữ liệu liên tục. Trong phân bố chuẩn, giá trị
trung bình, trung vị và chế độ giống nhau. Dưới đây là một ví dụ về một biểu đồ
phân bố chuẩn hoàn hảo.
2.2. Kiểm định giả thiết thống kê
Căn cứ vào số liệu thu được, hãy cho một kết luận về giả thiết thống kê nào
đó mà ta đang quan tâm.
Giả thiết thống kê là một giả thiết về phân bố đang xét.
Các ví dụ.
 Không có mối quan hệ giữa tuổi tác và hiệu suất thị lực;
 Không có mối quan hệ nào giữa sâu răng và đau răng.
19
Giả thuyết được đưa ra kiểm nghiệm được gọi là ‘Giả thiết không’. Đó là
giả thiết mà ta nghi ngờ muốn bác bỏ. Như vậy khi bác bỏ ‘Giả thiết không’ thì
điều ngược lại sẽ được chấp nhận.
Vậy chúng ta bác bỏ giả thiết không bằng cách nào?
Tiến hành một số thử nghiệm thống kê nhất định, chúng ta có thể tính toán
xác suất (P) để xác định liệu chúng ta có thể chứng minh hoặc bác bỏ giả thuyết
không hay không. Theo nguyên tắc chung, nếu P nhỏ hơn 0,05 (5%) thì chúng ta
có thể nói rằng có một xác suất đáng kể rằng sự kiện đó không xảy ra một cách
tình cờ, vì vậy chúng ta có thể bác bỏ giả thuyết không.
2.3 Kiểm định t (t test)
Một trong những phép thử thống kê so sánh phổ biến nhất được sử dụng
được gọi là kiểm định t. Điều này được sử dụng khi chỉ có hai tập dữ liệu được
phân phối bình thường để so sánh. Trong Excel, giá trị này được tính bằng công
thức:
= TTEST(range 1, range 2, tails, type)
Điều này trả về P trực tiếp (không phải bản thân thống kê t, không được báo
cáo và chúng tôi không cần). Như có thể thấy trong công thức Excel ở trên, hai
thuật ngữ thống kê mới đã được giới thiệu:
 Tails;
 Type.
Cụ thể, xét:
Tails: Kiểm định t phụ thuộc vào sự phân bố của dữ liệu. Bằng cách chọn
một bên, bạn chỉ quan tâm đến một phần của phân phối (hoặc thấp nhất hoặc cao
nhất). Đối với hai kiểm định t, chúng ta quan tâm đến tất cả sự phân bố.
20
Tails: có thể là 1 kiểm định t một bên hoặc 2 kiểm định t cho hai bên. Nói
chung, chúng ta sử dụng 2 kiểm định t cho hai phía, kiểm tra sự khác biệt bất kể
dấu hiệu (số âm hoặc số dương).
Thể loại: Có ba loại kiểm định t có sẵn trong Excel. Giả sử chúng ta muốn
kiểm tra xem sự phát triển của thực vật sẽ tăng lên sau khi chuyển đến một ngôi
nhà xanh hay tốc độ thở tăng lên sau khi chạy lên đồi. Trong những trường hợp
này, bạn sẽ so sánh nhịp thở của những người giống nhau hoặc sự phát triển của
cùng một chậu cây trước và sau nhà kính. Điều này sẽ yêu cầu một "được ghép
nối" hoặc T-test "phụ thuộc". Excel gọi đây là kiểm định "loại 1". Hãy xem xét
một tình huống khác. Giả sử chúng ta muốn biết liệu sinh viên nghệ thuật có ngủ
nhiều hơn sinh viên khoa học hay không. Sau đó, chúng ta sẽ có hai nhóm đối
tượng thử nghiệm, mỗi đối tượng duy nhất trong nhóm của họ ( sẽ không lấy 2 số
đo trên mỗi người). Đối với trường hợp này, ta sẽ sử dụng thử nghiệm t "không
ghép cặp" hoặc "độc lập". Excel gọi các bài kiểm tra này là "loại 2" hoặc "loại 3".
Bây giờ, phần khó khăn là quyết định sử dụng kiểm định t nào nào trong số
hai kiểm định này. Độ lệch chuẩn đối với cả hai nhóm là như nhau hay chúng khác
nhau? Có thể kiểm tra thống kê này, nhưng nếu nghi ngờ, hãy sử dụng "loại 3" cho
dữ liệu được ghép nối phương sai không bằng nhau (trong đó các tập hợp là từ các
cá nhân khác nhau) và cả hai đều phổ biến.
Ví dụ 1. Trong ví dụ này, chúng ta muốn kiểm tra hiệu quả của một loại
thuốc mới. Hỏi một lựa chọn ngẫu nhiên về tình trạng sức khỏe của sinh viên
(điểm 0 đến 20). Sau đó mà không nói với họ, ta bắt đầu cho họ một loại thuốc
chưa được kiểm tra. Sau một tuần, hỏi những người tương tự về tình trạng sức
khỏe của họ. Kết quả được ghi lại trong bản sau:
Các câu hỏi sau với sinh viên:
1) Giả thuyết không của bạn là gì?
2) Tính giá trị trung bình & độ lệch chuẩn;
3) Chúng có tương quan với nhau không?
4) Tính toán kiểm định t để theo dõi xem có sự
khác biệt về sức khỏe của sinh viênhay không?
21
Giải. 1) Giả thuyết không: Không có mối quan hệ nào giữa thuốc và tình
trạng sức khỏe tốt hơn.
3) Hai tập dữ liệu không tương quan với nhau.
4) Đối với kiểm định t, chúng tôi sẽ sử dụng kiểu hai phía (2). Vì chúng ta
đang sử dụng cùng một người trong cuộc thử nghiệm, điều trị sau và trước khi sử
dụng thuốc, điều này đòi hỏi một kiểm định loại 1, như thể hiện trong hình 2.1.
Từ kết quả kiểm định t, chúng ta có thể xác định rằng cơ hội của con số này xảy
ra một cách tình cờ (với giả thuyết không) là khoảng .014 (hoặc 1,4%).
Do vậy, từ kết quả về mặt thống kê…. Chúng ta bác bỏ giả thuyết không để
ủng hộ giải pháp thay thế. Chỉ một hoặc hai lần trong số 100 lần, nếu chúng ta lặp
lại thí nghiệm này (và giả thuyết không là đúng) chúng ta sẽ nhận được thống kê t
có kích thước như vậy.
Từ đó, chúng ta kết luận rằng nhiều khả năng là do một số nguyên nhân có
hệ thống, có chủ ý. Nếu tất cả các nhiễu khác được loại bỏ, nguyên nhân có hệ
thống này phải có là thuốc. Hay nói một cách đơn giản hơn, loại thuốc này đã thay
đổi hạnh phúc của sinh viên một cách tích cực.
Ví dụ 2. Giả sử, bạn đã trở thành một giáo viên và được một công ty dược
phẩm tiếp cận để thử nghiệm một loại thuốc mới được cho là có tác dụng tăng
cường trí thông minh của trẻ em. Bạn chia lớp thành 2 nhóm ngẫu nhiên, Nhóm 1
uống thuốc mới với Nhóm 2 là nhóm đối chứng (uống giả dược). Mỗi nhóm ngồi
kiểm tra, sau 2 tuần các em dùng thuốc thì lớp ngồi một bài kiểm tra mới. Sự thay
đổi điểm thi được ghi lại như trong bảng 2.2.
22
Hỏi:
a) Giả thuyết không của bạn là gì?
b) Sử dụng Excel để tính giá trị trung bình, độ lệch
chuẩn.
c) Chúng có tương quan với nhau không? Kết quả
có đáng kể không (bạn sẽ sử dụng loại nào)?
Giải. a) Giả thuyết Null Thuốc không ảnh hưởng đến
trí thông minh của trẻ em.
b) Dữ liệu không tương quan.
c) Đối với phép thử t, chúng ta đã chọn loại kiểm định t hai phía (2) và vì
chúng ta không sử dụng cùng một người trong thử nghiệm, điều này yêu cầu một
phép thử loại 3, như thể hiện trong hình 2.6.
Từ kết quả kiểm định t, chúng ta có thể xác định rằng xác suất con số này
xảy ra một cách tình cờ (với giả thuyết không) là khoảng 0,0011 (hoặc 0,11%).
Trung bình, trí thông minh của một đứa trẻ tăng 15,20 điểm. Phép thử t cho
ra con số 0,001, có nghĩa là những kết quả này rất quan trọng và chỉ có thể xảy ra
tình cờ 0,1% số lần. Do đó, chúng ta có thể từ chối giả thiết không. Nghĩa là thuốc
cải thiện điểm kiểm tra.
2.4. Kiểm định Khi bình phương
2
( )

Cho đến nay chúng ta chỉ quan tâm đến dữ liệu đo lường. Đôi khi, kết quả
không phải là phép đo mà là số lượng (tần suất), chẳng hạn như số người phản hồi
23
chiến dịch thư tiếp thị. Với dữ liệu tần suất, ta không nên sử dụng kiểm định t mà
thay vào đó hãy sử dụng kiểm định 'chi-bình phương' (χ2
). χ2
được sử dụng để so
sánh dữ liệu tần suất trong các danh mục khác nhau với dữ liệu dự kiến. Công thức
Exel:
= CHITEST(observed range expected range)
Điều này trả về xác suất P rằng giả thuyết không là đúng. Thống kê khi bình
phương so sánh những quan sát được quan sát với những quan sát mong đợi dưới
giả thiết không có mối liên quan giữa phân loại hàng và cột.
Thống kê khi bình phương có thể được sử dụng để kiểm tra giả thuyết không
có mối liên hệ giữa hai hoặc nhiều nhóm, quần thể hoặc tiêu chí. Nếu P nhỏ hơn
5% thì dữ liệu không phù hợp với lý thuyết, và nếu P lớn hơn 5% thì dữ liệu đồng
ý với lý thuyết).
Ví dụ 1. Chúng ta đi dạo trong một khu rừng xinh xắn và nhận xét về màu
sắc của những quả táo. Chúng ta dự kiến sẽ thấy ¾ táo đỏ và ¼ táo xanh. Sau khi
đếm số táo trong rừng, kết quả đã được ghi lại ở bảng dưới:
Đối với khi bình phương, chúng ta
kiểm tra kết quả thực tế so với những
gì chúng tôi mong đợi. Do đó chúng ta
tính toán lượng táo dự kiến cho mỗi
màu. Có tổng cộng 730 quả táo và dự đoán ¾ quả là màu đỏ và ¼ quả xanh.
Với Excel, kỳ vọng được tính toán dễ dàng:
Bây giờ chúng ta đã có các
số liệu quan sát và dự kiến,
thống kê khi-bình phương
có thể được tính toán trong
Exel nhu dưới đây:
24
Với giá trị khi-bình phương
cao (trên 0,05), chúng ta có thể
nói rằng lý thuyết của chúng ta
là đúng. Điều quan sát được là
gần với dự kiến, do đó chứng
minh lý thuyết của chúng ta.
LƯU Ý: lý do tại sao chúng ta
sử dụng khi-bình phương chứ
không phải số học đơn giản, là để chắc chắn rằng kết quả của chúng ta là đáng kể
và chúng ta có thể công bố kết quả của mình một cách tự tin.
Ví dụ 2. Ví dụ này sử dụng thống kê chiến dịch tiếp thị. Một chiến dịch gửi
thư gồm 1000 bức thư chia cho 500 nam và 500 cho nữ đã được tiến hành. Chúng
ta kỳ vọng nam giới sẽ phản hồi gấp đôi so với nữ giới. Do đó, cứ 30 câu trả lời,
chúng tôi mong đợi 10 câu trả lời từ phụ nữ và 20 câu trả lời từ nam giới. Kết quả
được ghi trong bảng 2.4. Lý thuyết của chúng ta có đúng không?
Giải.
Với giá trị khi-bình
phương nhỏ hơn 0,05, giả
thuyết của chúng ta đã
sai.
Vậy, nam giới không đại
diện cho 2/3 số phản hồi
gửi thư.
LƯU Ý: Như đã đề cập
trước đây, chúng ta sử
dụng thống kê khi-bình
phương để cho phép chúng ta công bố kết quả một cách tự tin.
25
2.5 Kiểm định chi bình phương kết hợp
Kiểm định khi bình phương cũng có thể được sử dụng để điều tra mối liên
hệ giữa dữ liệu tần số trong hai nhóm riêng biệt. Đây được gọi là kiểm định khi
bình phương kết hợp. Dữ liệu mong đợi được tính toán bằng cách giả định rằng số
lượng trong một nhóm không bị ảnh hưởng bởi số lượng trong một nhóm khác.
Nói cách khác, chúng ta đang kiểm tra xem có sự liên quan giữa hai nhóm hay
không. Nếu P nhỏ hơn 5% thì có một mối liên hệ đáng kể giữa hai nhóm, nhưng
nếu P lớn hơn 5% thì hai nhóm là độc lập.
Ví dụ. Về phép kiểm tra liên kết chi bình phương
Trong trường hợp này, chúng ta sẽ xem xét một chiến dịch tiếp thị khác.
Các câu hỏi được đặt ra liệu thời gian trong ngày có ảnh hưởng đến phản hồi của
chiến dịch tiếp thị hay không. Như trước đây, chúng ta đo lường phản hồi (quan
sát được), nhưng đối với dự kiến, chúng ta phải tính toán dự kiến bằng cách sử
dụng các tổng (như trong hình 2.10).
Giải. Sử dụng Exel tính ta có kết quả thể hiện trong bảng sau:
Với giá trị chi-bình
phương thấp như vậy
(dưới 5%), chúng ta có
thể giả định rằng có
mối quan hệ chặt chẽ
giữa thời gian gửi
email và quảng cáo
trong ngày.
2.6 Tóm tắt
Mục tiêu chính của chương này là chứng minh rằng trong thống kê, thường
có nhiều cách để tiến hành phân tích mà chúng ta yêu cầu. Khi lần đầu tiên bắt đầu
thống kê, mọi người luôn đặt câu hỏi về giả thuyết không và tự hỏi tại sao chúng
ta lại cố gắng chứng minh điều ngược lại, vì vậy chúng ta đã chỉ đến 'giả thuyết
thay thế', ngược lại với giả thuyết không.
26
3. Khai phá dữ liệu trong Excel
Khai phá dữ liệu là một công cụ rất mạnh mẽ có thể xác định vị trí của thông
tin sâu sắc để cho phép những người ra quyết định xây dựng chiến lược. Có rất
nhiều chiến lược và công cụ khai phá dữ liệu có sẵn, nhưng đối với cuốn sách này,
chúng ta sẽ tập trung vào cây quyết định.
Mục này được xây dựng dựa trên các mục trước để cho phép chúng ta
chuyển sang cấp độ tiếp theo. Mục này sẽ bao gồm những nội dung sau:
• Hiểu tại sao chúng ta sử dụng cây quyết định • Cách sử dụng thống kê Chi-
square một cách hiệu quả và trực quan
• Tạo cây quyết định
• Cung cấp những phát hiện chính từ cây quyết định.
3.1 Cây quyết định
Cây quyết định hiển thị ánh xạ của các hành vi phức tạp thành một biểu đồ
đơn giản. Sử dụng kết hợp các công cụ thống kê và cách hiểu thông thường, các
quy tắc đơn giản có thể được tạo ra để cung cấp thông tin chi tiết chính. Chúng
chủ yếu được sử dụng để tạo các quy tắc cho kết quả nhị phân (lưỡng phân), ví dụ:
có, không.
3.1.1 Định nghĩa
Hình dưới đây chứa hình ảnh của một cây quyết định đơn giản. Ba mươi
người được khảo sát bên ngoài một cửa hàng DIY hỏi họ những yếu tố nào họ sẽ
cân nhắc để hoàn thành nhiệm vụ của mình trong ngày. Các kết quả đã được trình
bày trong một cây quyết định.
27
Sử dụng cây quyết định trong hình trên, những người quan tâm đến một
môn thể thao cụ thể không có khả năng tự làm. Đối với những người không nhận
ra có môn thể thao trên TV (không), thì thời tiết là một yếu tố chính. Cây quyết
định có thể tạo ra một câu chuyện dễ theo dõi và dễ hiểu. Các thuật ngữ chính
được sử dụng như sau:
 Biến phụ thuộc: biến đích, biến gốc.
 Biến giải thích / độc lập: các biến tạo ra quy tắc.
 Biến liên tục: một biến dựa trên số (ví dụ: tuổi / lương).
 Biến số: một biến dựa trên ký tự (ví dụ: vùng).
 Biến thứ tự: Một biến thứ tự tương tự như một biến phân loại. Sự khác
biệt giữa hai biến là có thứ tự rõ ràng của các biến.
 Bin (thùng): biến phân loại được chia thành gì (ví dụ: thể thao trên TV
được chia thành không, có (quan tâm), có (không quan tâm).
 Cắt tỉa: Đôi khi cây có thể chứa quá nhiều chi tiết. Vì vậy chúng tôi ‘Cắt
tỉa’ cây ở mức độ thích hợp cho phù hợp với thực tiễn.
3.1.2 Chúng ta quyết định nút như thế nào?
Như thường lệ, có nhiều phương pháp để thực hiện bất kỳ điều gì trong
thống kê, bao gồm cả cây quyết định. Trong mục này, chúng ta sẽ sử dụng phương
pháp CHAID. CHAID là viết tắt của Khi-square Automatic Interaction Detector
(hoặc Detection, tùy thuộc vào nguồn được trích).
Vì chúng ta đã có hiểu biết về khi bình phương, nên sử dụng phương pháp
khi bình phương để tạo ra cây quyết định. Thống kê khi bình phương cho phép
chúng ta khám phá các biến (dựa trên phân loại) cung cấp sự phân biệt rõ ràng
giữa các thành phần khác nhau của chúng (thùng). Thống kê khi bình phương được
sử dụng để điều tra xem liệu phân phối của các biến phân loại có khác nhau hay
không.
3.2 Chuyển một biến liên tục thành một biến phân loại
Việc chuyển đổi một biến số thành đặc tính rất đơn giản, chúng ta chỉ cần
tính các bin 'tốt nhất'. Nếu chúng ta sử dụng phỏng đoán, điều này có thể tạo ra
các bin không có 'mục tiêu', điều này sẽ không cho phép thực hiện thống kê khi-
bình phương. Trước tiên, hãy tải xuống tệp nhị phân sổ làm việc Excel. Sổ làm
việc này trình bày chi tiết doanh số bán một sản phẩm với các đặc điểm cơ bản của
28
khách hàng. Giai đoạn tiếp theo đòi hỏi việc phân đoạn các biến giải thích liên tục
thành các tỷ lệ có kích thước bằng nhau dựa trên biến mục tiêu (không phải tổng
số quan sát), như sẽ được minh họa trong ví dụ 1 sau:
Ví dụ 1. Sổ làm việc Excel, nhị phân, có một biến phản hồi nhị phân được
gọi là đã bán, giá trị này bằng 1 nếu một lần bán đã được thực hiện và bằng 0 nếu
không. Sổ làm việc này cũng chứa ba biến dự báo:
Thu nhập (liên tục);
Thế chấp% (% tiền lương được sử dụng để trả tiền thế chấp) (liên tục);
Tier (thứ hạng khách hàng) (phân loại / rời rạc).
Bậc thay đổi nhận các giá trị từ 1 đến 4. Các bậc có thứ hạng 1 có uy tín cao
nhất, trong khi những bậc có 4 có uy tín thấp nhất. Đầu tiên, chuyển đổi các biến
liên tục thành các biến phân loại, với số lượng mục tiêu bằng nhau trong mỗi bin
(phân đoạn). Điều này yêu cầu tạo một bảng tính mới với tất cả các cột, nhưng chỉ
khi cột đã bán = 1.
Sắp xếp bảng tính
Excel theo số
lượng đã bán (lớn
nhất đến nhỏ
nhất). Sao chép
và dán tất cả dữ
liệu mà đã bán =
1 vào một trang
tính mới.
Phải có 89 khách hàng mà cờ bán
hàng = 1. Giai đoạn tiếp theo yêu cầu
sản xuất 4 bin để thu nhập và thế
chấp. Vì chúng tôi muốn mỗi bin có
số lượng mục tiêu gần như nhau, hãy
đo các giá trị ở mỗi phần tư. Sắp xếp
trang tính mới này theo thu nhập. Tại
dòng 22, 44, 66 ghi lại các giá trị này.
29
 Ở dòng 22, thu nhập bằng 5200;
 Ở dòng 44, thu nhập bằng 6000;
 Tại dòng 66, thu nhập bằng 6800.
Không cần biết con số cuối cùng vì bất kỳ số nào trên 6800 sẽ đại diện cho
bin thứ tư và cuối cùng của chúng ta. Tiếp theo, sắp xếp trang tính mới này theo%
thế chấp. Tại dòng 22, 44, 66 ghi lại các giá trị này. Ở dòng 22,% thế chấp bằng
31,7. Ở dòng 44,% thế chấp bằng 34,9. Ở dòng 66,% thế chấp bằng 37,1. Không
cần biết con số cuối cùng vì bất kỳ số nào trên 37,1 sẽ đại diện cho bin thứ tư và
cuối cùng của chúng ta. Phần tiếp theo trình bày chi tiết về hai phương pháp tạo
cột mới với bin.
3.2.2 Phương pháp 1 tạo bins - sao chép và dán
Phương pháp đầu tiên là phương pháp đơn giản nhất nhưng có thể gây mệt
mỏi nếu chúng ta có dữ liệu với hơn 10000 hàng. Đầu tiên, hãy sắp xếp trang tính
Excel theo thu nhập và trong nhãn cột F nó là "nhóm thu nhập". Điền vào cột mới
này nếu thích hợp:
 5200 trở xuống;
 5201 đến 6000;
 6001 đến 6800 6801 trở lên.
Lặp lại cho một cột mới được gọi là nhóm thế chấp:
 31,7 trở xuống;
 31,8 đến 34,9;
 35,0 đến 37,1;
 37,2 trở lên.
Độ chính xác là chìa khóa khi phân loại các cột thu nhập và% thế chấp.
Hình sau: Tạo các bin mới bằng cách sử dụng sao chép và dán.
30
3.2.3 Phương pháp 2 tạo bin - Hàm if
Hàm If trong Excel: Trong Excel, chúng ta có thể sử dụng một hàm có tên
là ‘If’. Điều này cho phép tạo một giá trị trong một ô dựa trên một giá trị (số hoặc
ký tự) trong một ô khác.
= IF(logical_test value_if_true)
Logical_test: là bất kỳ giá trị hoặc biểu thức nào dẫn đến TRUE hoặc
FALSE. Ví dụ: nếu ô A2 = 3 là một biểu thức logic. Nếu ô A2 bằng 3, thì biểu
thức này là đúng, còn lại là sai.
Value_if_true: đây là giá trị chúng ta muốn hiển thị nếu nó là true. Ví dụ.
nếu ô A2 bằng 3, thì chúng ta có thể muốn hiển thị văn bản "A2 là 3".
Value_if_false: đây là giá trị chúng ta muốn hiển thị nếu nó là false. Ví dụ.
nếu ô A2 không bằng 3, thì chúng ta có thể muốn hiển thị văn bản "A2 không bằng
3".
Ví dụ. Sao chép ví dụ được hiển thị trong hình sau:
* ô công thức chỉ mang tính chất
tham khảo Trong ô B3, là công thức.
Phím tắt để dừng viết nhiều dòng công thức:
Thay vì viết ra công thức này nhiều lần,
chúng ta có thể sử dụng hàm 'drag'.
Như có thể thấy, ở góc dưới cùng bên phải
của ô, có một hình vuông.
= IF(A2 = 3,‘‘cell is 3’’,‘‘cell is not 3’’ )
31
a. Sử dụng chuột và nhấp chuột trái vào hình vuông này. Đừng nhấp chuột;
b. Kéo hình vuông này xuống dưới, để bạn bao gồm các ô từ B2 đến B10.
1) Nếu bạn bấm vào góc dưới cùng, ta sẽ thấy một thông báo ở cuối màn
hình Excel như hình trình bày ở trên.
a. Chức năng này có thể được sử dụng thay vì sao chép và dán, nhưng hãy
cẩn thận khi sử dụng các số, vì Excel có thể sử dụng quá trình đếm.
2) Bây giờ hãy bỏ nhấp chuột để xem các ô đã hoàn thành.
Hình dưới: Hàm nhấp và kéo trong Excel (3).
Nhấp vào bất kỳ ô nào, và chúng ta sẽ
nhận thấy rằng công thức đã được cập
nhật để phản ánh các ô có liên quan, …
như được minh họa trong hình 3.9.
32
Chức năng kéo này không chỉ giúp tiết kiệm thời gian quý giá mà còn có
thể ngăn lỗi xuất hiện khi viết công thức (mã) trong các ô khác nhau.
Quay lại binning các biến
Như chúng ta đã thấy, hàm 'If' rất mạnh, nhưng chúng ta phải tạo 4 bin,
không phải 2.
Các thùng cho nhóm thu nhập như sau:
5200 trở xuống;
5201 đến 6000;
6001 đến 6800;
6801 trở lên.
Các thùng cho nhóm thế chấp như sau:
31,7 trở xuống;
31,8 đến 34,9;
35,0 đến 37,1;
37,2 trở lên.
Công thức Excel được phân tích:
 IF(C2<=5200,"5200 and under",
Nếu thu nhập nhỏ hơn hoặc bằng 5200, thì hãy hiển thị "5200 trở
xuống’’;
 IF(C2<=6000, "5201 to 6000",
Giá trị cho dưới 5200 đã được tính trước đó;
Nếu thu nhập nhỏ hơn hoặc bằng 6000 thì hiển thị "5201 đến 6000".
Giá trị này tương đương với lớn hơn 5200 và nhỏ hơn hoặc bằng
6000.
 IF(C2<=6800,"6001 to 6800",
33
Giá trị cho dưới 6000 đã được tính trước đây;
Nếu thu nhập nhỏ hơn hoặc bằng 6800 thì hiển thị "6001 đến 6800".
Giá trị này tương đương với lớn hơn 6000 và nhỏ hơn hoặc bằng
6800.
 "6801 and above”
Các giá trị cho dưới 6800 trước đây là hoàn thành.
 Cuối cùng, nếu tất cả các giá trị true trước đó không được tìm thấy,
thì hãy hiển thị "6801 trở lên.
 Luôn lưu ý số lượng dấu ngoặc mở được sử dụng, vì dấu ngoặc mở
và dấu đóng cần cân bằng.
Excel đọc công thức từ trái sang phải, do đó chúng ta phải chắc chắn rằng
nó được viết theo đúng thứ tự. Nếu chúng ta bắt đầu các lệnh với 'C2 <= 6800',
sau đó tiếp tục với 5200 và 6000, công thức 'if' sẽ không thành công. Sử dụng
nhiều câu lệnh 'if' có thể khó hiểu và phải đếm số lượng dấu ngoặc được sử dụng,
nhưng sau khi hoàn thành, nó có thể làm cho việc gắn nhãn các ô trong Excel rất
nhanh chóng.
Công thức Excel được phân tích:
 IF(D2<=31.7,"31.7 and under",
Nếu phần trăm thế chấp bằng hoặc nhỏ hơn 31,7 thì hiển thị "31,7 trở
xuống’’.
 IF(D2<=34.9,"31.8 to 34.9",
Ngược lại nếu phần trăm thế chấp bằng hoặc nhỏ hơn 34,9 thì hiển
thị "31,8 đến 34,9".
Điều đó tương đương lớn hơn 31,7 và nhỏ hơn hoặc bằng 34,9.
 IF(D2<=37.1,"35.0 to 37.1",
Ngược lại, nếu phần trăm thế chấp bằng hoặc nhỏ hơn 37,1 thì hiển
thị "35,0 đến 37,1".
Đây tương đương với lớn hơn 31,7 và nhỏ hơn hoặc bằng 37,1.
 "37.2 and above"
34
Cuối cùng, nếu không tìm thấy tất cả các giá trị true trước đó, thì sẽ
hiển thị "37.2 trở lên.
Như trước đây, ngay sau khi hoàn thành công thức một lần
a. Nhấp vào góc dưới cùng bên phải của ô và kéo xuống hoặc
b. nhấp đúp chuột vào hình vuông này Hình 3.13 chứa một ảnh chụp nhanh
của trang tính Excel đã hoàn thành.
LƯU Ý: nếu lỗi được tạo ra trong công thức, thì lỗi này sẽ lặp lại trong tất
cả các ô khác. Luôn kiểm tra kỹ công việc của bạn, ví dụ: đảm bảo nó hiển thị 37,2
chứ không phải 3,72.
35
3.3 Tạo cây quyết định
Bây giờ chúng ta đã tạo một tập dữ liệu (bảng tính Excel) có các cột sau:
 id (id khách hàng)
 Đã bán (khách hàng đã mua sản phẩm);
 Thu nhập (thu nhập của khách hàng);
 Thế chấp% (phần trăm thu nhập của khách hàng được chi tiêu cho thế
chấp );
 Nhóm thu nhập bậc (phân cấp khách hàng) (nhóm biến thu nhập được
phân nhóm);
 Nhóm thế chấp (nhóm biến% thế chấp được nhóm lại).
Tập dữ liệu này có 298 quan sát (hàng) và 89 doanh số (mục tiêu).
Đối với nhánh đầu tiên, chúng tôi sẽ sử dụng thống kê khi-bình phương.
Như đã đề cập trước đây, khi-bình phương cho chúng ta biết xác suất của một sự
kiện xảy ra một cách tình cờ, sử dụng các giá trị được quan sát và mong đợi. Nếu
có giá trị khi-bình phương là 0,01, điều này cho chúng ta biết rằng các kết quả
quan sát có thể chỉ xảy ra tình cờ 1% số lần. Do đó thống kê càng thấp càng tốt.
Theo nguyên tắc cơ bản, chúng ta muốn thống kê chi bình phương nhỏ hơn 0,05
(5%).
3.3.1 Bảng tổng hợp
Bước tiếp theo của chúng ta là tính tổng số quan sát trong mỗi bin cho từng
biến bậc, nhóm thu nhập và nhóm thế chấp. Điều này có thể dễ dàng được tính
toán bằng cách sử dụng bảng tổng hợp trong Excel, nhưng bước đầu tiên thêm một
cột mới vào tập dữ liệu của chúng ta (trang tính Excel) được gọi là số. Cột mới
này sẽ chứa số 1 cho tất cả các quan sát (hàng).
36
1) đánh số 1 vào ô H2 và H3 (như hình trên).
a. đánh dấu cả hai ô bằng chuột.
2) Như trước đây, hãy nhấp đúp vào góc dưới cùng bên phải của các ô được
đánh dấu để tự động điền vào cột.
Lưu ý: nếu bạn chỉ nhập 1 vào chỉ một trong các ô và sau đó bấm đúp vào ô
đó, Excel sẽ cung cấp cho bạn số lượng tích lũy, ví dụ: 1, 2, 3, 4, 5… đi xuống
cuối dữ liệu, trong trường hợp này là dòng 299.
Hình 3.15: Hoàn thành cột mới trong Exel.
Với cột đã hoàn
thành, giai đoạn
tiếp theo liên
quan đến việc tạo
một bảng tổng
hợp.
37
1) Nhấp vào một ô duy
nhất trong tất cả dữ liệu.
a. không đánh dấu 2 hoặc nhiều
ô vì Excel sẽ chọn chỉ sử dụng
các ô được đánh dấu đó để tạo
bảng tổng hợp.
2) Nhấp vào tab CHÈN trên đầu
dải băng.
3) Nhấp vào Bảng tổng hợp
Excel sẽ tự động chọn dữ liệu ta
muốn.
1) Dữ liệu! $ A $ 1: $ H $ 299 -
Excel đã tự động hoàn thành việc
này cho bạn đã hoàn thành;
a. Dữ liệu là tên của trang tính;
b. $ A $ 1: $ H $ 299, điều này
cho Excel biết vị trí các ô chứa dữ
liệu.
2) Chọn Trang tính mới.
3) Nhấp vào OK.
Một sổ làm việc mới sẽ mở cho bạn, như được minh họa trong hình dưới:
38
Danh sách này liệt kê tất cả các cột có sẵn cho bảng tổng hợp;
Bước tiếp theo liên quan đến việc chọn các trường dữ liệu bắt buộc vào
bảng tổng hợp.
1) Nhấp vào Bậc (không bỏ nhấp) và
kéo đến hộp có tên ROWS. Bây giờ hãy bỏ
nhấp vào.
2) Các biến chúng tôi muốn tóm tắt
được kéo vào đây.
a. Nhấp vào Count (không bỏ nhấp)
và kéo đến hộp có tên là Giá trị. Bây giờ hãy bỏ nhấp vào.
b. Nhấp vào Sold (không bỏ nhấp) và kéo đến hộp có tên là Giá trị. Bây giờ
hãy bỏ nhấp vào.
Giai đoạn tiếp theo yêu cầu chúng tôi tính toán phần trăm doanh số, bằng
cách chèn một trường đã tính toán.
1) Đảm bảo rằng một ô
được đánh dấu trong bảng tổng hợp;
2) Nhấp vào tab ANALYZE;
3) Tiếp theo nhấp vào Fields, Items
& Sets;
4) Chọn trường được tính.
1) Viết trên Field1 với Perc_sale
2) Trong hộp Công thức, hãy tạo
phương trình cho phép chúng tôi
tính toán tỷ lệ phần trăm của một
người nào đó mua, Sold / Count;
a. Xóa số 0 trong hộp công thức
(giữ nguyên dấu =);
39
b. Trong hộp Trường, bấm đúp vào Sold;
c. Bây giờ gõ /
d. Nhấp đúp tiếp theo vào Count.
Hy vọng rằng công thức sẽ giống như được hiển thị trong hình sau:
Chọn OK.
40
Giai đoạn tiếp theo yêu cầu làm cho Bảng tổng hợp hiển thị hơn.
Kích chọn: Sum of count sau đó cọn cài đặt trường giá trị.
Thay đổi điều này để hiển thị toàn bộ như trong hình 3.26 dưới đây:
41
Lặp lại tương tự cho Sold, nhưng gọi cột
này là Total Sold.
Với ‘Sum of Perc_sale’, chúng
tôi muốn thay đổi tên của nó và
làm cho nó hiển thị phần trăm
(%). Sử dụng menu box ‘Value
Field Setting’ cho ‘Sum of
Perc_sale’.
1) Đổi tên % Sold;
2) Nhấp vào Number format.
42
1) Chọn Phần trăm;
2) Nhấp vào OK.
Sau đó nhấp vào OK
trên hộp: ‘Value Field
Settings’.
Chúng ta cần so sánh giá trị quan sát được với giá trị mong đợi. Nhìn chung,
có tỷ lệ bán hàng 29,87%, do đó, tính toán cho mỗi Cấp 29,87% tổng số khách
43
hàng trong mỗi ben (giá trị dự kiến). Điều này yêu cầu một trường được tính toán
mới có tên là ‘Expected sales’.
 Đảm bảo rằng một ô được đánh dấu trong bảng tổng hợp;
 Nhấp vào tab ANALYZE;
 Tiếp theo nhấp vào Fields, Items & Sets;
 Chọn Trường Tính toán.
1) Name: Expected sales;
2) Công thức: = count * 0.2987.
Excel không thích hai cột được gắn nhãn giống nhau và ta có thể nhận được
thông báo lỗi cho ‘Expected sales’, trong trường hợp này, chỉ cần đặt dấu cách
trước chữ "E" trong doanh số dự kiến.
44
Với các số liệu dự kiến và thực tế đã hoàn thành, chúng ta có thể tính toán
thống kê khi - square. Sao chép công thức như trong hình 3.34, với một bảng chi
tiết kết quả.
Đối với biến Tier,
chúng tôi nhận thấy
rằng giá trị khi-square
là 0,015386, 1,5386%
(đây là mức thấp).
Để tính toán khi-bình
phương cho nhóm
Thu nhập, chúng ta
thực hiện theo hướng
dẫn sau:
1) Nhấp vào Bậc trong Hộp
Hàng (không được bỏ bấm) a.
Kéo nó lên hộp trên cùng (bỏ
bấm);
2) Bấm vào Nhóm thu nhập
(không bỏ bấm);
a. Kéo nó vào hộp hàng (bỏ
bấm).
45
Đảm bảo rằng các ô chính xác đang được sử dụng để tính khi-square thống
kê Đối với nhóm thu nhập, giá trị khi-bình phương là 0,583968, hay 58,397% (mức
này rất cao).
Lặp lại tương tự đối với nhóm thế chấp.
1) Nhấp vào Bậc
trong Hộp Hàng
(không được bỏ
nhấp (click));
a. Kéo nó lên hộp
trên cùng (bỏ
kích).
2) Bấm vào Nhóm
thu nhập (không
bỏ kích).
a. Kéo nó vào hộp Hàng (bỏ kích).
46
Đảm bảo rằng các ô chính xác đang được sử dụng để tính toán thống kê Khi
bình phương.
Đối với nhóm thu nhập, giá trị Khi bình phương là 0,583968 hoặc 58,397%
(tỷ lệ này rất cao).
Lặp lại tương tự cho nhóm thế chấp (mortagage).
Đối với nhóm thế chấp, giá trị Khi-square là 0,23237, hay 23,237% (đây là
mức cao). Kết quả khi-bình phương được hiển thị trong bảng 3.1.
47
Dựa trên kết quả Khi bình phương, nhánh
đầu tiên sẽ được tạo bằng cách sử dụng biến
Tier, vì nó có thống kê khi bình phương thấp
nhất và đáp ứng quy tắc dưới 5%. Nếu
không có giá trị nào thỏa mãn quy tắc 5%,
chúng ta sẽ xem xét liệu có nên khôn ngoan khi xây dựng cây quyết định hay
không.
3.3.2 Thiết kế cây quyết định trong Excel
Nhánh đầu tiên của chúng ta sẽ chứa các hình sau:
Tổng số và tổng
số hàng đã bán được
thu thập từ bảng Tổng
hợp. "Not Sold" được
tính như sau:
Not Sold = Total – Total Sold.
Sử dụng nút Border, chúng ta có thể đơn giản tạo cây quyết định, dựa trên
biến mạnh nhất (bậc) Hình 3.38, mặc dù sâu sắc nhưng có thể coi là khá nhàm
chán. Thêm một số màu vào cây, với định dạng có điều kiện, sẽ tạo ra một cây tạo
hình mắt đẹp hơn.
48
1) Sử dụng CTRL
và nhấp vào các ô,
có thể đánh dấu tất
cả các ô mà ta
muốn thêm định
dạng có điều kiện
vào.
a. Trong trường hợp này, các ô% đã bán đã được đánh dấu.
2) Chọn Thang màu và biểu đồ thứ hai ở hàng trên cùng.
3) Tô màu nhẹ cho các ô này
a. Các nhãn đã bán và chưa bán có màu xanh lam nhạt.
Quay lại câu hỏi ban đầu, có dân số nào mà chúng ta có thể nhắm mục tiêu
chi phí hiệu quả không? Sử dụng cây quyết định, chúng ta nên nhắm mục tiêu
những khách hàng đó ở cấp 1 và 2. Cấp 1 có nhiều hơn hai lần rưỡi để mua so với
Cấp 4! Công việc này có thể được coi là rộng rãi, nhưng cần phải phát hiện ra biến
số phân biệt đối xử với một sản phẩm đang được bán hoặc không phải là sản phẩm
mạnh nhất. Điều này sẽ cho phép chúng ta tối đa hóa lợi nhuận của mình bằng
cách nhắm mục tiêu các khách hàng hiệu quả về chi phí.
3.4. Tóm tắt
Nội dung đã trình bày cho chúng ta thấy Excel có thể phân tích mạnh mẽ.
Ngoài ra, nó là một công cụ tuyệt vời để giải thích các số liệu thống kê, một cách
đơn giản. Excel có thể tạo ra các biểu đồ sâu sắc và là một trong những công cụ
phân tích phổ biến nhất ở nơi làm việc. Đôi khi chúng ta có thể gặp các vấn đề
phức tạp cần giải quyết mà không nằm ngoài việc gửi Excel.
49
Chương 2. Xử lý dữ liệu bằng Python
1. Giới thiệu về Python
Python là một công cụ phân tích dữ liệu mã nguồn mở và miễn phí cho phép
làm việc các tập dữ liệu lớn và tiến hành các phân tích phức tạp. Python là một
ngôn ngữ kịch bản, có nghĩa là bạn phải viết mã (mà chúng tôi đã giới thiệu một
chút trong Excel với câu lệnh ‘IF’). Mục này bao gồm những điều cơ bản về thống
kê trong Python), để loại bỏ bất kỳ giả định nào về các khả năng trước đó Python
không có tất cả các công cụ cần khi cài đặt ban đầu. Do đó khi làm việc với Python,
chúng ta sẽ không tải xuống các công cụ này (gói / thư viện).
Các gói là tập hợp các hàm Python, có thể được sử dụng sau khi cài đặt.
Mục đích của chương này là:
 Hiểu cách sử dụng các kiểu dữ liệu khác nhau:
Danh sách, mảng, khung dữ liệu.
 Tính toán thống kê đơn giản (trung bình, chế độ, chi-square, v.v.)
 Tạo đồ thị cơ bản.
1.1 Spyder
Với nhiều lời khuyên và video trên internet hướng dẫn chi tiết cách tải
xuống và cài đặt Python, cuốn sách này sẽ bắt đầu ở màn hình mở cho Spyder. Tôi
thích máy chơi game console, trong khi người khác thích máy tính xách tay Jupyter
hơn. Mã sẽ hoạt động trong bất kỳ môi trường nào.
Cuốn sách này lặp lại các phần nhất định từ mục 1 đến mục 3 như một cách
để chứng minh cách lập trình bằng Python. Điều này cũng sẽ cung cấp một nền
tảng về cách chuyển kiến thức Excel sang Python và để kiểm tra kết quả của chúng
50
ta. Không giống như Excel, nơi có thể dễ dàng quan sát tiến trình, Python không
hiển thị kết quả ngay khi viết mã. Thay vì giải thích các phân đoạn khác nhau trong
Python, cuốn sách này sẽ hướng dẫn sử dụng các ví dụ. Qua nhiều năm kinh
nghiệm, chúng tôi phát hiện ra rằng ‘làm điều đó’ có hiệu quả hơn những lời giới
thiệu dài dòng.
Do đó, mục này là một cách tiếp cận áp dụng để học những điều cơ bản
trong Python. Hai thư viện quan trọng nhất để sử dụng trong cuốn sách này là:
Chương trình 4-1: Thư viện ban đầu
import numpy as np
import pandas as pd
Là một cách nhanh chóng để chạy mã, hãy dùng chuột đánh dấu mã, sau đó
nhấn Shift và Enter.
Điều này sẽ
chạy mã của ta. Chạy
hai thư viện này sẽ
được giới thiệu sau
dưới đây.
Bỏ qua các dấu
chấm than trong hình
tam giác, điều này có nghĩa chúng ta chưa viết bất kỳ mã nào sử dụng các thư viện
này.
1.2 Excel sang Python
Ví dụ đầu tiên của chúng ta là sao chép ‘Ví dụ 1.2.1’, tính giá trị trung bình,
trung vị và range, nhưng bằng Python.
1.2.1 Ví dụ về giá trị trung bình, trung vị và range
Sử dụng Python để tính giá trị trung bình (trung bình), trung vị, mode và
range cho dữ liệu: 13, 18, 13, 14, 13, 16, 14, 21, 13.
51
Để hoàn thành nhiệm vụ này, trước tiên chúng ta cần tạo một danh sách.
Chương trình 4-2: Tạo danh sách các số.
Nếu ta chạy mã trên (shift và enter), thì sẽ tạo danh sách số, với một biến
được gọi là a.
Hình 4.3 đến 4.5 hiển thị ảnh chụp nhanh của 3 màn hình khác nhau trong
Spyder.
Mã đã được chạy.
Nhấp vào biến để xem kết quả.
Hiển thị danh sách của chúng tôi, với thông tin.
52
Chương trình 4-3. Tính toán giá trị trung bình
np.mean(a)
np, biểu thị rằng chúng ta cần sử dụng thư viện numpy, để tính giá trị trung
bình.
Phần thứ hai, mean (a), nói với Python rằng chúng ta muốn giá trị trung bình
của biến.
a. Chúng ta phải sử dụng các dấu khi dùng lệnh mean(a).
Thông báo lỗi không có gì đáng sợ và đôi khi có thể hữu ích. Nếu mọi người
đều hoàn hảo về Python, thì sẽ không cần thông báo lỗi. Trong hình 4.6, một lỗi
đã được tạo ra làm ví dụ. Sửa mã và sử dụng dấu ngoặc.
53
Sử dụng phần bảng điều khiển, chúng ta có thể xem mã đã được chạy, cùng
với kết quả, 15.0, khớp với kết quả Excel của chúng ta. Trong Excel, ta đã sử dụng
lệnh trung bình, giống như trong Python. Trung vị sẽ được tính tiếp theo (vì numpy
không tính chế độ). Có thể thấy trong chương trình 4-4, mã rất giống với việc tính
giá trị trung bình.
Chương trình 4-4: Tính giá trị trung bình.
np.mean(a)
Trung vị được hiển thị là 14. Cuối cùng, chúng ta sẽ tính toán range. Trong
phần 1.3, chúng ta đã trình bày lệnh Excel dưới dạng:
= Max (range) – Min (range).
Chúng ta sửa đổi điều này một chút và viết nó trong Chương trình Python
4-5:
Tính range trong Python: np.max(a) – np.min(a).
Một lần nữa, đánh dấu mã và chạy nó.
54
Giai đoạn tiếp theo liên quan đến việc tính toán mode, độ lệch chuẩn và
phương sai. Điều này liên quan đến việc sử dụng một thư viện mới, số liệu thống
kê.
Chương trình 4-6: Tính toán thêm các số liệu thống kê.
55
Bây giờ chúng ta đã tạo lại thống kê Excel của mình bằng Python. Lựa chọn
sử dụng Python thay vì Excel cho các thống kê cơ bản chủ yếu mang tính cá nhân,
cuốn sách này được thiết kế chỉ để cung cấp nền tảng của thống kê ứng dụng.
56
2. Tương quan
Nhiệm vụ tiếp theo là tạo lại các thống kê và đồ thị tương quan trong Python
từ hình 1.11. (Điều này sử dụng chương trình 2 tương quan) Hình 4.12: Bản sao
của hình 1.11.
Điều này sẽ đòi hỏi:
 Tạo 4 danh sách mới;
 Thực hiện các bài kiểm tra
tương quan;
 Tạo ra một biểu đồ.
Bước đầu tiên của chúng tôi yêu cầu tạo 4 danh sách mới. Để bắt chước ví
dụ Excel, chúng sẽ được gọi là data1, data2, data3 và data4.
Tất cả bốn dòng có thể được chạy cùng một lúc, bằng cách đánh dấu chúng
và nhấn shift và enter. Lệnh để tiến hành kiểm tra tương quan là pearsonr () (lệnh
này sử dụng Pearson-test). Điều này tạo ra kết quả có hai giá trị:
- Hệ số tương quan;
- Giá trị p.
Giá trị p được sử dụng khi ta kiểm tra một giả thuyết. Giá trị p là một thước
đo quan trọng, đã được thảo luận ờ các mục trước.
So sánh mã Excel của chúng tôi với mã Python, chúng tôi nhận thấy một số
điểm tương đương.
57
A2: A11 giống với data1, B2: B11 giống với data2, …
Kết quả được tạo ra bằng Python cũng giống như kết quả trong Excel, với
cảnh báo cho data1 và data4, như mong đợi.
Phần tiếp theo của bài tập này yêu cầu
xây dựng một biểu đồ. Điều này đòi
hỏi phải viết mã thêm, chúng ta sẽ
tiến bộ từng bước. Đầu tiên, chúng ta
cần một thư viện mới, xây dựng
Chương trình 4-9: nhập thư viện vẽ đồ thị.
58
plt.plot - lệnh tạo ra biểu đồ của
chúng ta;
(data1, data2, 'blue'): Data1 – trục
x, Data2 - trục y;
‘blue’ - nói với python rằng đường
màu xanh lam;
Plt.show () - lệnh yêu cầu Python
vẽ biểu đồ.
Để bổ sung thêm dữ liệu
vào cùng một biểu đồ, hãy chuyển
tiếp Chương trình 4-11: Vẽ tất cả
các đường.
59
Biểu đồ tương tự như biểu đồ đã hoàn thành trong Excel (không có tiêu đề).
Python có khả năng tạo ra nhiều loại đồ thị tuyệt vời.
3. Hồi quy tuyến tính đơn giản
Ví dụ 1.5.1. đã giới thiệu hồi quy tuyến tính đơn giản, điều này sẽ được tạo
lại bằng Python.
3.1. Ví dụ về hồi quy tuyến tính đơn giản
Chúng ta muốn kiểm tra xem có mối quan hệ giữa độ dày của miếng bọt
biển và độ thấm hút chất lỏng của nó hay không. Chúng tôi đã thiết kế một thí
nghiệm với các mức độ dày khác nhau của bọt biển, với lượng chất lỏng được hấp
thụ. Kết quả được ghi trong bảng 4.3.
Bảng 4.3: Dữ liệu hồi quy tuyến tính đơn giản.
Trong Python, các bước sau sẽ được tiến hành: Tạo mảng, trong cuốn sách
này, chúng tôi sẽ định nghĩa mảng là một biến có thể lưu trữ danh sách các giá trị.
Tạo hồi quy tuyến tính đơn giản; Tạo đồ thị có trục và tiêu đề được gắn nhãn
Chương trình 4-12 dưới đây: Tạo mảng của chúng ta.
np.array, nói với Python rằng chúng ta muốn tạo mảng bằng cách sử dụng
các số liệu bên trong ([…]).
Bây giờ, chúng ta có hai mảng: đầu vào x và đầu ra y. Để hồi quy hoạt động
trong Python, chúng ta cần sửa đổi x thành hai chiều, một cột, nhưng nhiều hàng.
Đó là lý do tại sao chúng ta cần định hình lại lệnh ((- 1,1)). Mảng cho phép chúng
ta thao tác dữ liệu dễ dàng hơn.
60
Chương trình 4-13 dưới: Mã hồi quy tuyến tính đơn giản của chúng ta.
1) Nhập thư viện mới;
2) Mã hồi quy của chúng ta;
3) Tạo đầu ra của chúng ta cho mô hình –xem hình 4.16.
Giai đoạn tiếp theo yêu cầu chúng ta tạo ra cốt. Chương trình 4-14: Vẽ mã
mô hình hồi quy tuyến tính đơn giản.
61
1) Chúng ta đã tạo một mảng dữ liệu mới dựa trên các hệ số của mô hình.
Điều này đã được thực hiện để chúng ta có thể vẽ biểu đồ giá trị dự đoán của mình
so với giá trị thực của chúng (đường xu hướng).
2) Mã của chúng ta.
Nhiều mã đã được thêm vào từ các ví dụ trước
a. plt.title (‘…’) - đặt tiêu đề biểu đồ;
b. plt.xlabel (‘…’) – gắn nhãn cho trục x;
c. plt.ylable (‘…’) - gắn nhãn trục y.
3.2. Bài kiểm tra t
Phần tiếp theo chúng ta giải bài tập kiểm tra t từ ví dụ 2.1.
Trong ví dụ này, chúng ta muốn kiểm tra hiệu quả của một loại thuốc mới.
Hỏi một số học sinh về tình trạng sức khỏe của họ (điểm 0 đến 20). Sau đó, không
nói với họ, bắt đầu cho họ dùng loại thuốc mới. Sau một tuần, hỏi những người
tương tự về tình trạng sức khỏe của họ.
Kết quả được ghi trong bảng 4.4.
1) Tính giá trị trung bình & độ lệch chuẩn;
2) Loại thuốc đó và sức khỏe học sinh, chúng có tương quan với nhau
không?
62
3) Tính toán giá trị t-test để theo dõi xem có sự khác biệt về sức khỏe của
học sinh hay không.
Ghi chú rất hữu ích khi viết mã:
- Chúng cung cấp cho một bản tóm tắt nhanh chóng về những gì mã thực
thi mà ta không cần phải đọc qua các dòng mã;
- Cho phép đồng nghiệp hiểu công việc của chúng ta.
Hình 4.40 hiển thị các giai đoạn cần thiết cho bài tập này trong R.
Để tiến hành kiểm định t, các bước sau sẽ được yêu cầu:
- Tạo mảng với các giá trị trước khi tính;
- Tính giá trị trung bình và độ lệch chuẩn:
+ Tính toán thống kê tương quan;
+ Tính toán thống kê kiểm định t bằng một lệnh mới.
- Tạo dữ liệu;
- Tiến hành thống kê theo yêu cầu.
63
Chương trình 4 – 16. T test thống kê
stats.ttest_ind(- lệnh của chúng ta để Python tiến hành kiểm tra trước khi t-
test pre, post, - dữ liệu equal_var = False) – được đặt thành false, không giả định
phương sai tổng thể bằng nhau.
Ttest_indResult(statistic = -2.9139712, pvalue = 0.0108723).
Phép thử t so sánh hai giá trị trung bình và thông báo cho ta nếu chúng khác
nhau. Phép thử t cho biết các biến có ngẫu nhiên hay không.
+ T = -2,91397.
+ Giá trị P (đây là giá trị được tính trong Excel).
Thông báo về xác suất liệu các kết quả từ mẫu có ngẫu nhiên hay không.
Giá trị P = 0,05 cho biết rằng có 5% khả năng kết quả xảy ra một cách ngẫu nhiên.
Giá trị p càng thấp thì kết quả càng tốt. Trong trường hợp này, p = 0,108 có nghĩa
là kết quả có 1,08% khả năng xảy ra ngẫu nhiên.
Python sử dụng một kịch bản thử nghiệm t khác với Excel, do đó sự khác
biệt về số liệu, nhưng kết quả là tương tự.
4. Khi-square
Bài tập tiếp theo xây dựng dựa trên các ví dụ trước, cũng như giới thiệu các
lệnh mới và cấu trúc dữ liệu mới (chương trình 5 khi-square).
Sau đây giải quyết ví dụ 2.4.1.
64
4.1. Ví dụ về khi-square
Chúng ta cùng đi dạo trong một khu rừng xinh xắn và nhận xét về màu sắc
của những quả táo. Chúng tôi dự kiến sẽ thấy ¾ táo đỏ và ¼ táo xanh. Sau khi đếm
số táo trong rừng, kết quả đã được ghi lại ở bảng dưới đây:
Công thức của Exel:
= CHITEST(observed
range, expected ranger).
Bước đầu tiên của chúng ta là tạo mảng:
Chương trình 4-18.
Tạo một khung dữ liệu chứa hai cột và hai hàng:
+ Khi_data - tên của khung dữ liệu;
+ pd. quan sát;
+ 'observed' - tạo một cột được gọi là observed:
+ expected - chứa dữ liệu trong mảng expected.
Giai đoạn cuối cùng của
chúng ta bao gồm các bước
sau:
Kích hoạt thư viện;
Tiến hành kiểm định khi-
square.
65
stats.chi2_contingency – lệnh sử dụng;
(khi_data) – Dữ liệu đã cho của chúng ta.
Từ kết quả ban đầu, kết quả có thể khá khó hiểu:
+ 0,00818 - đây là giá trị chi bình phương của chúng ta;
+ 0,9279 – đây là giá trị p của chúng ta;
+ 1 - đây là bậc tự do.
Bậc tự do được tính bằng cách sử dụng số cột - 1 (2-1).
+ Phần cuối là kết quả mong đợi.
Python có một cách dễ dàng để trình bày kết quả:
Phần đầu tiên của mã chi2_stat, p_val, dof, ex, yêu cầu Python tạo 4 đối
tượng khác nhau, mỗi đối tượng chứa các giá trị. Do đó, để có được thống kê khi
bình phương thực hiện như sau:
Điều này tạo ra p_value của chúng ta là 0,9279, giống như kết quả của
Excel. Khi bạn bắt đầu lập trình bằng Python, chắc chắn sẽ tìm thấy nhiều cách để
thực hiện bất kỳ tác vụ nào. Sự lựa chọn nên là của chúng ta, miễn là kết quả tạo
ra là chính xác.
4.2. Tóm tắt
Mục đích chính của mục này là bắt đầu bằng Python, không cần nhiều lý
thuyết. Nó chứng tỏ rằng để sử dụng Python một cách thông minh, chúng ta phải
cài đặt các gói và thư viện. Python là một ngôn ngữ lập trình, đó là lý do tại sao
66
chúng ta sử dụng Excel để giới thiệu một số mã hóa cơ bản bằng cách sử dụng các
lệnh và câu lệnh ‘if’.
Vì vậy bước chuyển sang Python sẽ không quá lớn. Không ai trở thành bậc
thầy của một ngôn ngữ lập trình trong một sớm một chiều, có thể mất vài tháng /
năm và như thường lệ, sự kiên nhẫn và ứng dụng là chìa khóa. Điều này không có
nghĩa là chúng ta không nên sử dụng Python, chỉ cần bạn kiên nhẫn khi học.
67
5. Dữ liệu cho Python và thao tác dữ liệu
Bất kể bạn sử dụng ngôn ngữ phân tích nào, dữ liệu là khía cạnh quan trọng
nhất của bất kỳ các phân tích. Nếu dữ liệu không tốt, thì bất kỳ phân tích nào được
tạo ra sẽ không có giá trị. Một trong những câu nói phổ biến nhất trong thế giới
phân tích là:
Rubbish in = Rubbish out
(Có nghĩa là: Dữ liệu vào là rác thì thông tin ra là rác, không có giá trị).
Khi mọi người tập trung vào kỹ thuật hơn là dữ liệu, họ sẽ tạo ra những kết
quả không thực tế với những kết luận khó hiểu. Hiểu dữ liệu và cách dữ liệu sẽ
hoạt động là chìa khóa trong phân tích. Điều này sẽ trở nên rõ ràng hơn khi chúng
ta bắt đầu thao tác với dữ liệu.
Mục này nghiên cứu sâu hơn về dữ liệu và cấu trúc dữ liệu.
5.1 Các kiểu dữ liệu cơ bản trong Python
Các định dạng cơ bản của Python:
Boolean:
True, False
Numeric
Integer (ví dụ: 1, 2);
Float (ví dụ: 5.6);
Complex (ví dụ: 6 - 2i).
String
Ví dụ: "BOB", "fun"
Binary
Ví dụ: 0, 1.
Trong cuốn sách này, chúng ta sẽ chủ yếu tập trung vào các kiểu dữ liệu số
nguyên, số và chuỗi (ký tự). Python cũng có nhiều cấu trúc dữ liệu, nhưng cuốn
sách này sẽ tập trung vào ba cấu trúc sau:
+ List
+ Array
68
+ Data frame.
5.1. Dữ liệu cho mục 5
Có thể làm sạch và sửa đổi dữ liệu là chìa khóa để trở thành một nhà phân
tích giỏi. Như bạn có thể đã khám phá ra với cuốn sách này, một cách tiếp cận
thực tế hơn là lý thuyết được sử dụng. Đối với chương này, cần có tệp CSV có tên
là 'mẫu'. Tệp này nêu chi tiết về khả năng khách hàng không trả được nợ đối với
một sản phẩm tài chính. Vui lòng nhập nó, thông qua Python nhập dữ liệu hoặc tự
viết tập lệnh, để chúng ta ‘làm sạch’.
Chương trình 5-1: Nhập tệp CSV
Khi chúng ta nhập tệp CSV này, nó sẽ tạo ra một khung dữ liệu, được gọi
là mẫu.
+ sample=, khung dữ liệu tạo ra;
+ pd.read_csv (- lệnh đọc CSV file);
+ "C:/temp/sample.csv" – nơi tệp được lưu trữ, được nhập vào Python.
Tất cả công việc của chúng ta trong chương này sẽ sử dụng khung dữ liệu
này. Khung dữ liệu này có 13508 hàng và 16 cột. Các cột được mô tả trong bảng
5.1.
69
Nhiệm vụ đầu tiên của chúng ta là xem xét 20 hàng trên cùng. Để thực hiện
việc này, chúng ta sẽ tạo một khung dữ liệu mới có tên là top20, chứa 20 hàng đầu
tiên của khung dữ liệu, mẫu.
+ top20- tên của khung dữ liệu mới;
+ sample – tên của khung dữ liệu của chúng ta;
+ head(20) – head là lệnh cho Python biết rằng chúng ta muốn xem số hàng
trên cùng. Con số 20, nói với Python rằng chúng ta muốn 20 hàng trên cùng.
Sau đó, chỉ cần nhấp đúp vào khung dữ liệu mới này (trong quá trình khám
phá biến). Nếu sử dụng Jupyter, thì chúng ta có thể viết top20.
Nhấp đúp vào đây sẽ mở ra khung dữ liệu mới của chúng ta.
70
Hình sau là khung dữ liệu của top20.
+ Điều đầu tiên cần chú ý là cột chỉ mục bắt đầu từ số 0.
+ Thứ hai, 2 cột đã có giá trị bị thiếu được thay đổi từ trống (thiếu) thành
nan(CCJ_governmet và CCJ_private).
Python ghi đè các giá trị bị thiếu bằng nan. Xử lý các giá trị bị thiếu được
đề cập trong phần tiếp theo. Để đóng cửa sổ này, chúng ta chỉ cần nhấp vào dấu
‘x’ ở góc bên phải của khung dữ liệu.
Giai đoạn tiếp theo liên quan đến việc lấy dữ liệu về dữ liệu (siêu dữ liệu).
Để có được thông tin này, chúng ta sử dụng:
Chương trình 5-3: Siêu dữ liệu mẫu
Siêu dữ liệu liên quan đến dữ liệu về dữ liệu, trong Python, chúng ta sử dụng
.info (), trong đó tên khung dữ liệu đứng trước tên này. Cụ thể:
71
Từ lệnh info (), chúng ta có thể thấy rằng mẫu khung dữ liệu có:
+ 13508 obs (hàng);
+ 16 biến (cột);
+ Tên của tất cả các biến (phân biệt chữ hoa chữ thường);
+ Các biến là số nguyên (int64) hoặc number (float64).
Điều này đã cho chúng ta hiểu rõ hơn về dữ liệu mà lệnh head () không thể
truyền tải.
5.3 Thao tác dữ liệu
Có thể sửa đổi dữ liệu và chỉ chọn các giá trị cụ thể tạo thành một cột là kỹ
năng quan trọng đối với bất kỳ nhà phân tích / nhà khoa học quyết định nào.
5.3.1. Equal to
Nếu chúng ta muốn tạo một khung dữ liệu mới chỉ chứa những khách hàng
đã phá sản (target = 1), thì chúng ta sẽ viết một chương trình nhỏ. Trong Python,
nếu muốn một biến có giá trị bằng nhau, thì chúng ta sẽ sử dụng hai dấu bằng ‘==’.
Chương trình 5-4: Equal to
Mã đã được chia nhỏ như sau:
+ targ1 - tên của khung dữ liệu mới được tạo;
+ mẫu - tên của khung dữ liệu mà chúng ta sẽ sử dụng;
+ [sample $ target - thông báo cho Python biết khung dữ liệu và biến chúng
ta muốn sử dụng;
+ == 1 - như đã đề cập trước đây, trong Python, chúng ta sẽ sử dụng '==' có
nghĩa là bằng;
+ ] - chỉ định phần cuối của lệnh.
Trong Python, tên cột và khung dữ liệu phân biệt chữ hoa chữ thường, do
đó 'Target' sẽ không hoạt động, ngược lại ' target 'không. Lệnh info () đã được đưa
vào để hoàn thiện, nhưng chúng ta không cần phải chạy nó. Nếu chúng ta nhìn vào
72
cửa sổ trên cùng bên phải, chúng ta sẽ thấy rằng khung dữ liệu targ1 có 1121 quan
sát (hình 5.5).
Nếu bạn nhấp vào từ ‘targ1’, thì trong Python, điều này sẽ hiển thị khung
dữ liệu (hình 5.5).
Hình 5.5: Sử dụng ngăn trình khám phá biến.
5.3.2 Các biểu thức khác
Cho đến nay chúng ta đã thấy lệnh ‘==’, nhưng còn có các lệnh khác:
Bảng 5.2: Các lệnh khác
73
Hình 5.6: Kết quả các biểu thức cơ bản
Xin lưu ý rằng các kết quả không theo thứ tự đã tạo mà theo thứ tự bảng
chữ cái, trong đó các ký tự viết hoa đứng trước các ký tự viết thường. Thông
thường, thao tác dữ liệu bằng cách sử dụng hai hoặc nhiều biến, điều này dẫn
chúng ta đến các lệnh ‘và’ và ‘hoặc’. Sử dụng khung dữ liệu 'mẫu', chúng ta sẽ
tạo một khung dữ liệu mới chỉ chứa những khách hàng có mức lương trên 2000 và
tiết kiệm dưới 100. Trong trường hợp này, chúng ta sẽ sử dụng '&' và sử dụng mỗi
lệnh có dấu ngoặc , như hình dưới đây:
Chương trình 5-6: Lệnh AND Nếu chúng ta xem xét mức lương > 3000
hoặc tiết kiệm > 500 thì chúng ta sẽ sử dụng ‘|’.
74
Chương trình 5-7: Lệnh OR
Như chúng ta có thể thấy trong hình 5.10, các khung dữ liệu đã được tạo,
nhưng làm thế nào chúng ta có thể kiểm tra xem chúng có đúng không? Chúng ta
có thể kiểm tra nhanh ‘eyeball’ bằng cách sử dụng head () hoặc tiến hành một số
thống kê đơn giản như trong bảng 5.3.
Lưu ý. Khung dữ liệu và tên cột có phân biệt chữ hoa chữ thường, vì vậy
nếu đã sử dụng chữ in hoa trong mã hóa của mình (ví dụ: Save500), hãy nhớ liên
tục sử dụng chúng.
Chúng ta đã mở rộng công việc của mình từ mục 4 sang tính toán các số
liệu thống kê đơn giản bằng cách sử dụng khung dữ liệu. Miễn là khung dữ liệu
và biến (phân tách bằng dấu ‘. ') được viết đúng, thì nó sẽ đơn giản.
5.3.3 Bài tập 5.1: các lệnh cơ bản
Sử dụng khung dữ liệu ' sample' hoàn thành các hoạt động sau:
1) Tạo khung dữ liệu mới có tên là activ1, sử dụng dữ liệu từ mẫu trong đó
biến đích bằng 0.
2) Tạo khung dữ liệu mới được gọi là activ2, sử dụng dữ liệu từ mẫu có mức
lương lớn hơn 5000.
3) Tạo khung dữ liệu mới có tên activ3 bằng cách sử dụng dữ liệu từ mẫu
có mức lương lớn hơn hoặc bằng 10000.
75
4) Tạo khung dữ liệu mới có tên activ4, sử dụng dữ liệu từ mẫu trong đó
tiền lương nhỏ hơn hoặc bằng 10000 và mục tiêu không bằng 0.
5.3.4. Giải bài tập 5.1.
5.3.5. Các biến đặc trưng
Cho đến nay chúng ta mới chỉ xem xét các giá trị số, nhưng dữ liệu thường
đến ở dạng hỗn hợp giữa các giá trị đặc trưng và số. Giai đoạn đầu tiên là tạo một
khung dữ liệu với các giá trị đặc trưng:
Chương trình 5-9: Khung dữ liệu ký tự
Ở trên tạo một mảng có tên là ‘boom’, sau đó được chuyển đổi thành một
khung dữ liệu có tên là ‘bosh’ bằng cách sử dụng lệnh ‘pd.DataFrame’. Để lọc dữ
liệu theo một biến đặc trưng rất giống với phiên bản số như trong chương trình
sau:
76
Chương trình 5-10: Thao tác dữ liệu biến ký tự
1) char1 = bosh [bosh.boom == "EXAMPLE"]:
a. Chúng ta có thể sử dụng dấu ngoặc kép hoặc đơn, nhưng bạn phải nhớ sử
dụng chúng và không trộn lẫn chúng, v.d. “EXAMPLE’ sẽ không hoạt động.
2) Tương tự như số 1, nhưng sử dụng số khác.
3) Một lần nữa, như được hiển thị trước đó với phiên bản số, nhưng các từ
được bao quanh bởi dấu ngoặc kép.
4) Nhiều hoặc câu lệnh:
a. Điều này chứng tỏ rằng chúng ta có thể sử dụng nhiều câu lệnh ‘or’.
5) Điều này sử dụng một cách rút gọn từ việc viết ra cùng một biến nhiều
lần. Trong trường hợp này, chúng ta có thể sử dụng lệnh
‘isin’, lệnh này cung cấp cho chúng ta kết quả tương tự
như trong 5.
Hình 5.8 dưới đây, trình bày kết quả sử dụng các
biến đặc trưng:
Câu lệnh isin có thể được sử dụng cho các giá trị
số cũng như đặc trưng. Khi xử lý các biến đặc trưng, phải
nhớ rằng nó có phân biệt chữ hoa chữ thường. Chẳng
hạn: từ ví dụ trước, char1 = bosh [bosh.boom ==
"EXAMpLE"] sẽ không hoạt động.
77
5.4 Thao tác với khung dữ liệu trong Python
5.4.1 Cập nhật giá trị null
Khi làm việc với dữ liệu, nó hiếm khi sẵn sàng để sử dụng (sạch). Khi đó,
chúng ta sẽ làm sạch dữ liệu để làm cho nó có thể sử dụng được. Từ hình 5.2, quan
sát thấy rằng có một số giá trị bị thiếu cho CCJ_go Government và CCJ_private.
(NA). Ba nguyên nhân phổ biến của việc thiếu giá trị là:
Không xác định;
Tệp dữ liệu được nhập không chính xác;
Tỷ lệ đối sánh không thành công.
Các biến CCJ_go Government và CCJ_private chứa các giá trị bị thiếu vì
chúng chưa bao giờ có bất kỳ CCJ nào. Đối với các cột này, chúng ta thay thế các
giá trị bị thiếu bằng 0. Đoạn mã dưới đây minh họa cách nó được hoàn thành.
Đoạn mã trên:
+ sample['CCJ_government'] =
chỉ định khung dữ liệu và cột chúng tôi đang sửa đổi / tạo.
+ sample['CCJ_government'].
chỉ định khung dữ liệu và cột mà chúng tôi đang điều tra.
+ fillna(0)
Thay đổi NA thành không.
Điều này sau đó được lặp lại cho CCJ_private.
78
Kiểm tra kết quả bằng cách nhấp đúp vào mẫu.
5.4.2 Tạo cột mới
Khả năng tạo cột mới là kỹ năng quan trọng đối với nhà phân tích. Đôi khi,
chúng ta có thể muốn thêm một giá trị duy nhất vào khung dữ liệu hoặc tạo một
cột mới dựa trên thông tin đã có trong khung dữ liệu. Ví dụ đầu tiên là tạo một cột
mới với giá trị 1 được gọi là số đếm, trong mẫu khung dữ liệu.
Chương trình 5-12: Tạo một cột mới.
Đây là một trong những tình huống mà việc viết ra những gì chúng ta sẽ làm
dài hơn bản thân mã. Chỉ cần nhớ ghi khung dữ liệu trước, sau đó là tên cột với
[‘..’] Như thường lệ, hãy nhớ chạy mã. Nếu chúng ta muốn thêm cột ngày vào
khung dữ liệu của mình thì chúng ta chỉ cần sử dụng pandas library và to_datetime
command.
Phần tiếp theo liên quan đến việc tạo một biến (cột) mới dựa trên các giá trị
từ các biến khác nhau trong khung dữ liệu, mẫu. Một cột mới có tên là "totalbank"
sẽ được tạo, cột này tổng hợp tổng số dư ngân hàng trong khung dữ liệu.
79
Hy vọng rằng mã này hoàn toàn phù hợp với bạn, vì tất cả những gì chúng
ta đang làm là tạo một cột mới dựa trên một cột khác. Xin lưu ý rằng phải chỉ định
khung dữ liệu cho cột mới và nhớ rằng cột này có phân biệt chữ hoa chữ thường,
nhưng đó sẽ là khó khăn duy nhất. Nếu bạn mắc lỗi, đây không phải là vấn đề ở
giai đoạn này, vì Python sẽ chỉ ghi đè cột bằng phiên bản chính xác khi bạn chạy
lại phiên bản mã chính xác.
5.4.3. Where
Lệnh ‘where’ rất mạnh mẽ, vì nó cho phép ta thao tác dữ liệu một cách dễ
dàng. Phần này sẽ cung cấp 2 ví dụ về việc sử dụng lệnh ‘where’ để hiểu được tính
linh hoạt của nó. Chúng ta đã sử dụng câu lệnh ‘If’ trong Excel trong ‘phần 3.2.2
hàm if.
Trước hết, chúng ta sẽ tạo một biến mới (cột) chứa việc sử dụng nợ (số tiền_
sở hữu) bằng cách tiết kiệm. Thông thường, nợ có tỷ lệ% cao hơn tỷ lệ tiết kiệm.
Như trước đây chúng ta sẽ tạo một cột mới.
Chương trình 5-15: Tạo một cột mới dựa trên các cột khác-2.
Từ ví dụ trên, chúng ta có thể thấy rằng chúng ta đã tạo một cột mới có tên
là ‘amtowesav’, được tính bằng cách chia amount_owed bởi savings. Nếu chúng
ta xem xét biến mới này, chúng ta sẽ nhận thấy những điều sau.
80
Cột mới của chúng ta có lưu trữ ‘Inf’ bên trong nó, cũng như nan. Điều này
có nghĩa là vô hạn, vì chúng ta đã chia một số cho không. Một cách đơn giản để
giải quyết vấn đề này là chỉ tính tỷ lệ này khi số tiền tiết kiệm được không bằng 0.
Điều này dẫn đến việc sử dụng lệnh where. Thay vì đưa ra lý thuyết, cuốn sách
này sẽ chứng minh cách chúng được sử dụng với một ví dụ.
Program 5-16: Sử dụng lệnh
+ sample['amtowesav'] <-
This is the name of our new column within the data frame.
+ np.where(sample.savings !=0, sample.amount_owed / sample.savings, 0)
np.where – lệnh mới, hoạt động rất giống với lệnh Excel 'IF’;
savings != 0, - thông báo cho Python biết rằng bất cứ khi nào lưu không
bằng 0, thì hãy làm như sau:
sample.amount_owed / sample.savings - tính toán chúng tôi muốn đã
hoàn thành;
0)) – tất cả where savings không bằng 0, thì đặt 0 vào cột ‘amtowesav’.
Tiếp theo là dấu ngoặc.
81
Từ phần trên, chúng ta có thể thấy rằng ‘amtowesav’ có một chuỗi dài các
số thập phân. Chỉ để hoàn chỉnh, nhưng không cần thiết, chúng ta có thể làm tròn
con số này thành một chữ số thập phân.
Chương trình 5-17: Làm tròn số
Nếu muốn có 3 chữ số thập phân, thì chỉ cần thay thế ‘1’ bằng ‘3’. Chỉ là
một lưu ý cuối cùng về biến mới. Phần tiếp theo yêu cầu tạo một cột mới được gọi
là bảng lương, sử dụng các giá trị trong cột tiền lương.
+ sample['wageband'] <
Yêu cầu Python tạo một cột mới có tên là wageband trong khung dữ liệu.
+ sample np.where(
Lệnh chỉ định tiêu chí của cột mới dựa trên dữ liệu có sẵn.
+ sample.wages<100, 'low', Nếu mức lương thấp hơn 100, thì đặt "low"
trong cột mới " wageband". Các dấu phẩy ngược sẽ không xuất hiện trong cột.
+ np.where(sample.wages<1000, 'medium',
Nếu tiền lương dưới 1000, thì hãy đặt 'medium'. Lưu ý rằng nó sẽ không
ghi đè quy tắc đầu tiên, (dưới 100) vì nó sẽ xử lý lệnh này theo thứ tự. Ngoài ra,
chúng ta chưa sử dụng dấu ngoặc đóng!
82
+ np.where(sample.wages >=1000, 'high', 'err')))
phần cuối cùng của mã thông báo cho chúng tôi biết rằng bất kỳ số liệu
nào bằng hoặc lớn hơn 1000, hãy đặt 'high' vào cột mới.
‘err’ cho Python biết rằng đối với bất kỳ tình huống nào, trong đó các thông
số kỹ thuật không khớp, hãy đặt ‘err’ vào cột. Điều này sẽ giúp chúng ta xác định
bất kỳ lỗi nào trong mã hóa của chúng ta.
Cuối cùng, chúng ta hoàn thành lệnh bằng dấu ngoặc (cả 3 trong số chúng).
5.4.4 Bài tập 5.2
Tạo một cột mới Bài tập này liên quan đến việc thao tác với các cột
land_worth.
1) Tạo một cột mới dựa trên land_worth được gọi là landbands bằng cách
sử dụng logic sau:
a. Trường hợp land_worth bằng 0 và nhỏ hơn;
b. Trường hợp land_worth trên 0 và nhỏ hơn 100;
c. Trường hợp land_worth bằng 100 trở lên và nhỏ hơn 1000;
d. Trường hợp land_worth bằng 1000 trở lên.
2) Tạo nhãn của riêng bạn cho các dải này.
LƯU Ý - theo dõi số lượng dấu ngoặc được sử dụng và đừng quên dấu phẩy.
83
Giải bài tập 5.2.
Bảng tóm tắt Bảng 5.4: Tóm tắt các lệnh Python chính
Một ghi chú nhanh từ tác giả. Cuốn sách này có vẻ khá chuyên sâu như một
khóa học nhập môn, nhưng mục đích chính của nó là đặt ra những nền tảng quan
trọng theo cách áp dụng. Chỉ có một cách thực sự để học cách lập trình và đó là
thực hiện nó. Chúng tôi đã phát hiện ra rằng mọi người bắt đầu sử dụng bất kỳ
84
ngôn ngữ lập trình nào càng sớm thì ngôn ngữ đó càng trở nên dễ dàng hơn và
cũng cho phép bạn nâng cao kiến thức của mình hơn.
85
6. Hợp nhất dữ liệu
Rất hiếm khi xảy ra khi tất cả các yêu cầu dữ liệu của bạn đều có sẵn trong
một khung dữ liệu. Trong mục này, chúng ta sẽ tạo một khung dữ liệu giả dựa trên
mẫu tệp CSV, để cho phép chúng tôi hợp nhất dữ liệu và giới thiệu nhiều lệnh hơn
trong R.
Chương này bao gồm các chủ đề:
- Lấy mẫu
- Giữ / loại bỏ các cột từ các khung dữ liệu
- Sắp xếp dữ liệu
- Hợp nhất các khung dữ liệu
+ Kết nối đầy đủ
+ Kết nối độc quyền
+ Kết hợp / Nối kết.
Như đã đề cập trước đây, ứng dụng có lợi hơn công việc lý thuyết, do đó
chúng ta phát triển các khung dữ liệu mới.
6.1. Tạo khung mô phỏng
Vui lòng nhập mẫu tệp CSV vào Python.
Giai đoạn tiếp theo liên quan đến việc tạo một khung dữ liệu được gọi là
mockdata chứa:
1) Hai biến mới:
a. Mock_wages, đây là tiền lương nhân với 100;
b. Mock_savings, đây là khoản tiết kiệm nhân với 100;
2) Một biến khác sử dụng lệnh np.where được gọi là Land_group
a. Trường hợp land_worth bằng 0 và nhỏ hơn;
b. Trường hợp land_worth trên 0 và nhỏ hơn 100;
86
c. Trường hợp land_worth bằng 100 trở lên và nhỏ hơn 1000;
d. Trường hợp land_worth bằng 1000 hoặc hơn.
3) Trường ngày tháng được gọi là Mock_date –2002-02-02.
4) Các biến sau:
a. Id
b. Mock_wages
c. Mock_savings
d. Land_group
e. Mock_date.
Nếu bạn quyết định bỏ qua mục 4 và 5 và bắt đầu từ chương này, thì danh
sách các yêu cầu này có thể gây khó khăn.
Phần 3 - tạo cột ngày tháng
Chương trình 6-4: Tạo cột ngày tháng năm
Phần cuối cùng của bài tập này yêu cầu khung dữ liệu chỉ chứa các nội dung
sau:
a. Id
b. Mock_wages
c. Mock_savings
d. Land_groupe
87
e. Mock_date.
Phần 4– tạo khung dữ liệu giả.
Chương trình 6-5: Chọn cột Từ đoạn mã trên
Chúng ta đã tạo một khung dữ liệu gọi là mockdata, chỉ sử dụng các cột đã
chọn (trong dấu phẩy ngược) trong [[…]]
Nếu chúng ta xem tất cả các nhiệm vụ đó cùng một lúc, thì điều đó có thể
khiến bạn nản lòng. Do khả năng chia nhỏ các nhiệm vụ thành các phần có thể
quản lý được, việc tạo khung dữ liệu cuối cùng (mockdata) của chúng ta trở nên
dễ dàng hơn. Bước tiếp theo liên quan đến việc chọn một mẫu ngẫu nhiên từ
mockdata và gọi nó là mockdata1. Lệnh được gọi là sample.
Con số (1000) thông báo cho Python biết tổng số hàng (quan sát) mà chúng
tôi yêu cầu. Trong trường hợp này, chúng ta đang yêu cầu Python cung cấp cho
1000 hàng ngẫu nhiên từ mô hình khung dữ liệu. Khung dữ liệu cuối cùng được
tạo sẽ được gọi là mocksamp.
Điều này sẽ chỉ chứa 3 cột từ mẫu khung dữ liệu:
- Id
- Wages
- Mortgage
88
Chương trình 6-6: Tạo mocksamp.
Như trước đây, việc chọn cột từ khung dữ liệu chủ yếu liên quan đến việc
đặt tên khung dữ liệu bên ngoài [[..]] và trong dấu ngoặc, liệt kê các cột muốn
trong dấu phẩy ngược được phân tách bằng dấu phẩy.
6.2 Hợp nhất các tập dữ liệu
Phần này sẽ chỉ xem xét việc kết hợp hai khung dữ liệu và sẽ tập trung vào
ba loại kết hợp khác nhau:
Full/Outer
Exclusive
Appending/concatenating
6.2.1 Full/Outer Join
Kết nối đầy đủ sử dụng tất cả dữ liệu từ cả hai tập dữ liệu và khi có dữ liệu
ở một phần chứ không phải ở phần kia, thì nó sẽ điền các giá trị này là ‘missing'.
Khi giải thích các phép nối, chúng ta có xu hướng sử dụng các vòng kết nối.
Kết hợp đầy đủ có nghĩa là chúng ta sẽ sử dụng tất cả dữ
liệu từ mocksamp và mockdata1, ngay cả khi có các quan sát
trong một tập dữ liệu và không có quan sát nào trong khác.
Sao chép và chạy mã bên dưới.
1) Lệnh ở đây là: pd.merge
a. Điều này cho Python biết bạn muốn hợp nhất các khung dữ liệu với
nhau
i. mocksamp 1. điều này cung cấp cho khung dữ liệu một bí danh được
gắn nhãn ‘x’.
ii. mockdata1
89
1. điều này cung cấp cho khung dữ liệu một bí danh được gắn nhãn
‘y’.
2) on = “id”
a. Điều này cho Python biết biến để hợp nhất dữ liệu.
3) how=’outer’
a. Đây là một lệnh quan trọng cho Python biết loại liên kết bạn muốn sử
dụng. Trong trường hợp này, nó là full/outer join.
Hình sau kết quả Full join
Vì chúng tôi chỉ lấy một mẫu ngẫu nhiên gồm 1000 hàng từ mẫu, chúng ta
sẽ kết thúc với rất nhiều ‘nan’ (naT cho dữ liệu ngày) trong khung dữ liệu, như thể
hiện trong hình 6.5. Có một cơ hội rất tốt là bảng sẽ trông khác với hình 6.5, điều
này là do Python chọn ngẫu nhiên 1000 hàng. Đừng lo lắng về điều đó, nếu có lỗi,
Python sẽ cho bạn biết. Đây là lý do tại sao nó được gọi là full join (tham gia đầy
đủ) vì nó chứa tất cả dữ liệu. Nếu có các hàng trong mockdata1 không có trong
mocksamp, thì chúng ta sẽ thấy các giá trị bị thiếu (NA) cho các biến từ mocksamp.
6.2.2. Các phép nối độc quyền
Các phép nối độc quyền cho phép chúng tôi chọn dữ liệu chỉ có liên quan
trong một trong các khung dữ liệu và nơi nó khớp trong khung dữ liệu khác. Ví dụ
sau sẽ tập trung vào mockdata1 của khung dữ liệu và ở đâu có sự trùng khớp trên
mocksamp của tập dữ liệu, thì nó sẽ sử dụng dữ liệu này.
90
Hình 6.4: Sơ đồ của một phép nối độc quyền.
Đoạn mã này rất giống với chương trình 6-7, chỉ với câu lệnh thay đổi như
thế nào.
Mocksamp chứa 13508 hàng, mockdata1 chứa 1000 hàng. Vì chúng ta chỉ
muốn các giá trị có liên quan trong mockdata1, nên mã này tạo ra một dữ liệu nổi
tiếng được gọi là 'rightjoin' với chỉ 1000 hàng (quan sát). Đối với phép nối bên
trái, chúng ta sẽ sử dụng how = ’left’.
Một kiểu kết nối độc quyền khác là khi muốn sử dụng dữ liệu xuất hiện
trong cả hai tập dữ liệu, nói cách khác, nơi có cùng ID trong cả hai bảng. Đây được
gọi là liên kết bên trong.
Hình 6.5: Sơ đồ kết hợp độc quyền (2).
Một lần nữa, mã rất giống nhau ngoại trừ how = ‘inner’. Trong trường hợp
này, chúng ta sẽ nhận được 1000 hàng (giống như nối phải), điều này là do chúng
ta đã lấy một mẫu ngẫu nhiên từ mockdata để tạo mocksamp.
6.2.3 Kết hợp / nối dữ liệu
Đôi khi chúng ta có thể có 2 tập dữ liệu mà chúng ta muốn kết hợp bằng
cách xếp chồng chúng lên trên tập dữ liệu kia, điều này được gọi là nối hoặc nối.
91
Hình 6.6: Sơ đồ nối thêm
Lệnh để nối dữ liệu rất đơn giản, pd.concat. Điều này sẽ tạo ra một khung
dữ liệu được gọi là conc chứa 14508 hàng và 7 cột.
Chuẩn bị dữ liệu là rất quan trọng khi tiến hành phân tích. Mục 5 cung cấp
các lệnh cơ bản để làm sạch dữ liệu. Nếu không làm sạch dữ liệu đơn giản, ta có
thể nhận được kết quả sai và số liệu sai lệch được báo cáo. Ngoài ra, hiếm khi dữ
liệu yêu cầu được lưu trữ ở một nơi, do đó cần phải nối các bảng, như được mô tả
trong mục 6.
6.3. Tóm tắt
Bảng dưới đây chứa các đoạn mã chính như được trình bày trong mục 6.
92
7. Phân tích
Phần này cung cấp các công cụ để bắt đầu phân tích dữ liệu. Như đã trình
bày trước đây, dữ liệu hiếm khi được cung cấp "sẵn sàng để sử dụng". Vì vậy
chúng ta phải biết cách điều khiển khung dữ liệu bằng các lệnh cụ thể. Trước đây,
chúng ta tính toán các số liệu thống kê đơn giản, bây giờ chúng ta sẽ mở rộng kiến
thức vào phân tích.
Chương sau trình bày cách chúng ta có thể sử dụng Python để thực hiện các
phân tích hữu ích và sâu sắc cũng như cách chúng ta có thể sử dụng nhiều công cụ
để trình bày kết quả.
Python có một số gói mạnh mẽ cho phép chúng ta thực hiện các phân tích
phức tạp, một cách đơn giản.
7.1. Giới thiệu về phân tích dữ liệu
Trước đây, chúng ta sử dụng bảng pivot để tiến hành phân tích (mục 3.3.1),
chương này sẽ sử dụng Python. Thông thường các báo cáo qua email có tệp đính
kèm Excel, nhưng nếu chúng tôi sử dụng dữ liệu thô thay vì dữ liệu tóm tắt, chúng
tôi có thể có thể gửi email có kích thước 10 giây hoặc 100 megabyte. Python cho
phép chúng tôi giảm kích thước dữ liệu, để cung cấp thông tin chính, sau đó có thể
được sử dụng trong Excel.
Như phần trước, chúng ta sẽ học bằng ứng dụng chứ không phải lý thuyết.
7.1.1 Tạo tập dữ liệu
Giai đoạn đầu tiên liên quan đến việc sử dụng dữ liệu từ sample.csv, với các
sửa đổi sau:
+ Ghi đè nan trong CCJ_go Government thành 0;
+ Ghi đè nan trong CCJ_private thành 0;
+ Tạo cột có số 1.
Chương trình 7-1: Tạo khung dữ liệu của chúng ta.
93
Mã này được sao chép và dán từ mục 5. Một lượng lớn chương trình có xu
hướng liên quan đến việc sao chép, dán và sửa đổi công việc trước đó. Đây là lý
do tại sao bạn nên để lại những ghi chú sâu sắc trong mã của bạn. HÃY NHỚ
CHẠY MÃ NÀY TRƯỚC KHI TIẾN HÀNH.
7.1.2 Phân tích cơ bản
Chỉ là một bản tóm tắt, chúng ta sẽ đưa ra một số thống kê đơn giản:
+ Tổng số khách hàng có CCJ_private;
+ Average wages của khách hàng.
Các lệnh này rất đơn giản và tạo ra các kết quả sau:
+ Tổng CCJ_private = 1237;
+ Average wages = 2269,99.
7.2 Tổng hợp dữ liệu theo nhóm
Thông thường người ta thường tóm tắt dữ liệu bằng cách nhóm chúng theo
các thuộc tính cụ thể để thu thập phân tích sâu sắc hơn. Ví dụ: Độ tuổi trung bình
của nam và nữ.
7.2.1. Ví dụ về tổng hợp dữ liệu theo nhóm
Chúng tôi muốn phân tích tổng số CCJ do chính phủ đệ trình, bởi những
người đã phá sản. Đối với điều này, chúng ta sẽ:
1. Tạo một khung dữ liệu mới được gọi là sum_exer;
2. Sử dụng cờ mục tiêu để tạo một cột mới được gọi là phá sản;
3. Tóm tắt dữ liệu cho kết quả của chúng tôi Bước 1 và 2 rất đơn giản và đã
được đề cập trước đó.
94
Phần trên cho Python biết rằng nếu target bằng 1, thì cột bị phá sản bằng
“CÓ”, còn lại đối với tất cả các hàng khác, hãy phá sản bằng “KHÔNG”. Đối với
bước 3, chúng ta sẽ tóm tắt theo nhóm.
Chương trình 7-4: Tạo một biến và khung dữ liệu mới.
We have completed simple statistics before, program7-4 takes it to the next
level
+ sum_exe.groupby(['bankrupt']).
sử dụng khung dữ liệu sum_exe
groupby(['bankrupt']). – phân đoạn các thống kê sau theo biến bankrupt .
+ sum()[["count", "CCJ_government"]]
sum() – thêm (sum) trường tiếp sau
count – Cộng tất cả số 1
CCJ-government – thêm tất cả ccj_government figures.
Lập bảng kết quả để dễ tham khảo tạo ra: Bảng 7.1: Bảng kết quả
1) bankrupt
a. Biến được phân đoạn để phân tích
2) count
a. Đây là biến được sử dụng như được chỉ định trong câu lệnh tóm tắt và
cho bạn biết số hàng / quan sát đã được sử dụng từ khung dữ liệu
95
i. 12387 không phải bankrupt
ii. 1121 trở thành bankrupt
3) CCJ_government
a. Đây là biến được sử dụng như được chỉ định trong lệnh tóm tắt
i. 518 CCJ_government không phải bankrupt
ii. 2248 CCJ_government bankrupt
Từ kết quả, chúng tôi nhận thấy rằng CCJ_go Government lớn hơn tổng số
khách hàng trong nhóm đó. Phần sau sẽ nghiên cứu thêm về sự bất thường này.
7.3. Tính toán tỷ lệ phần trăm
7.3.1. Ví dụ về tạo tỷ lệ phần trăm
Dựa trên những gì đã được sản xuất trước đó, chúng tôi muốn tính% những
người có CCJ CCJ go bankrupt. Ngoài ra, bankruptcy % phá sản cho toàn bộ dân
số cũng sẽ được tính toán.
Tuân theo các phương pháp cho đến nay trong cuốn sách này, chúng tôi sẽ:
1. Tạo khung dữ liệu dựa trên ví dụ trước (7.2.1)
2. Tạo khung dữ liệu mới dựa trên ví dụ trước mà không có ‘group by’
a. Tạo một cột mới được gọi là bankrupt, với giá trị “ALL”
3. Nối cả hai khung dữ liệu để tạo một khung dữ liệu mới
4. Tính% trên khung dữ liệu mới này.
Sửa đổi mã đã sử dụng trước đó, chúng ta có thể nhanh chóng tạo ra:
96
Lưu ý, để tính%, bạn không thể sử dụng perc3.CCJ_go Government /
perc3.count vì nó sẽ bị lỗi!
Cột perc vẫn chưa có dấu%. Điều này có thể được giải quyết bằng cách:
+ Nhân với 100
+ Chuyển số thành chuỗi
+ Thêm dấu% vào cuối.
Ngoài ra, để làm cho kết quả thẩm mỹ hơn, chúng tôi sẽ làm tròn phép tính
ban đầu thành 4 chữ số thập phân, điều này sẽ cung cấp cho số liệu% của chúng
ta có độ chính xác 2 dấu thập phân.
97
Kết quả
Viết những kết quả này vào một bảng sẽ tạo ra
1) Bankrupt
a. Biến được phân đoạn để phân tích, cột đầu tiên
2) Count
a. Điều này cho bạn biết số lượng hàng / quan sát đã được sử dụng từ tập dữ
liệu cho procedure.
3) CCJ_government
a. Đây là biến được sử dụng như được chỉ định trong câu lệnh tóm tắt
4) Perc
a. Tính toán phần trăm.
Là một nhà phân tích, bạn có thể nhận thấy rằng đối với phá sản = ‘YES’,
tỷ lệ phần trăm là hơn 100%. Xem xét nhanh dữ liệu cho thấy một số người có
nhiều hơn 1 CCJ. Vì vậy những con số này không đưa ra con số thực về% số người
có government CCJ là bankrupt.
Đây là một bài học quý giá, đừng bao giờ đưa ra giả định về dữ liệu.
7.3.2 Bài tập 7.1: tóm tắt và tỷ lệ phần trăm
Sử dụng ví dụ trước, tạo một biến mới có logic sau: nếu tổng số government
CCJ là một hoặc nhiều hơn, hãy làm cho nó bằng bằng 1,
nếu không thì làm cho nó bằng 0.
98
Điều này sẽ yêu cầu sử dụng lệnh 'np.where'.
Sau đó, hãy khám phá% khách hàng thực sự có government CCJ cuối cùng
là bankrupt.
7.3.3 Lời giải bài tập 7.1
Chương trình 7-7: Lời giải đầy đủ bài tập 7-1
Một lần nữa lập bảng kết quả để dễ tham khảo, …
Từ bảng 7.3, hơn 52% những người có CCJ government trở thành bankrupt..
chúng ta có thể đã sao chép và dán mã trước đó, với bước mới được thêm vào
(chương trình 7-7), hoặc có thể mã hóa mọi thứ từ đầu. Nếu đã sao chép và dán
mã từ trước đó, đây không phải là gian lận và hiếm khi có thêm bất kỳ tín dụng
nào từ việc viết mã từ đầu (ngoại trừ, có thể, tại các cuộc phỏng vấn xin việc). Có
thể an toàn khi giả định rằng đôi khi 80% thời gian của lập trình viên được dành
để sao chép, dán và sửa đổi mã trước đó. Đó là kiến thức về chức năng của các
lệnh giúp bạn trở thành một lập trình viên giỏi hơn.
99
7.4. Tạo báo cáo thông tin quản lý đơn giản (MI)
Cuối cùng, các nhà quản lý cần những số liệu sâu sắc để có thể đưa ra các
quyết định thông minh. Phần tiếp theo này sẽ mở rộng kiến thức của chúng ta, hơn
nữa để tạo ra một báo cáo đơn giản và hữu ích. Điều này sẽ đòi hỏi phải viết một
lượng mã đáng kể và tạo các khung dữ liệu mới, sử dụng các kinh nghiệm trước
đây của chúng ta được đề cập đến trong cuốn sách này.
7.4.1. Ví dụ về báo cáo MI đơn giản
Tạo một báo cáo chi tiết, theo bankruptcy và cho tất cả:
+ Tổng số người
+ Mức lương trung bình
+ Số CCJ tư nhân và chính phủ
+ Số dư ngân hàng trung bình
+ Tiết kiệm trung bình.
Trước khi đưa ra giải pháp, vui lòng tìm kèm theo một đoạn mã có liên
quan. Nếu như chúng ta muốn tóm tắt và tính toán trung bình trong một dòng mã,
sau đó chúng tôi có thể sử dụng.
Chương trình 7-8: Tổng kết và tính trung bình
+ summar1 = sum_exe7_1.groupby(['bankrupt']).
Phần này sẽ quen thuộc.
+ agg({'count':'sum', 'wages':'mean').
Trước đây, chúng ta đã sử dụng tổng bên ngoài dấu ngoặc, nhưng bằng
cách sử dụng agg, với các lệnh liên quan, chúng ta có thể tính toán tổng và giá trị
trung bình.
+ reset_index()
trong các ví dụ trước của chúng tôi, cột bankrup xuất hiện trong cột chỉ mục,
điều này khó xác định. Bằng cách sử dụng lệnh này, chúng ta sẽ có một cột được
gọi là chỉ mục.
100
Báo cáo chỉ trình bày chi tiết và rõ ràng những số liệu này.
Chương trình 7-9: Bài tập 7.4.1
Từ hình 7.4: Những khách hàng phá sản có xu hướng
+ Có nhiều CCJ của chính phủ hơn mức trung bình;
101
+ Có nhiều CCJ tư nhân hơn mức trung bình;
+ Có mức lương thấp hơn mức trung bình;
+ Có số dư ngân hàng thấp hơn mức trung bình;
+ Có số tiền tiết kiệm thấp hơn mức trung bình;
Có thể thấy, kết quả không thực sự gây chú ý và các nhà quản lý có xu
hướng thích những số liệu đơn giản với đồ thị. Python có khả năng tạo ra một số
đồ thị tuyệt vời, nhưng nhiều doanh nghiệp đã quen thuộc với đồ thị Excel. Do đó,
chúng ta sẽ sử dụng Excel để tạo các biểu đồ.
Chương trình 7-10: Xuất dữ liệu sang tệp csv cho Exel.
+ summar3 là khung dữ liệu
+ .to_csv là lệnh
+ “C:/temp/summar3.csv", đường dẫn đến lưu file cvs.
+ index = False, chúng ta không muốn xuất cột chỉ mục trong Python.
Trong Excel, bạn có thể dễ dàng thay đổi tên cột và sửa đổi cách dữ liệu
được trình bày để tạo báo cáo thông tin quản lý (MI) đơn giản.
102
Hình 7.6: Báo cáo MI đơn giản.
1) Đối với bảng, sau đây được tiến hành
a. Đổi tên các cột
b. Tô màu các hộp.
2) Biểu đồ hình tròn được tạo bằng phương pháp tương tự như biểu đồ phân
tán như đã trình bày chi tiết trong chương 2.
Mất vài phút để tạo báo cáo mà không cần mã hóa thêm. Không có quy tắc
thành văn nào mà bạn phải sử dụng một ngôn ngữ / phần mềm lập trình để đạt
được kết quả cuối cùng.
Một số người thích tạo tệp dữ liệu chính với tất cả các số liệu được tổng
hợp, sau đó sử dụng Excel để tạo trung bình, tỷ lệ phần trăm, v.v.…. Điều này đã
được đề cập vì Python là một công cụ phân tích tuyệt vời có thể xử lý các bộ dữ
liệu khổng lồ, nhưng mọi người có thể thích tính ra mức trung bình, v.v.… sau khi
tập dữ liệu đã được tóm tắt.
Một lý do khác tại sao mọi người thích đồ thị trong Excel là chúng dễ dàng
thao tác và thay đổi diện mạo của chúng đòi hỏi ít nỗ lực.
103
Tôi đã từng trải qua nhiều nhà quản lý, mỗi người muốn đồ thị được tạo ra
theo một cách cụ thể, từ tiêu đề được viết theo một cách nhất định cũng như chú
thích là từ cạnh xuống dưới, biểu đồ thanh thay vì đường… danh sách khá đầy đủ.
Trong Excel, các biểu đồ này có thể được thay đổi theo yêu cầu của người quản lý
khi họ ngồi cạnh bạn, điều này giúp quá trình diễn ra suôn sẻ hơn.
7.5 Bài tập 7.2 tạo một báo cáo MI đơn giản bằng Python và Excel
Bài tập sau sử dụng một số khía cạnh nhất định từ mục 5 đến mục 7. Xin
lưu ý rằng chúng ta có thể sử dụng mã cũ để sao chép / dán và sửa đổi, điều này
chỉ xảy ra trong khi phỏng vấn.
7.5.1. Bài tập 7.2: báo cáo MI đơn giản
Tạo báo cáo MI sử dụng dữ liệu từ sample.csv bằng cách thực hiện như sau:
+ Nhập dữ liệu này (nếu bạn chưa có).
+ Sử dụng khung dữ liệu này và chia tập dữ liệu theo mức lương thành 5
dải:
 0 và dưới 0
 Trên 0 và dưới 1000
 1000 đến dưới 10000
 10000 và dưới 50000
 50000 trở lên.
Đối với những người chưa phá sản (target = 0), hãy khám phá cho từng của
các mức lương:
- % số người sở hữu tài sản
- % số người có bất kỳ loại CCJ nào
- % số người có số tiền tiết kiệm lớn hơn 1000
- Số tiền tiết kiệm trung bình của những người có số tiền tiết kiệm trên 1000.
Xuất kết quả sang Excel, tạo biểu đồ và đổi tên các cột cho phù hợp tên mô tả.
104
7.5.3. Giải bài tập 7.2
Chương trình 7-11: Bài tập 7.2
1) Nhập dữ liệu và nhanh chóng làm sạch các giá trị NA
2) tạo cờ đếm của riêng chúng ta và thay thế giá trị rỗng
3) Để loại bỏ tất cả các trường hợp phá sản
105
4) Lệnh cung cấp cho mọi người 1 nếu họ có 1 hoặc nhiều CCJ
5) Tạo các dải lương của chúng tôi
6 ) Lệnh cung cấp cho mọi người 1 nếu họ có 1 hoặc nhiều thuộc tính
7) Lệnh cung cấp cho mọi người 1 nếu họ có số tiền tiết kiệm trên 1000 và
tạo một cột mới dựa trên thời điểm tiết kiệm trên 1000
8) Tóm tắt dữ liệu
Cách tiến hành tiếp theo là vấn đề lựa chọn, ta có thể tính toán các số liệu
bằng Python hoặc xuất exer7_2b sang Excel và tính toán các số liệu trong đó.
Hình 7.7: Báo cáo bài tập 7.2 trong Exel.
Như đã đề cập trước đây, đồ thị và công cụ báo cáo có sẵn bằng Python,
nhưng cuốn sách này sẽ sử dụng Excel, do tính đơn giản và kiến thức mà các nhà
quản lý có xu hướng thích đồ thị Excel của họ. Các lệnh Excel được sử dụng:
+ % own property = property / count
106
+ % với CCJ = CCJ / count
+ % với khoản tiết kiệm trên 1000 = save1000 / count
+ Số tiền tiết kiệm trung bình = save1000 / ovr1000.
7.6. Tóm tắt
Mặc dù chúng ta đã trình bày nhiều trong mục này, nhưng các kỹ thuật mới
được giới thiệu trong mục này là khá ít. Bảng dưới đây chứa các đoạn mã chính
như trong mục.
Bảng 7.4: Mã mẫu mục 7
107
Chương 3. Đánh giá và hiệu chỉnh dữ liệu
1. Hồi quy tuyến tính đơn giản trong R
Chúng tôi đã trình bày hồi quy tuyến tính đơn giản trong mục 2, sử dụng
Excel và rất ngắn gọn trong mục 4, sử dụng R. Mục này sẽ trình bày nhiều khía
cạnh chúng ta đã thấy trước đây nhưng chi tiết hơn.
Phần mở đầu của mục này khác với các phần trước là chúng ta tập trung
một chút vào lý thuyết (theo cách áp dụng).
Mục này sẽ trình bày chi tiết việc tính toán các thống kê cụ thể:
 Phương sai
 Độ lệch chuẩn
 Sai số chuẩn
 Hồi quy tuyến tính đơn giản
 R bình phương
1.1. Giới thiệu về hồi quy
Hồi quy tuyến tính có nhiều ứng dụng trong thực tế. Hầu hết các ứng dụng
của hồi quy tuyến tính thuộc một trong hai loại lớn sau:
• Nếu mục tiêu là dự đoán hoặc dự báo, thì hồi quy tuyến tính có thể được
sử dụng để phù hợp mô hình dự đoán với một tập dữ liệu quan sát của các giá trị
Y và X.
• Cố gắng mô hình hóa mối quan hệ giữa hai biến bằng cách điều chỉnh một
phương trình tuyến tính với dữ liệu quan sát. Ví dụ, một nhà phân tích muốn tìm
mối quan hệ giữa cân nặng và chiều cao của các cá nhân bằng cách sử dụng mô
hình hồi quy tuyến tính.
1.1.1 Sơ đồ hồi quy tuyến tính đơn giản
Mục đích của hồi quy là mô hình hóa sự phụ thuộc của một biến Y vào biến
X.
+ Y được gọi là biến phụ thuộc hoặc biến đáp ứng.
+ X được gắn nhãn là biến độc lập, hiệp biến hoặc biến giải thích.
Phương trình hồi quy tuyến tính đơn giản:
Y = mX + c.
108
Mục tiêu của hồi quy tuyến tính là tìm đường dự đoán tốt nhất của Y từ X.
1.1.2 Phân phối chuẩn
Phân phối chuẩn hoặc Gauss là phân phối liên tục quan trọng nhất trong
Thống kê.
Đồ thị của phân phối chuẩn là một
đường cong hình chuông. Đường cong đối
xứng về giá trị trung bình để giá trị trung vị
và giá trị chế độ cũng là giá trị trung bình
của nó.
1.1.3 Tính phương sai, độ lệch chuẩn và sai số chuẩn
Table 8.1: Mean, median, mode and range
+ Phương sai
2
( )
 các quan sát của bạn thay đổi bao nhiêu so với giá trị
trung bình, ví dụ: số 1, 2, 4, 7.
+ Độ lệch chuẩn ( )
 : phản ánh cả độ lệch so với giá trị trung bình và tần
suất của độ lệch này, sử dụng các số liệu trên.
Ta có:
2
5,25 2,29.
 
  
+ Sai số chuẩn (SE): một phép đo phổ biến khác để mô tả độ lệch so với giá
trị trung bình và tần số
1.1.4 Tính toán hồi quy tuyến tính đơn giản
Hồi quy tuyến tính đơn giản đã được đề cập trước đây. Phần này minh họa
cách tính toán điều này bằng tay và để hiểu rõ hơn (nếu bạn không quan tâm thì
bạn có thể chuyển sang chương 8.2).
109
Ở đây:
x và y là các biến;
m là hệ số góc của đường hồi quy;
c là điểm giao nhau của đường hồi quy và trục y;
N là số giá trị hoặc phần tử;
X là điểm đầu tiên;
Y là điểm thứ hai;
ΣXY là tổng của tích của điểm thứ nhất và thứ hai;
ΣX là tổng của điểm thứ nhất;
ΣY là tổng của điểm thứ hai;
ΣX² là tổng bình phương điểm đầu tiên.
1.1.5. Tính toán hồi quy tuyến tính
Tính toán phương trình hồi quy tuyến tính đơn giản sử dụng các hình trong
bảng 8.2.
Giải ví dụ 8.1
Bước 1: Tìm N: vì có 5 hình, N = 5
Bước 2: Tính X * Y và X²
110
Bước 3: Tính ΣX, ΣY, ΣXY, ΣX²
ΣX = 60 + 61 + 62 + 63 + 65 = 311
ΣY = 3.1 + 3.6 + 3.8 + 4 + 4.1 = 18.6
ΣXY = 186 + 219.6 + 235.6 + 252 + 266.5 = 1159.7
ΣX² = 3600 + 3721 + 3844 + 3969 + 4225 = 19539
Bước 4: Thay thế vào công thức tính độ dốc
Bước 5: Thay thế trong công thức ở trên:
Bước 6: Thay các giá trị này vào công thức phương trình hồi quy
Giả sử nếu chúng ta muốn biết giá trị của y khi biến x = 64. Khi đó chúng
ta có thể thay thế giá trị trong phương trình đã suy ra:
Vì vậy, khi x = 64, chúng ta nên mong đợi y bằng 4,06.
1.1.6 Tính r²
R2
: một thước đo mức độ phù hợp của hồi quy tuyến tính. Giá trị r² là một
phân số từ 0,0 đến 1,0 và không có đơn vị. Giá trị r² là 0,0 có nghĩa là biết X không
111
giúp bạn dự đoán Y. Không có mối quan hệ tuyến tính nào giữa X và Y và đường
phù hợp nhất là đường nằm ngang đi qua giá trị trung bình của tất cả các giá trị Y.
Khi r² bằng 1,0, tất cả các điểm nằm chính xác trên một đường thẳng không có
phân tán. Biết X cho phép bạn dự đoán Y một cách hoàn hảo. Giá trị R2
trên 0,7
có nghĩa là phù hợp tốt.
1.1.7. Ví dụ về tính toán bình phương r
Một thước đo thống kê về mức độ gần đúng của đường hồi quy đối với các
điểm dữ liệu thực. Công thức cho r bình phương:
Với giá trị r-square cao, chúng ta biết rằng chúng ta có thể tự tin sử dụng
mô hình được tạo ra.
112
1.2 Tính toán hồi quy tuyến tính đơn giản trong Python
Chương trình 8-1: Hồi quy tuyến tính đơn giản
Hình 8.2: Kết quả hồi quy tuyến tính đơn giản trong Python
Vậy phương trình của đường hồi quy:
1.3. Bài tập trong Python - hồi quy tuyến tính đơn giản
1.3.1. Kịch bản hồi quy tuyến tính
Trong việc bán ô tô mới, thường xảy ra trường hợp ô tô càng đắt thì lợi
nhuận cho đại lý càng lớn. Giám đốc bán hàng muốn giúp các nhân viên bán hàng
của công ty thực hiện việc bán hàng có lợi nhất có thể cho từng khách hàng. Một
lĩnh vực quan tâm cụ thể liên quan đến số tiền tín dụng được áp dụng thành công
cho các giao dịch mua ô tô mới. Người quản lý đã lấy được mẫu 30 xe bán hàng
đã hoàn thành gần đây mà khách hàng đã đảm bảo một khoản vay tín dụng. Tệp
CSV có tên reg01 chứa hai biến:
113
+ X: tổng thu nhập hàng năm của người mua (tính bằng 1.000 giây);
+ Y: số tiền vay tín dụng mà người mua nhận được (tính bằng 1.000 giây).
Điều này rõ ràng sẽ hữu ích cho nhân viên bán hàng nếu biết cách nhiều tín
dụng mà một người mua tiềm năng có thể được thuyết phục để nộp đơn, dựa trên
kiến thức về thu nhập của họ. Trong ví dụ này, chúng ta sẽ sử dụng một thư viện
khác cho hồi quy của mình, vì nó cung cấp nhiều thống kê hơn trong kết quả của
nó.
1.3.2 Giải pháp hồi quy tuyến tính trong Python
Chương trình 8-2: Hồi quy tuyến tính đơn giản - Bài tập.
1) Đầu tiên, chúng ta cần kích hoạt một thư viện mới và nhập dữ liệu
2) y = reg01 ['Y'] - từ khung dữ liệu reg01, chúng ta cần tạo một chuỗi (một
mảng) chỉ với các biến mục tiêu y
3) Giai đoạn tiếp theo liên quan đến việc tạo dữ liệu với biến mà chúng ta
muốn t sử dụng để dự đoán y. Mô hình gói trong Python không bao gồm một lệnh
chặn trong kết quả của nó, trừ khi một biến đã được tạo. Trong trường hợp này,
114
chúng tôi đã sử dụng sm.add_constant (x). Kết quả tương tự có thể đạt được với x
[‘const’] = 1.
4) Mô hình dựa trên bình phương nhỏ nhất thông thường (OLS), trong đó
sử dụng mọi thứ trong khung dữ liệu x, để dự đoán y.
5) Bằng cách gọi .fit (), chúng ta nhận được các kết quả thay đổi. Đối tượng
này nắm giữ nhiều thông tin về mô hình hồi quy.
6) In kết quả đầy đủ của chúng ta, như thể hiện trong hình 8.3.
Dưới đây là mô tả ngắn gọn về một số kết quả:
+ R-Square - R-Squared là tỷ lệ phương sai trong biến phụ thuộc có thể
được giải thích bằng các biến độc lập. R-square là thống kê để đo lường mức độ
phù hợp của mô hình với dữ liệu thực tế đã được tính toán trước đó.
+ Bình phương R được điều chỉnh - Trong nhiều mô hình hồi quy, bình
phương rsquared sẽ tăng lên khi có nhiều biến hơn được đưa vào mô hình. Đây là
sự điều chỉnh của bình phương R phạt việc bổ sung các yếu tố dự đoán không liên
quan vào mô hình. Bình phương R đã điều chỉnh được tính bằng công thức 1 - ((1
- Rsq) (N - 1) / (N - k - 1)) trong đó k là số yếu tố dự đoán.
+ F-Statistic - Mô hình bình phương trung bình chia cho Sai số bình phương
trung bình. Đây là một chỉ báo tốt về việc có mối quan hệ giữa yếu tố dự đoán và
các biến phản ứng hay không. Thống kê F càng xa 1 thì càng tốt.
+ coef - giá trị mô hình của chúng tôi, được tính toán thủ công trước đây.
115
+ Std. Error - đo lường số tiền trung bình mà hệ số ước tính thay đổi so với
giá trị trung bình thực tế của biến phản hồi của chúng ta. Lý tưởng nhất là
chúng ta muốn một số thấp hơn so với giá trị của nó.
+ Giá trị T - đây là thước đo có bao nhiêu độ lệch chuẩn mà ước tính hệ số
của chúng tôi cách xa 0. Đối với giá trị t, số càng cao thì khả năng dự đoán
biến càng mạnh . Ngoài ra, giá trị t cũng được sử dụng để tính giá trị p.
+ Pr |> t | cho chúng ta biết sức mạnh của dự đoán ‘y’. Giá trị càng thấp thì
biến càng mạnh. Giá trị p từ 0,05 (5%) trở xuống là một điểm giới hạn tốt.
Áp dụng: y = mx + c.
Với giá trị dương trên ước lượng tham số, chúng ta có thể suy ra rằng khi
lương tăng, thì số tiền vay cũng vậy. Ngoài ra, với r-square lớn hơn 0,7 (0,7684),
chúng ta có thể sử dụng các kết quả này một cách tự tin. Do đó, đối với những
người có mức lương 10.000, chúng tôi có thể dự đoán rằng khả năng cho vay của
họ sẽ là: 3,43 + (0,19558 x 10) = 5,1858.
Do đó, dự đoán tín dụng = 5185,80. Các đơn vị tiền lương có thể thay đổi
là vào những năm 1000, do đó chúng ta phải thực hiện các tính toán cần thiết để
tạo ra số tiền tín dụng được dự đoán một cách chính xác.
1.4 Tóm tắt
Mục đích chính của mục này là đặt nền tảng cho hồi quy tuyến tính và ứng
dụng của nó. Tôi đã có kinh nghiệm nhiều người nói rằng họ hiểu hồi quy tuyến
tính, nhưng không nắm được những điều cơ bản mà chương này đề cập.
116
2. Hồi quy tuyến tính bội
Đây là một điều hiếm khi xảy ra khi chúng ta chỉ có thể sử dụng một biến
để dự đoán một kết quả với độ tin cậy. Khi chúng ta sử dụng nhiều hơn một biến
giải thích để dự đoán kết quả (Y), chúng ta gọi đây là hồi quy tuyến tính bội.
Chương này bao gồm các chủ đề:
+ Hồi quy đa tuyến tính
+ Tạo tệp đầu ra
+ Các phương pháp tiếp cận loại bỏ tuần tự
+ Mô hình hóa các biến phân loại
Theo lưu ý cá nhân, đây là khi hồi quy tuyến tính trở nên thú vị và đòi hỏi
nhiều hơn (có thể thú vị hơn).
2.1. Hồi quy tuyến tính bội
Trước đây chúng ta chỉ xem xét một biến giải thích. Hồi quy nhiều tuyến
tính sử dụng nhiều hơn một biến giải thích để tạo ra phương trình tuyến tính của
chúng ta.
1) Phần phụ thuộc (y)
2) Phần chặn (c)
3) Các biến giải thích / độc lập
4) Thuật ngữ sai số
a. Khi phát triển các mô hình, giá trị hạn lỗi rất gần bằng 0, vì vậy sẽ bị bỏ
qua. Đây chỉ là ở đây về độ chính xác của phương trình và sẽ không được xem xét
thêm.
Có thể thấy phương trình được viết dưới dạng:
Chúng ta chỉ thay thế M bằng β, vì vậy nó là về sự lựa chọn và phong cách.
117
2.1.1. Ví dụ về hồi quy tuyến tính bội
Một tệp CSV được gọi là multi1 chứa các giá trị của các biến sau đây cho
một mẫu gồm 19 công ty:
+ Công ty - tên công ty;
+ Lợi nhuận - tỷ suất lợi nhuận của công ty% ;
+ Tăng trưởng - tỷ lệ tăng trưởng;
+ PER của công ty - tỷ lệ giá trên thu nhập (P-E) của công ty.
Ví dụ đầu tiên của chúng tôi liên quan đến việc xây dựng một mô hình hồi
quy tuyến tính bội để dự đoán PER từ lợi nhuận và tăng trưởng.
Chương trình này rất giống với chương trình 8-2, với sự khác biệt duy nhất,
là khung dữ liệu x của chúng ta có 2 biến.
118
Sử dụng các ước tính, hồi quy tuyến tính bội là:
PER dự đoán = 5,56 + (0,47 * Lợi nhuận) + (0,20 * Tăng trưởng).
Vì phương trình này sử dụng hai biến giải thích, chúng ta phải sử dụng bình
phương r đã điều chỉnh cho hiệu suất của nó. Với r2
được điều chỉnh là 0,54, chúng
ta có thể không xem xét sử dụng mô hình này vì nó nằm dưới mức 0,7. Nhưng nếu
chúng ta thiếu một mô hình thay thế thì sẽ phải sử dụng nó.
Lưu ý: mặc dù chúng ta có thể tạo ra các mô hình thống kê, nhưng đôi khi
mô hình đó không đủ chính xác để sử dụng một cách tự tin. Như thường lệ, có một
ngoại lệ đối với quy tắc, một số nhà quản lý sẽ thích một mô hình yếu hơn là không
có mô hình. Là một nhà phân tích, chúng ta chỉ cung cấp càng nhiều thông tin càng
tốt để các nhà quản lý đưa ra quyết định.
2.2 Tạo tệp đầu ra được ghi điểm
Đôi khi, kết quả là không đủ và chúng ta muốn các giá trị dự đoán trên
khung dữ liệu. Trong Python, chúng ta có thể tạo một tệp đầu ra với dự đoán giá
trị, mà không cần phải tự ghi khung dữ liệu. Có thể nhận được các giá trị dự đoán
bằng cách sử dụng .fittedvalues.
Chương trình 9-2: Nhận giá trị dự đoán.
119
Bây giờ bạn đã tạo một khung dữ liệu với các giá trị dự đoán.
Bài tập 2.1
Một tệp CSV multi2 chứa đơn hàng đồ uống đầu tiên được tiêu thụ tại một
nhà hàng / quán bar dựa trên 31 ngày đầu tiên.
+ Ngày - ngày trong tháng;
+ x1 - Giá đồ uống trung bình;
+ x2 - Đồ uống đã đặt;
+ x3 - Nhiệt độ ban ngày trung bình (F);
+ Y - thức uống còn lại (pint).
Xây dựng mô hình hồi quy tuyến tính bội để dự đoán Y từ x1, x2 và x3.
Ngoài ra, hãy thêm vào khung dữ liệu, multi2, các giá trị được dự đoán trong một
cột.
120
Giải.
Phương trình tuyến tính bội là:
121
Vì mô hình này có 3 biến giải thích, chúng ta sử dụng giá trị r-square đã
điều chỉnh, là 0,6807. Với giá trị gần bằng 0,7, chúng ta có thể tin tưởng sử dụng
mô hình này. Mức cắt 0,7 có thể được coi là một hướng dẫn chứ không phải là một
quy tắc tuyệt đối.
2.3. Thống kê t
Thống kê t được trình bày ngắn gọn trong mục 8. Nếu chúng ta xem kết quả
từ bài tập 9.1 (hình 9.3), chúng ta sẽ nhận thấy các giá trị t và thống kê t. Thống
kê t cung cấp thông tin về mức độ quan trọng của biến đối với mô hình.
Bảng 9.1: Xếp hạng ý nghĩa thống kê t.
Những thống kê này rất quan trọng, vì nó cho chúng ta biết những biến nào
nên được xem xét trong mô hình. Ví dụ 9.3 Sử dụng kết quả trước đó về số lượng
đồ uống còn lại, biến nào không đóng góp đáng kể vào mô hình?
1) Thống kê t được gắn nhãn Pr (> | t |
2) Từ Hình 9.4, giá đồ uống trung bình của X1 trên mỗi panh không đóng
góp (chúng tôi bỏ qua phần chặn). Trong trường hợp này, ta nên chạy lại mô hình
loại trừ biến giải thích 'X1', như được hiển thị trong chương trình 9-4.
122
Chương trình 9-4: Bài tập 9.1 Hồi quy đa tuyến tính không có X1.
1) Với các biến giải thích có thống kê t nhỏ hơn 0,05, các biến giải thích có
thể được sử dụng với độ tin cậy.
2) R-square và r-square được điều chỉnh không giảm đáng kể.
123
Lưu ý: rằng các ước lượng tham số và giá trị chặn đã thay đổi, có nghĩa là
chúng ta có một mô hình đa tuyến tính mới.
Chúng ta đã tiến hành một cách tiếp cận tuần tự được gọi là loại bỏ ngược,
bằng cách loại bỏ một biến hoạt động yếu. Các kỹ thuật lựa chọn biến đổi có xu
hướng gây ra tranh luận giữa các nhà khoa học / nhà thống kê dữ liệu, mà ta sẽ
không đi sâu vào đây.
2.4. Bài tập 9.2
Một tệp CSV có tên là multi3 chứa các giờ dạy hàng tháng cho các trường
được chia theo quận. Trong tệp gồm các cột sau:
+ Học sinh - học sinh trung bình đi học;
+ Sách - sách trong trường;
+ Giáo viên - giờ dạy;
+ Dân số - dân số trong huyện (000);
+ Vắng mặt - tỷ lệ học sinh vắng mặt;
+ Học sinh - giờ học sinh ở trường.
Tạo chế độ Dự đoán giờ dạy chỉ sử dụng các biến có giá trị dự đoán
(p> | t |) dưới 0,05).
Gợi ý: lập mô hình tất cả các biến trước, sau đó giảm từng biến một.
Chương trình 9-5: Bài tập 9.2 phần1.
124
Với những cuốn sách có p> | t | 0f 0.915, đây sẽ là biến đầu tiên được sử
dụng.
Với các học sinh có p> | t | 0f 0,579, đây sẽ là biến tiếp theo.
125
Với sự vắng mặt có p> | t | 0f 0,078, đây sẽ là biến tiếp theo.
Giáo viên = -27.258 + 22,75 * học sinh - 0,727 * dân số.
Với bình phương R-1 được ghi lại ở mỗi lần lặp, đây có thể là một nguyên
nhân đáng lo ngại. Bất kỳ mô hình nào có giá trị bình phương R đã điều chỉnh lớn
hơn 0,95 sẽ cần điều tra. Vì hầu hết có thể, một trong các biến độc lập là một bản
sao gần như của biến phụ thuộc.
126
2.5. Các biến phân loại trong mô hình
Khi xử lý hồi quy, đôi khi chúng ta sử dụng các biến phân loại, cũng như
các biến liên tục. Giải pháp là khá đơn giản; chúng ta tạo các biến giả.
2.5.1. Tạo biến giả
Các biến giả là các biến độc lập có giá trị là 0 hoặc 1.
Ví dụ, nếu chúng ta có một biến được gọi là con có hai giá trị, có và không.
Tạo giá trị giả của biến này yêu cầu: Tạo hai cột mới:
+ Children_y
Trong đó children = 'Y' làm cho cột này bằng 1 khác làm cho nó bằng 0
+ Children_n
Trong đó children = 'N' làm cho cột này bằng 1 khác làm cho nó bằng 0.
Vì vậy, về bản chất, đối với mỗi bin được tạo, chúng ta tạo số cột đó dựa
trên trên mỗi giá trị.
2.5.2. Bẫy biến giả
Khi tạo biến giả, chúng ta cần thận trọng khi sử dụng tất cả các biến giả đã
tạo. Với mọi biến phân loại, với k số thùng, chúng ta chỉ cần k-1 biến giả. Nếu
chúng ta bao gồm tất cả các biến giả, thì mô hình sẽ bị đa tuyến tính (bẫy biến giả).
Khi đó, chúng sẽ có tương quan cao (có thể dự đoán cái này từ cái kia). Sử dụng
ví dụ về biến con với mỗi lần children_y = 1, children_n = 0 và ngược lại.
Do đó, chúng ta có thể sử dụng children_y để dự đoán trẻ em _n. Để giải
quyết vấn đề này, khi tạo mô hình của mình, chúng ta loại trừ một trong các biến
giả khỏi mỗi biến mà muốn lập mô hình. Ví dụ: đối với trẻ em, chỉ có thể đưa vào
children_y. Biến giả bị loại bỏ được cho điểm 0.
2.5.3. Ví dụ về hồi quy phân loại
Các biến phân loại có thể cung cấp cái nhìn sâu sắc hơn về việc dự đoán
kết quả. Ví dụ: giới tính, khu vực của khách hàng hoặc đôi khi chúng ta có thể
muốn nhóm các biến liên tục thành các nhóm. Chẳng hạn, tuổi. Tệp CSV có tên
là categ1 chứa 19 công ty với các biến sau:
+ Công ty - tên công ty;
Lợi nhuận - tỷ suất lợi nhuận của công ty% ;
127
+ Tăng trưởng - tỷ lệ tăng trưởng;
+ PER của công ty - tỷ lệ giá trên thu nhập;
+ (P-E) của công ty - Ngành có 3 loại:
1 = Tài chính.
3 = Máy tính.
Nhập dữ liệu này và xây dựng mô hình hồi quy đa tuyến tính để dự đoán
PER từ lợi nhuận, tăng trưởng và ngành.
128
1) Với một biến phân loại được bao gồm, mỗi thùng được cho điểm riêng
của nó.
a. Ngành 1 (còn thiếu trong kết quả) có giá trị là 0.
b. Không giống như với các biến liên tục, trong đó chúng ta nhân các biến
giải thích với các ước tính, vì phân loại chúng chỉ có một giá trị cố định
2) Kết quả thu thập được đã cho chúng ta thấy rằng lợi nhuận không phải là
một biến giải thích tốt để dự đoán PER. Vì vậy, chúng ta cần mô hình lại, loại trừ
lợi nhuận.
Chương trình 9-10: Bài tập 9.3 part2.
Từ các kết quả gần đây, ngành_3 không phải là dự đoán, do đó chúng ta
phải loại bỏ kết quả này, kết hợp với ngành_1. Điều này đã bị loại bỏ ở giai đoạn
cuối. Một số nhà phân tích sẽ đưa điều này vào mô hình của họ, vì nó là một phần
của một biến.
129
Tăng trưởng có giá trị pr (> | t |) lớn hơn 0,05, vì vậy chúng ta có thể muốn
xóa biến này theo cách thủ công, đây là lựa chọn cá nhân. Trong trường hợp này,
sẽ chỉ viết kết quả cuối cùng.
Đối với ngành 1 và 3: 11.1177 + 0 + (0,3027 * Tăng trưởng);
Đối với ngành 2: 11.177+ 6.1414 + (0,3027 * Tăng trưởng).
Trong suốt bài tập này, điều chỉnh-R -squared, chuyển từ 0,695 xuống
0,676. Điều này cho thấy việc giảm các biến yếu không ảnh hưởng quá nhiều đến
hiệu suất của mô hình.
2.6. Tóm tắt
Việc tạo mô hình hồi quy rất đơn giản. Hy vọng rằng bạn đã nhận thấy rằng
các bước thực hiện như sau:
1) Nhập dữ liệu
2) Xác định mục tiêu của chúng tôi
3) Xác định các biến của chúng tôi
130
4) Tạo mô hình
5) Kiểm tra các biến là dự đoán, nếu không quay lại 3, cho đến khi hoàn
thành
6) Đảm bảo mô hình đủ mạnh để dự đoán (adj. R bình phương).
Mối quan tâm chính khi tạo mô hình luôn là dữ liệu. Nếu không có hiểu biết
thực sự về dữ liệu, mô hình bạn tạo có thể tạo ra kết quả không thực tế với các
biến lạ.
131
3. Hồi quy logistic
Hồi quy logistic được sử dụng để tính xác suất của một sự kiện xảy ra, ví
dụ: người phản hồi chiến dịch thư trực tiếp hoặc khách hàng bị phá sản. Khi xem
xét một hồi quy logistic, chúng ta cộng các điểm số của mô hình, sau đó chuyển
nó thành xác suất, như sẽ được chứng minh.
3.1. Giải thích logit
Logit là một thiết bị để hạn chế xác suất giữa 0 và 1.
Trong đó z là tổ hợp tuyến tính có thể nhận bất kỳ giá trị nào.
Từ hình 10.1, có thể thấy rõ rằng hình dạng mô hình không còn là tuyến tính
nữa và giống với hình chữ s hơn.
10.2 Mô hình hậu cần
10.2.1 Tạo mô hình logistic
Python phù hợp với các mô hình hồi quy logistic tuyến tính cho kết quả nhị
phân (ví dụ: thành công hoặc thất bại). Cách tiếp cận tương tự như chương 9:
- Nhập dữ liệu;
- Kích hoạt thư viện;
- Xác định biến mục tiêu của chúng ta;
- Xác định biến dự báo của chúng ta;
- Tạo biến giả nếu cần;
- Tạo mô hình;
- Giải mã kết quả.
132
3.2. Ví dụ về tạo mô hình hậu cần
Ví dụ này sử dụng tệp CSV có tên là logistic1, nhập tệp này và gọi khung
dữ liệu logistic1. Tệp này có một biến phản hồi nhị phân được gọi là đã bán, giá
trị này bằng 1 nếu một lần bán đã được thực hiện và bằng 0 nếu ngược lại. Có ba
biến dự báo:
- Thu nhập (liên tục);
- Tỷ lệ thế chấp (% tiền lương dành cho thế chấp) (liên tục);
- Cấp (xếp hạng khách hàng) (phân loại / rời rạc).
Bậc thay đổi nhận các giá trị từ 1 đến 4. Các bậc có thứ hạng 1 có uy tín cao
nhất, trong khi những bậc có 4 có uy tín thấp nhất.
Chương trình 10 – 1. Chương trình logistic thứ nhất
Như chúng ta có thể thấy mã trông rất giống với mục 9 (chương trình 9-11),
trong đó sự khác biệt chính duy nhất là 1. thay vì sử dụng OLS, chúng ta đang sử
dụng Logit.
133
Chúng ta có thể coi ‘P> | z | ' với P> | t |. Như chúng ta có thể thấy, tất cả
các biến đều thỏa mãn quy tắc 0,05. Phương trình ở đây là:
Điểm = -3,99 + (thu nhập * 0,0002) + (thế chấp * 0,0804) + (Ước tính bậc)
Nhưng, chúng ta phải chuyển nó thành xác suất:
Để hiểu quá trình này, chúng ta sẽ chia nhỏ điều này bằng Python. Tính
điểm khung dữ liệu bằng Python.
Điểm số rất hữu ích để chứng minh cách chúng ta tính toán các xác suất. Từ
hình 10.2, có các hệ số, nhưng chúng ta cần độ chính xác hơn để tạo ra điểm số.
Chương trình 10-3: Cải thiện mã độ chính xác của hệ số.
+ income = 0.000226;
+ mortgage = 0.080404;
134
+ tier_2 = -0.675443;
+ tier_3 = -1.340204;
+ tier_4 = -1.551464;
+ const = -3.989979.
Using ID 1, Tier=3 as an example:
Sự khác biệt là do làm tròn số.
Lặp lại cho ID 3, trong đó tier = 1.
Một lần nữa, sự khác biệt là do làm tròn, điều này không đáng quan tâm.
Tuy nhiên, như đã đề cập trước đây, chúng ta muốn xác suất chứ không phải điểm
số. Vì vậy có thể tự tính toán hoặc nhờ Python thực hiện.
Chương trình 10-4: Sản xuất mô hình logistic xác suất.
Chương trình 10-4 chuyển tỷ số thành xác suất
Nếu chọn lấy các xác suất ngay lập tức, thì chúng ta có thể sử dụng Chương
trình 10-5:
Sản xuất mô hình logistic xác suất- phiên bản2
+ logistic1['pred_y1']=
điều này cho Python biết rằng chúng ta muốn tạo một biến mới trong
khung dữ liệu đã ghi được gọi là pred_y1.
135
+ pred_y1 result.predict(x)
Điều này yêu cầu Python sử dụng kết quả như dự đoán đã tạo trước đó
(x), sử dụng khung dữ liệu x và áp dụng mô hình trên đó để nhận dự đoán của
chúng ta.
Có thể thấy, các xác suất từ việc sử dụng phương trình, đến sử dụng Python
ngay lập tức cung cấp cùng một câu trả lời. Sử dụng ví dụ trước của chúng ta về
ID 1 và 3.
Đối với điểm ID 1 = -1,56712.
Phủ định đã biến mất khi cả hai phủ định triệt tiêu lẫn nhau.
Do đó, xác suất để những người tiêu dùng đó phù hợp với cùng tiêu chí của
ID 2 của một lần bán hàng là 17,26%.
Đối với ID 3
Do đó, xác suất để những người tiêu dùng đó phù hợp với cùng tiêu chí của
ID 3 của một lần bán hàng là 73,84%. Một câu hỏi phổ biến được đặt ra ở giai
đoạn này là "Tại sao chúng ta lại tính toán xác suất của các sự kiện khi chúng ta
có câu trả lời ở phía trước?" Vì vậy, chúng ta có thể áp dụng mô hình này trên một
136
nhóm dân số khác. Cụ thể, có thể tối đa hóa nỗ lực của mình để đạt được thành
công. Ví dụ: Tại sao lại tập trung nỗ lực vào một khách hàng có xác suất bán hàng
là 17% trong khi chúng ta có một khách hàng khác với 73%? Sử dụng các mô hình
thống kê để giúp chúng ta đưa ra các lựa chọn sáng suốt và thông minh.
Điều này sẽ luôn gợi lên câu hỏi tiếp theo… 'Làm thế nào để biết liệu mô
hình này có tốt hay không?' Đối với mô hình hồi quy đa tuyến tính, chúng ta sử
dụng bình phương R đã điều chỉnh, nhưng vì đường cong logistic không phải là
một đường thẳng, sẽ cần thứ gì khác.
3.3. Phép đo logistic
Như đã trình bày chi tiết trước đây, r-square không phải là một phép đo tốt
cho độ chính xác của mô hình logistic. Trong cuốn sách này, chúng tôi sẽ sử dụng
Gini (Somers ’D).
Gini (Somers ’D).
Mặc dù phương trình của Gini và Somers D là khác nhau, nhưng cả hai đều
có cùng một câu trả lời.
3.3.1. Gini (Somers ’D)
Trước khi bắt đầu cung cấp mã cho Gini (Somers’ D), chúng tôi sẽ giới thiệu
thêm một vài khái niệm ROC (Đặc tính hoạt động của máy thu) và AUC (Vùng
dưới đường cong).
Khi chúng ta thử và dự đoán một kết quả nhị phân (ví dụ: có / không, bán /
không bán), sẽ xem xét tỷ lệ dương tính thực sự (TPR) và tỷ lệ dương tính giả
(FPR). Tiếp theo sau một cách tiếp cận rất đơn giản của một tập dữ liệu giả lập
Bảng 10.1: TPR và FPR.
137
Từ bảng trên, chúng ta có thể thấy cách chúng ta có thể tính toán TPR và
FPR
+ Sắp xếp dữ liệu theo xác suất giảm dần;
+ Cộng dồn mục tiêu;
+ Cộng dồn tích lũy các mục tiêu;
+ TPR là mục tiêu tích lũy chia cho tổng mục tiêu;
+ FPR là mục tiêu không phải mục tiêu tích lũy chia cho tổng số mục tiêu
không phải mục tiêu.
Càng nhiều mục tiêu ở cuối cao hơn của phạm vi xác suất và càng có nhiều
mục tiêu không phải là mục tiêu ở cuối phạm vi xác suất thấp hơn, thì mô hình
càng mạnh.
Sử dụng dữ liệu này, chúng ta có thể xây dựng biểu đồ ROC của mình.
Đưa dữ liệu này vào Excel, sau đó xây dựng biểu đồ phân tán trên các cột
TPR, FPR với nhau. Hình 10.5: Dữ liệu TPR và FPR trong Exel.
138
Tiếp theo, thêm một cơ sở vào biểu đồ, với cơ sở là cả trục X và Y.
Bao gồm các số 0, trên biểu đồ để xây dựng biểu đồ để mọi thứ bắt đầu từ
0, 0 trên biểu đồ.
Đây là một ví dụ về biểu đồ ROC. ROC được sử dụng để đánh giá hiệu suất
của một mô hình hậu cần. Trong ví dụ này, TPR nằm trên trục x. Nó là một trường
hợp hiếm khi xây dựng biểu đồ ROC với ít quan sát (hàng) như vậy, vì chúng ta
nhận được một đường cong lung lay.
Nếu biểu đồ đi theo đường thẳng từ phía dưới bên trái đến phía trên bên
phải (đường cơ sở), thì mô hình không thể phân biệt giữa mục tiêu và không mục
tiêu, vì vậy nó không có sức mạnh. Từ biểu đồ, chúng ta có thể thấy rằng có không
gian giữa cơ sở (AUC) và đường cong, do đó, có sức mạnh trong mô hình này.
Hiệu suất sau đó được tính bằng cách tính Diện tích dưới đường cong
(AUC). Điều này mang lại cho bạn điểm từ 0 đến 1. Điểm 0,5 có nghĩa là không
139
có sức mạnh nào, với bất kỳ giá trị nào gần với một giá trị tiên đoán hơn, điều này
sẽ dẫn chúng ta tính toán Gini (hoặc Somers ’D).
Gini cho chúng ta biết mô hình phân tách mục tiêu và không mục tiêu tốt
như thế nào bằng cách sử dụng xác suất. Python có thể cho phép chúng ta tính toán
Gini bằng cách sử dụng nó để tính Diện tích dưới đường cong (AUC).
Trước hết, hãy lưu bảng dưới dạng tệp CSV, (trong ví dụ này, nó được gọi
là roc.csv).
Bảng 10.3: Roc.csv.
Chương trình 10-6: Tính AUC và Gini bằng Python
1. AUC = roc_auc_score (roc.Target, roc.Probability)
a. AUC là tệp đầu ra của chúng ta;
b. roc_auc_score cho Python biết hàm chúng ta muốn sử dụng;
140
c. roc.Target, roc.Probability, điều này cho Python biết trường với xác suất
và những gì chúng ta đang cố gắng dự đoán
2. Gini = (2 * AUC) -1
a. Phép tính Gini của chúng ta.
3. AUC = 0,68 4. Gini = 0,36.
Ở giai đoạn này, mọi người có xu hướng hỏi, "Gini tốt là gì?" Rất tiếc, không
có câu trả lời chắc chắn, vì nó phụ thuộc vào chất lượng dữ liệu, ngành bạn đang
tham gia và mô hình mới có thực hiện tốt mô hình trước đó không. Nếu bạn tạo
một mô hình mới và nó không hoạt động tốt hơn mô hình cũ, thì các câu hỏi sẽ
được đưa ra về lý do tại sao họ nên sử dụng mô hình mới.
3.4. Hiệu suất của mô hình logistic ban đầu
Sử dụng khung dữ liệu logistic1, được tạo trong chương trình 10.4, bước
đầu tiên của chúng ta sẽ là tạo đường cong ROC bằng Python.
Như mọi khi, chúng ta tuân theo cùng một mẫu, thư viện hoạt động, chạy
chức năng để thu thập số liệu thống kê / đồ thị. Trong trường hợp này, hàm
roc_curve, cung cấp cho chúng ta thống kê chính của chúng ta tpr và fpr (các
141
ngưỡng không được đề cập trong cuốn sách này). Các lệnh đã được trình bày trong
mục 4.
Phần tiếp theo liên quan đến việc tính toán AUC và Gini của chúng ta.
Chương trình 10-8: Tính AUC và Gini.
AUC = 0.6928, Gini = 0.3856.
3.5 Tạo phiếu ghi điểm
3.5.1 Bài tập 10.1: mô hình logistic
Bài tập này sẽ sử dụng kết hợp các tài liệu đã đề cập trước đó để tạo ra một
phiếu ghi điểm. Công ty của bạn muốn tiếp thị một sản phẩm cao cấp cho khách
hàng của mình. Chiến lược quan trọng của họ là không muốn tiếp thị cho những
khách hàng sẽ phá sản trong tương lai. Nhập dữ liệu sample.csv (trong mục 5) và
thay thế các giá trị bị thiếu CCJ_go Government và CCJ_private bằng 0.
Sử dụng dữ liệu này để tạo thẻ điểm hậu cần dự đoán khả năng khách hàng
bị phá sản (target = 1), sử dụng các biến:
+ CCJ_go Government;
+ CCJ_private;
+ bank_balance;
142
+ properties;
+ money_owed.
Ghi vào phiếu ghi điểm để tạo ra một xác suất. Kiểm tra xem các tính toán
của bạn có khớp với giải pháp Python hay không. Đo hiệu suất của mô hình này
tạo ra:
+ Biểu đồ ROC
+ Giá trị AUC
+ Giá trị Gini.
3.5.2. Lời giải bài tập 10.1
Chương trình 10-9: Bài tập 9.1 Lời giải phần 1.
143
Giải pháp đã được chia thành 6 phân đoạn
1) Nhập và làm sạch dữ liệu cơ bản
Có thể, bạn đã tham khảo các chương trước để biết mã này. Như đã đề cập
trước đây, nếu chúng ta có mã sẵn sàng để sử dụng… hãy sử dụng nó.
2)
Tạo biến mục tiêu
và biến dự đoán của
chúng ta Mẹo duy
nhất mà tôi có thể
cung cấp ở đây là
đảm bảo rằng bạn
không thêm bất kỳ chữ hoa nào khi nhập các biến.
3)
144
Từ kết quả, chúng ta nhận được phép tính điểm. Bây giờ có thể tính điểm
của bạn.
4) Cho điểm và tính xác suất
Sử dụng ID 1 làm ví dụ của:
+ CCJ_go Government = 0
+ CCJ_private = 0
145
+ bank_balance = 1884;
+ thuộc tính = 1;
+ amount_owed = 24.
Ví dụ. Sử dụng ID 2:
+ CCJ_government = 0;
+ CCJ_private = 0;
+ bank_balance = 33946;
+ properties = 2;
+ amount_owed = 1.
Sự khác biệt giữa kết quả Python và của chúng ta (như đã đề cập trước
đây) là do làm tròn.
146
Hình 10.11: Gắn xác suất vào khung dữ liệu
Tính xác suất rất dễ dàng, là khi chúng ta có điểm
For ID1, the score = -7.734440
Vì vậy, ID1 có 0,0437% khả năng phá sản.
5) Tạo biểu đồ ROC
147
Hình 10.12: Biểu đồ ROC cho bài tập 10.1
Từ biểu đồ, chúng ta có thể nói rằng chúng ta sẽ có một con số AUC lớn,
điều này ngụ ý rằng mô hình sẽ rất mang tính dự đoán.
6) Tính AUC và Gini
Với giá trị AUC là 0,8939 và Gini là 0,7877, những số liệu này xác nhận
rằng mô hình dự đoán kết quả tốt.
3.6. Tóm tắt
Mục này hy vọng sẽ hiểu được những kiến thức cơ bản và các phép đo chính
khi chúng ta xây dựng một mô hình logistic. Trong một kịch bản thực tế, quá trình
xây dựng mô hình sẽ sử dụng nhiều biến hơn, yêu cầu thử nghiệm thêm và nhiều
vấn đề (thường là dữ liệu).

Phan tich du_lieu_thong_ke_va_python

  • 1.
    1 BỘ GIÁO DỤCVÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC ĐẠI NAM ------------------------------------------------- NGUYỄN VĂN TUẤN PHÂN TÍCH DỮ LIỆU THỐNG KÊ VÀ PYTHON HÀ NỘI, 2021
  • 2.
    2 Chương 1. Thốngkê và khai phá dữ liệu Chương này giới thiệu các kiến thức cơ bản nhất sử dụng trong thống kê. Sử dụng Excel để tính toán các số liệu thống kê. Excel là một công cụ phân tích rất mạnh có thể tính toán nhiều số liệu thống kê, chúng ta sẽ khám phá qua chương này và trong suốt cuốn sách này. Chương này cung cấp thông tin chi tiết về thống kê sử dụng Excel, bao gồm các nội dung và cung cấp cơ sở cho các chương sau. Các nội dung được đề cập của Chương:  Trung bình  Tương quan  Hồi quy tuyến tính Tất cả các hoạt động sẽ được hiển thị và mô tả rõ ràng bằng Exel. 1. Các khái niệm 1.1. Thống kê là gì? Lĩnh vực thống kê liên quan đến việc thu thập, mô tả và khai phá dữ liệu. Chúng ta có thể coi dữ liệu là những sự kiện, dữ kiện và số liệu quan sát được. Một thống kê điển hình mà chúng ta có thể nghe hàng ngày là về thời tiết, ví dụ: Lượng mưa tháng này cao hơn lượng mưa trung bình trong các tháng hoặc, nhiệt độ tháng này nóng hơn nhiệt độ trung bình các tháng. Để có kết luận này chúng ta phải sử dụng các số liệu trung bình của các tháng trước. 1.2. Trung bình, trung vị và mode Trong thống kê, có ba loại trung bình khác nhau:  Trung bình: kết quả thu được bằng cách cộng các số lại với nhau rồi chia tổng số bằng số lượng (thông thường mọi người gọi con số này là Trung bình). Nếu một dãy số liệu thống kê (mẫu): 1 1 1 ,..., . n n i i x x x x n     Nếu mẫu gồm n số liệu 1,..., m x x trong đó mỗi giá trị lặp lại i r lần thì ta có công thức tính trung bình mẫu: 1 1 . m i i i x r x n   
  • 3.
    3  Trung vị(median): là giá trị "giữa" trong danh sách các số. Để tìm ở giữa, dùng giấy bút viết số được liệt kê dưới dạng số đặt hàng, sau đó xác định vị trí giữa. Nếu một dãy số liệu thống kê (mẫu): 1 2 ... , n x x x    khi đó, kí hiệu trung vị là m thì: 1 2 1 2 2 , 2 , , 2 1, . 2 n n n x khi n k k m x x khi n k k                 Z Z  Mode: là giá trị xuất hiện thường xuyên nhất. Nếu không có số lặp lại, không có mode. Ví dụ 1. Sử dụng Excel tính giá trị trung bình, trung vị và mode, cho các số liệu sau: 13, 18, 13, 14, 13, 16, 14, 21, 13. Giải. Nhập số liệu trong Exel ta có: Tại ô C nhập công thức tính trung bình mẫu: = AVERAGE(A1: A9). Thực hiện lệnh ta có kết quả ở hình dưới đây: Sau khi nhập mẫu, ta tính trung vị và mode theo lệnh: median(A1: A9), mode(A1: A9). Ta có kết quả:
  • 4.
    4 1.3. Các phépđo Khi xử lý các số liệu thống kê, chúng ta phải biết độ tin cậy của các số liệu được tạo ra. Sử dụng các phép đo cụ thể, có thể kiểm tra xem các số liệu được tạo ra có thể được sử dụng với độ "tin cậy" hay không. Excel cho phép tính toán một loạt các phép đo: Nếu dữ liệu trong Exel từ ô C1 đến Cn thì:  Range: sự khác biệt giữa số liệu tối đa và số liệu tối thiểu: Range = Max(C1:Cn) – Min(C1:Cn).  Phương sai: giá trị trung bình của các chênh lệch bình phương so với Giá trị trung bình Varian = Var(C1:Cn).  Độ lệch chuẩn: một thống kê phổ biến vì nó cung cấp một chỉ báo về sự thay đổi: của một tập hợp dữ liệu. Tuy nhiên, nó không phải là thống kê tốt nhất để sử dụng khi so sánh các bộ dữ liệu khác nhau, đặc biệt nếu dữ liệu có kích thước khác nhau. Vtdev = Stdev(C1:Cn).  Sai số chuẩn (Standard error): Standard = Stdev(C1:Cn)/Sqrt(Count(C1:Cn)). Kết quả tính toán các thống kê ở ví dụ 1, được thể hiện trong bảng sau:
  • 5.
    5 Ví dụ 2.Cho hai mẫu số liệu sau: Data1 Data2 21.1 14.8 23.5 27.5 16.8 40.6 19.2 8.2 23.3 33.9 22.8 1.7 Hãy tính các thống kê sau với hai mẫu số liệu trên: a. Trung bình b. Median c. Mod d. Phương sai e. Độ lệch chuẩn f. Sai số chuẩn Giải. Kết quả tính thể hiện trong bảng sau: 1.4. Tương quan Sự tương quan cho chúng ta biết liệu hai biến có khác nhau về tính đồng bộ hay không, tức là một tăng cái kia cũng tăng (hoặc giảm). Thống kê tương quan thay đổi giữa 1 và -1: 1: tương quan thuận hoàn hảo, cả hai số liệu đều tăng hoặc giảm cùng với nhau; 0: không có mối tương quan;
  • 6.
    6 -1: tương quanâm hoàn hảo, khi một con số này tăng lên con số kia giảm và ngược lại. Ví dụ 3. Sử dụng Exel tính mối tương quan (hệ số tương quan) giữa các mẫu số liệu sau: a. Data1 với data2; b. Data1 với data3; c. Data1 với data4; với mẫu số liệu cụ thể sau: Giải. Sử dụng Exel ta có kết quả hệ số tương quan của các cặp dữ liệu trên sau đây: Căn cứ bảng trên ta có kết luận:  Dữ liệu 1 tương quan thuận hoàn toàn với dữ liệu 2;  Dữ liệu 1 hoàn toàn tương quan nghịch với dữ liệu 3;  Dữ liệu 1 và dữ liệu 4 hoàn toàn không tương quan, vì vậy Excel trả về lỗi. Trong trường hợp này, mã lỗi giống như 0. Phần tiếp theo của bài tập này bao gồm hai phần: 1) Đổi tên bảng tính;
  • 7.
    7 2) Tạo đồthị dữ liệu tương quan trong Excel. Cụ thể: Đổi tên trang tính Excel, thể hiện trong hình sau: Để dễ dàng tham khảo, trang tính Excel này đã được đổi tên thành tương quan. Cụ thể: 1) Nhấp chuột phải vào hộp ở dưới cùng a. Bước 1. Chọn Rename như được đánh dấu; b. Bước 2. Ghi thành Correlation. Đổi tên trang tính trong Excel rất đơn giản và có thể giúp chúng ta xác định thông tin quan trọng dễ dàng hơn. Excel có thể cung cấp các biểu đồ sâu sắc một cách dễ dàng. Trong ví dụ này, chúng ta sẽ tạo một biểu đồ rất đơn giản bằng cách sử dụng biểu đồ phân tán. Biểu đồ phân tán có nhiều chức năng hơn biểu đồ đường, đó là lý do tại sao chúng ta sử dụng chúng ở đây. Hướng dẫn vẽ các biểu đồ phân tán của ví dụ 3. Trong Exel theo hướng dẫn sau:
  • 8.
    8 Các bước làm,cụ thể như sau: 1) Đánh dấu các ô A1 đến B11; 2) Chọn tab CHÈN ở đầu màn hình; 3) Nhấp vào nút biểu đồ phân tán; 4) Chọn Phân tán với các đường mịn và điểm đánh dấu. Khi chúng ta cần ánh xạ data1 với data3 và data1 với data4, thực yêu như sau: 1) Bấm vào biểu đồ vừa tạo bằng chuột; 2) Nhấp chuột phải vào biểu đồ và nhấp vào Chọn dữ liệu như được hiển thị trong hình dưới: Khi đó, chúng ta cần kích: on add.
  • 9.
    9 1) Ô trắnglà tên chúng ta muốn đặt cho dòng Dữ liệu 3; 2) Trục x là trục hoành, vì vậy sẽ cần dữ liệu từ dữ liệu 1. Kích chọn vào hộp: Đánh dấu các ô từ A2 đến A11; 3) Trục y là trục tung, vì vậy sẽ cần dữ liệu từ dữ liệu 3. Nhấp vào hộp: Đánh dấu các ô C2: C11 Như bạn sẽ thấy Exel sẽ điền đủ các thông tin cần thiết vào ô số trắng. Giải thích công thức này như sau: a. Tương quan - tên của trang tính b. ! - cho Excel biết rằng tên của trang tính đã hoàn thành và mong đợi các tham chiếu ô C. c. $ A $ 2: $ A $ 11- cho Excel biết rằng chúng ta sử dụng các ô từ A2 đến A11. Dấu $ cho Excel biết rằng đây là một ô tuyệt đối giải quyết tham chiếu ô tuyệt đối biểu thị rằng nếu ta sao chép công thức này ở nơi khác, các ô được đề cử sẽ không thay đổi. Lặp lại điều trên cho dữ liệu 4, ta nhận được: Khi đó, chúng ta nhận được đồ thị sau:
  • 10.
    10 Với biểu đồvẫn được đánh dấu, nhấp vào quick layout ta có thể thay đổi giao diện của đồ thị (1) ở trên: Ta có nhiều loại biểu đồ để lựa chọn, hãy nhấp vào biểu đồ đầu tiên ở góc trên cùng bên trái. Ki đó, thay đổi giao diện của đồ thị như sau: Bây giờ chúng ta có thể điền thêm thông tin vào biểu đồ. Điều này sẽ liên quan đến việc sử dụng chuột để nhấp vào phần có liên quan của biểu đồ. 1) Nhấp vào Tiêu đề biểu đồ, để đặt tên cho biểu đồ a. Vẽ biểu đồ tương quan. 2) Nhấp vào ‘Tiêu đề trục’ trên trục y (dọc). a. Điền các số. 3) Nhấp vào ‘Tiêu đề trục’ trên trục x (nằm ngang). a. Dữ liệu 1
  • 11.
    11 Ta nhận đượcbiểu đồ tương quan sau: Ví dụ 4. Hệ số tương quan Ví dụ này yêu cầu tính toán mối tương quan giữa trí thông minh và đối tác trong một mối quan hệ. Bảng sau chứa các kết quả thử nghiệm, xếp hạng trong số 30, sự thông minh của các cặp vợ chồng trong một mối quan hệ. Có mối tương quan giữa: Đối tác 1 và đối tác 2 Xếp hạng đối tác 1 và xếp hạng đối tác 2, ở đó: (1 = thấp nhất, 6 = cao nhất). Giải. Sử dụng tìm hệ số tương quan sau: Các số liệu trên 0,7 hoặc dưới -0,7 có xu hướng ngụ ý mối tương quan. Hình bên cho chúng ta thấy rằng có một mối quan hệ giữa trí thông minh và đối tác, do thống kê tương quan là trên 0,7. Lưu ý, mối tương quan không bao hàm nguyên nhân. Ví dụ, trong ví dụ này, chúng ta không thể nói rằng hẹn hò với những người thông minh gây ra sự thông minh.
  • 12.
    12 1.5. Hồi quytuyến tính đơn giản Một nhiệm vụ phổ biến khác trong phân tích dữ liệu là điều tra mối liên hệ giữa hai biến bằng cách sử dụng hồi quy. Hồi quy được sử dụng khi chúng ta có lý do để tin rằng những thay đổi trong một biến số này gây ra những thay đổi trong một biến số khác. Mối tương quan không phải là bằng chứng cho mối quan hệ nhân quả, nhưng rất thường xuyên chúng ta nhận thức được mối quan hệ nhân quả và chúng ta thiết kế một thí nghiệm để điều tra sâu hơn về mối quan hệ đó. Loại mối quan hệ nhân quả đơn giản nhất là mối quan hệ đường thẳng, có thể được phân tích bằng cách sử dụng hồi quy tuyến tính. Y = mX. Điều này phù hợp với một đường thẳng với dữ liệu bằng cách sử dụng phương pháp bình phương nhỏ nhất và cung cấp các giá trị của hệ số góc (m) và giao điểm (c) xác định đường thẳng. Có một số phương pháp khác nhau để tính toán độ dốc và điểm chặn của đường hồi quy tuyến tính trong Excel, nhưng phương pháp đơn giản nhất là tạo biểu đồ phân tán và sử dụng tính năng ‘Thêm đường xu hướng’ (như minh họa tiếp theo). Ví dụ. Hồi quy tuyến tính đơn giản Chúng ta muốn kiểm tra xem có mối quan hệ giữa độ dày của miếng bọt biển và độ hấp thụ chất lỏng của nó hay không. Thiết kế một thí nghiệm với các mức độ dày khác nhau của bọt biển, với lượng chất lỏng được hấp thụ. Kết quả được ghi trong bảng sau: Sao chép các số liệu từ bảng 1.5 vào Excel và tạo biểu đồ phân tán (không nối), như trong hình sau:
  • 13.
    13 Các bước nhậpdữ liệu vào Exel được thể hiện: 1) Đánh dấu các ô từ A1 đến B12; 2) Chọn tab INSERT; 3) Nhấp vào nút biểu đồ phân tán; 4) Chọn Scatter, nhưng lần này, ta chọn biểu đồ đầu tiên. Để khám phá xem có mối quan hệ giữa độ dày của miếng bọt biển và khả năng thấm hút hay không, chúng tôi thực hiện như sau: 1) Nhấp chuột phải vào bất kỳ dấu chấm nào trên biểu đồ; 2) Một menu sẽ bật lên a. Nhấp vào Add Trendline (thêm đường xu hướng), Hình 1.18: Lựa chọn phương trình và r-square:
  • 14.
    14 Trong phần lựachọn menu, hãy đánh dấu vào các hộp sau: 1) Hiển thị phương trình trên biểu đồ; 2) Hiển thị giá trị bình phương R trên biểu đồ. Phương trình đầy đủ của các giá trị độ dốc và điểm chặn hiện được hiển thị trên biểu đồ (như trong hình 1.18). Excel đã tạo ra một phương trình hồi quy tuyến tính đơn giản, cung cấp cho chúng ta cái nhìn sâu sắc về mối quan hệ giữa độ dày của miếng bọt biển và khả năng thấm hút của nó. Y = mX. Phương trình trên đại diện cho một hồi quy tuyến tính đơn giản, trong đó  Y là những gì chúng ta đang cố gắng dự đoán;  m là gradient (giá trị chúng ta nhân với giá trị ‘X’);  X sẽ là độ dày của bọt biển;  C là điểm giao nhau (nơi đường thẳng cắt trục y). Sử dụng chức năng quick layout function (như mô tả trong hình 1.13), biểu đồ đã được gắn nhãn như hình minh họa  Tiêu đề: đồ thị hồi quy tuyến tính đơn giản  Trục X: Độ dày miếng bọt biển (mm)  Trục Y: Độ hấp thụ (ml).
  • 15.
    15 Đường thẳng vẽbiểu đồ mối quan hệ giữa trục y (độ hấp thụ) và trục x (độ dày miếng bọt biển). Thay m và C vào phương trình trên sẽ tạo ra: Y = 0.1392 X + 0.0668. Đối với mỗi mm độ dày, chúng ta nên mong đợi nó hấp thụ thêm 0,1392ml chất (cộng thêm 0,068ml). Nếu ai đó hỏi, "Chúng ta nên mong đợi bao nhiêu khả năng thấm hút từ một miếng bọt biển dày 10mm", chúng tôi có thể đưa ra câu trả lời. Sử dụng Y = mX + C, chúng ta biết rằng: m = 0,1392, C = 0,0668, X = 10. R2 là gì? R²: thước đo mức độ phù hợp của hồi quy tuyến tính. Giá trị R² là một phân số từ 0,0 đến 1,0 và không có đơn vị. Giá trị R² là 0,0 có nghĩa là biết X không giúp ta dự đoán Y. Không có mối quan hệ tuyến tính nào giữa X và Y và đường phù hợp nhất là đường nằm ngang đi qua giá trị trung bình của tất cả các giá trị Y. Khi R² = 1,0, tất cả các điểm nằm chính xác trên một đường thẳng không có phân tán. Biết X cho phép ta dự đoán Y một cách hoàn hảo. Giá trị R2 = 0,7 có nghĩa là phù hợp tốt.
  • 16.
    16 Từ đồ thịđược hiển thị trước đây (hình 1.19), chúng ta thấy rằng mô hình hồi quy tạo ra giá trị r2 = 0,9095. Điều này có nghĩa là mô hình dự đoán tỷ lệ hấp thụ đủ tốt để chúng ta sử dụng mô hình. Cách tính toán thủ công một hồi quy tuyến tính đơn giản và r2 sẽ được trình bày sau. Ví dụ 1. Bài tập này muốn khám phá xem có mối quan hệ giữa tuổi tác và thị lực hay không. Bảng 1.6 chứa dữ liệu chi tiết về độ tuổi và tình trạng suy giảm thị lực của mắt. Sử dụng dữ liệu này để tạo một mô hình tuyến tính đơn giản dự đoán tỷ lệ suy giảm của thị giác theo độ tuổi. Ngoài ra, chúng ta có thể sử dụng mô hình một cách tự tin không? Giải.
  • 17.
    17 Từ hình 1.22,có thể quan sát thấy rằng khi tuổi tác tăng lên, chúng ta kỳ vọng tỷ lệ giảm thị lực sẽ tăng 0,1182% khi tuổi tác tăng lên. Với r2 = 0,7461, chúng ta có thể tự tin sử dụng mô hình này. 1.6 Tóm tắt Chương này trình bày các khái niệm cơ bản về thống kê theo cách áp dụng. Cuốn sách này được thiết kế để dành nhiều hơn cho ứng dụng hơn là lý thuyết. Theo kinh nghiệm của mình, tôi nhận thấy Excel là công cụ hoàn hảo để dạy ứng dụng thống kê, do tính linh hoạt và khả năng hiển thị của nó. Trong Excel, rất khó để ẩn kết quả và các phép tính.
  • 18.
    18 2. Kiểm địnhthống kê Mục này nhằm mục đích phát triển sự hiểu biết sâu hơn về thống kê trong Excel. Sử dụng nhiều ví dụ và bài tập, mục này sẽ bao gồm các chủ đề:  Phân bố  Giả thuyết vô hiệu  Kiểm định T  Kiểm định 2  (Khi bình phương). 2.1 Phân bố Bất cứ khi nào chúng ta nhìn vào số liệu thống kê, chúng ta phải xem xét sự phân bố. Phần lớn các lần phân bố sẽ được tập trung xung quanh giá trị trung bình, điều này được gọi là phân bố chuẩn. Phân bố chuẩn là gì? Phân bố chuẩn là một phân bố liên tục có dạng "hình chuông". Các phân bố bình thường có thể ước tính xác suất trong một khoảng giá trị dữ liệu liên tục. Trong phân bố chuẩn, giá trị trung bình, trung vị và chế độ giống nhau. Dưới đây là một ví dụ về một biểu đồ phân bố chuẩn hoàn hảo. 2.2. Kiểm định giả thiết thống kê Căn cứ vào số liệu thu được, hãy cho một kết luận về giả thiết thống kê nào đó mà ta đang quan tâm. Giả thiết thống kê là một giả thiết về phân bố đang xét. Các ví dụ.  Không có mối quan hệ giữa tuổi tác và hiệu suất thị lực;  Không có mối quan hệ nào giữa sâu răng và đau răng.
  • 19.
    19 Giả thuyết đượcđưa ra kiểm nghiệm được gọi là ‘Giả thiết không’. Đó là giả thiết mà ta nghi ngờ muốn bác bỏ. Như vậy khi bác bỏ ‘Giả thiết không’ thì điều ngược lại sẽ được chấp nhận. Vậy chúng ta bác bỏ giả thiết không bằng cách nào? Tiến hành một số thử nghiệm thống kê nhất định, chúng ta có thể tính toán xác suất (P) để xác định liệu chúng ta có thể chứng minh hoặc bác bỏ giả thuyết không hay không. Theo nguyên tắc chung, nếu P nhỏ hơn 0,05 (5%) thì chúng ta có thể nói rằng có một xác suất đáng kể rằng sự kiện đó không xảy ra một cách tình cờ, vì vậy chúng ta có thể bác bỏ giả thuyết không. 2.3 Kiểm định t (t test) Một trong những phép thử thống kê so sánh phổ biến nhất được sử dụng được gọi là kiểm định t. Điều này được sử dụng khi chỉ có hai tập dữ liệu được phân phối bình thường để so sánh. Trong Excel, giá trị này được tính bằng công thức: = TTEST(range 1, range 2, tails, type) Điều này trả về P trực tiếp (không phải bản thân thống kê t, không được báo cáo và chúng tôi không cần). Như có thể thấy trong công thức Excel ở trên, hai thuật ngữ thống kê mới đã được giới thiệu:  Tails;  Type. Cụ thể, xét: Tails: Kiểm định t phụ thuộc vào sự phân bố của dữ liệu. Bằng cách chọn một bên, bạn chỉ quan tâm đến một phần của phân phối (hoặc thấp nhất hoặc cao nhất). Đối với hai kiểm định t, chúng ta quan tâm đến tất cả sự phân bố.
  • 20.
    20 Tails: có thểlà 1 kiểm định t một bên hoặc 2 kiểm định t cho hai bên. Nói chung, chúng ta sử dụng 2 kiểm định t cho hai phía, kiểm tra sự khác biệt bất kể dấu hiệu (số âm hoặc số dương). Thể loại: Có ba loại kiểm định t có sẵn trong Excel. Giả sử chúng ta muốn kiểm tra xem sự phát triển của thực vật sẽ tăng lên sau khi chuyển đến một ngôi nhà xanh hay tốc độ thở tăng lên sau khi chạy lên đồi. Trong những trường hợp này, bạn sẽ so sánh nhịp thở của những người giống nhau hoặc sự phát triển của cùng một chậu cây trước và sau nhà kính. Điều này sẽ yêu cầu một "được ghép nối" hoặc T-test "phụ thuộc". Excel gọi đây là kiểm định "loại 1". Hãy xem xét một tình huống khác. Giả sử chúng ta muốn biết liệu sinh viên nghệ thuật có ngủ nhiều hơn sinh viên khoa học hay không. Sau đó, chúng ta sẽ có hai nhóm đối tượng thử nghiệm, mỗi đối tượng duy nhất trong nhóm của họ ( sẽ không lấy 2 số đo trên mỗi người). Đối với trường hợp này, ta sẽ sử dụng thử nghiệm t "không ghép cặp" hoặc "độc lập". Excel gọi các bài kiểm tra này là "loại 2" hoặc "loại 3". Bây giờ, phần khó khăn là quyết định sử dụng kiểm định t nào nào trong số hai kiểm định này. Độ lệch chuẩn đối với cả hai nhóm là như nhau hay chúng khác nhau? Có thể kiểm tra thống kê này, nhưng nếu nghi ngờ, hãy sử dụng "loại 3" cho dữ liệu được ghép nối phương sai không bằng nhau (trong đó các tập hợp là từ các cá nhân khác nhau) và cả hai đều phổ biến. Ví dụ 1. Trong ví dụ này, chúng ta muốn kiểm tra hiệu quả của một loại thuốc mới. Hỏi một lựa chọn ngẫu nhiên về tình trạng sức khỏe của sinh viên (điểm 0 đến 20). Sau đó mà không nói với họ, ta bắt đầu cho họ một loại thuốc chưa được kiểm tra. Sau một tuần, hỏi những người tương tự về tình trạng sức khỏe của họ. Kết quả được ghi lại trong bản sau: Các câu hỏi sau với sinh viên: 1) Giả thuyết không của bạn là gì? 2) Tính giá trị trung bình & độ lệch chuẩn; 3) Chúng có tương quan với nhau không? 4) Tính toán kiểm định t để theo dõi xem có sự khác biệt về sức khỏe của sinh viênhay không?
  • 21.
    21 Giải. 1) Giảthuyết không: Không có mối quan hệ nào giữa thuốc và tình trạng sức khỏe tốt hơn. 3) Hai tập dữ liệu không tương quan với nhau. 4) Đối với kiểm định t, chúng tôi sẽ sử dụng kiểu hai phía (2). Vì chúng ta đang sử dụng cùng một người trong cuộc thử nghiệm, điều trị sau và trước khi sử dụng thuốc, điều này đòi hỏi một kiểm định loại 1, như thể hiện trong hình 2.1. Từ kết quả kiểm định t, chúng ta có thể xác định rằng cơ hội của con số này xảy ra một cách tình cờ (với giả thuyết không) là khoảng .014 (hoặc 1,4%). Do vậy, từ kết quả về mặt thống kê…. Chúng ta bác bỏ giả thuyết không để ủng hộ giải pháp thay thế. Chỉ một hoặc hai lần trong số 100 lần, nếu chúng ta lặp lại thí nghiệm này (và giả thuyết không là đúng) chúng ta sẽ nhận được thống kê t có kích thước như vậy. Từ đó, chúng ta kết luận rằng nhiều khả năng là do một số nguyên nhân có hệ thống, có chủ ý. Nếu tất cả các nhiễu khác được loại bỏ, nguyên nhân có hệ thống này phải có là thuốc. Hay nói một cách đơn giản hơn, loại thuốc này đã thay đổi hạnh phúc của sinh viên một cách tích cực. Ví dụ 2. Giả sử, bạn đã trở thành một giáo viên và được một công ty dược phẩm tiếp cận để thử nghiệm một loại thuốc mới được cho là có tác dụng tăng cường trí thông minh của trẻ em. Bạn chia lớp thành 2 nhóm ngẫu nhiên, Nhóm 1 uống thuốc mới với Nhóm 2 là nhóm đối chứng (uống giả dược). Mỗi nhóm ngồi kiểm tra, sau 2 tuần các em dùng thuốc thì lớp ngồi một bài kiểm tra mới. Sự thay đổi điểm thi được ghi lại như trong bảng 2.2.
  • 22.
    22 Hỏi: a) Giả thuyếtkhông của bạn là gì? b) Sử dụng Excel để tính giá trị trung bình, độ lệch chuẩn. c) Chúng có tương quan với nhau không? Kết quả có đáng kể không (bạn sẽ sử dụng loại nào)? Giải. a) Giả thuyết Null Thuốc không ảnh hưởng đến trí thông minh của trẻ em. b) Dữ liệu không tương quan. c) Đối với phép thử t, chúng ta đã chọn loại kiểm định t hai phía (2) và vì chúng ta không sử dụng cùng một người trong thử nghiệm, điều này yêu cầu một phép thử loại 3, như thể hiện trong hình 2.6. Từ kết quả kiểm định t, chúng ta có thể xác định rằng xác suất con số này xảy ra một cách tình cờ (với giả thuyết không) là khoảng 0,0011 (hoặc 0,11%). Trung bình, trí thông minh của một đứa trẻ tăng 15,20 điểm. Phép thử t cho ra con số 0,001, có nghĩa là những kết quả này rất quan trọng và chỉ có thể xảy ra tình cờ 0,1% số lần. Do đó, chúng ta có thể từ chối giả thiết không. Nghĩa là thuốc cải thiện điểm kiểm tra. 2.4. Kiểm định Khi bình phương 2 ( )  Cho đến nay chúng ta chỉ quan tâm đến dữ liệu đo lường. Đôi khi, kết quả không phải là phép đo mà là số lượng (tần suất), chẳng hạn như số người phản hồi
  • 23.
    23 chiến dịch thưtiếp thị. Với dữ liệu tần suất, ta không nên sử dụng kiểm định t mà thay vào đó hãy sử dụng kiểm định 'chi-bình phương' (χ2 ). χ2 được sử dụng để so sánh dữ liệu tần suất trong các danh mục khác nhau với dữ liệu dự kiến. Công thức Exel: = CHITEST(observed range expected range) Điều này trả về xác suất P rằng giả thuyết không là đúng. Thống kê khi bình phương so sánh những quan sát được quan sát với những quan sát mong đợi dưới giả thiết không có mối liên quan giữa phân loại hàng và cột. Thống kê khi bình phương có thể được sử dụng để kiểm tra giả thuyết không có mối liên hệ giữa hai hoặc nhiều nhóm, quần thể hoặc tiêu chí. Nếu P nhỏ hơn 5% thì dữ liệu không phù hợp với lý thuyết, và nếu P lớn hơn 5% thì dữ liệu đồng ý với lý thuyết). Ví dụ 1. Chúng ta đi dạo trong một khu rừng xinh xắn và nhận xét về màu sắc của những quả táo. Chúng ta dự kiến sẽ thấy ¾ táo đỏ và ¼ táo xanh. Sau khi đếm số táo trong rừng, kết quả đã được ghi lại ở bảng dưới: Đối với khi bình phương, chúng ta kiểm tra kết quả thực tế so với những gì chúng tôi mong đợi. Do đó chúng ta tính toán lượng táo dự kiến cho mỗi màu. Có tổng cộng 730 quả táo và dự đoán ¾ quả là màu đỏ và ¼ quả xanh. Với Excel, kỳ vọng được tính toán dễ dàng: Bây giờ chúng ta đã có các số liệu quan sát và dự kiến, thống kê khi-bình phương có thể được tính toán trong Exel nhu dưới đây:
  • 24.
    24 Với giá trịkhi-bình phương cao (trên 0,05), chúng ta có thể nói rằng lý thuyết của chúng ta là đúng. Điều quan sát được là gần với dự kiến, do đó chứng minh lý thuyết của chúng ta. LƯU Ý: lý do tại sao chúng ta sử dụng khi-bình phương chứ không phải số học đơn giản, là để chắc chắn rằng kết quả của chúng ta là đáng kể và chúng ta có thể công bố kết quả của mình một cách tự tin. Ví dụ 2. Ví dụ này sử dụng thống kê chiến dịch tiếp thị. Một chiến dịch gửi thư gồm 1000 bức thư chia cho 500 nam và 500 cho nữ đã được tiến hành. Chúng ta kỳ vọng nam giới sẽ phản hồi gấp đôi so với nữ giới. Do đó, cứ 30 câu trả lời, chúng tôi mong đợi 10 câu trả lời từ phụ nữ và 20 câu trả lời từ nam giới. Kết quả được ghi trong bảng 2.4. Lý thuyết của chúng ta có đúng không? Giải. Với giá trị khi-bình phương nhỏ hơn 0,05, giả thuyết của chúng ta đã sai. Vậy, nam giới không đại diện cho 2/3 số phản hồi gửi thư. LƯU Ý: Như đã đề cập trước đây, chúng ta sử dụng thống kê khi-bình phương để cho phép chúng ta công bố kết quả một cách tự tin.
  • 25.
    25 2.5 Kiểm địnhchi bình phương kết hợp Kiểm định khi bình phương cũng có thể được sử dụng để điều tra mối liên hệ giữa dữ liệu tần số trong hai nhóm riêng biệt. Đây được gọi là kiểm định khi bình phương kết hợp. Dữ liệu mong đợi được tính toán bằng cách giả định rằng số lượng trong một nhóm không bị ảnh hưởng bởi số lượng trong một nhóm khác. Nói cách khác, chúng ta đang kiểm tra xem có sự liên quan giữa hai nhóm hay không. Nếu P nhỏ hơn 5% thì có một mối liên hệ đáng kể giữa hai nhóm, nhưng nếu P lớn hơn 5% thì hai nhóm là độc lập. Ví dụ. Về phép kiểm tra liên kết chi bình phương Trong trường hợp này, chúng ta sẽ xem xét một chiến dịch tiếp thị khác. Các câu hỏi được đặt ra liệu thời gian trong ngày có ảnh hưởng đến phản hồi của chiến dịch tiếp thị hay không. Như trước đây, chúng ta đo lường phản hồi (quan sát được), nhưng đối với dự kiến, chúng ta phải tính toán dự kiến bằng cách sử dụng các tổng (như trong hình 2.10). Giải. Sử dụng Exel tính ta có kết quả thể hiện trong bảng sau: Với giá trị chi-bình phương thấp như vậy (dưới 5%), chúng ta có thể giả định rằng có mối quan hệ chặt chẽ giữa thời gian gửi email và quảng cáo trong ngày. 2.6 Tóm tắt Mục tiêu chính của chương này là chứng minh rằng trong thống kê, thường có nhiều cách để tiến hành phân tích mà chúng ta yêu cầu. Khi lần đầu tiên bắt đầu thống kê, mọi người luôn đặt câu hỏi về giả thuyết không và tự hỏi tại sao chúng ta lại cố gắng chứng minh điều ngược lại, vì vậy chúng ta đã chỉ đến 'giả thuyết thay thế', ngược lại với giả thuyết không.
  • 26.
    26 3. Khai phádữ liệu trong Excel Khai phá dữ liệu là một công cụ rất mạnh mẽ có thể xác định vị trí của thông tin sâu sắc để cho phép những người ra quyết định xây dựng chiến lược. Có rất nhiều chiến lược và công cụ khai phá dữ liệu có sẵn, nhưng đối với cuốn sách này, chúng ta sẽ tập trung vào cây quyết định. Mục này được xây dựng dựa trên các mục trước để cho phép chúng ta chuyển sang cấp độ tiếp theo. Mục này sẽ bao gồm những nội dung sau: • Hiểu tại sao chúng ta sử dụng cây quyết định • Cách sử dụng thống kê Chi- square một cách hiệu quả và trực quan • Tạo cây quyết định • Cung cấp những phát hiện chính từ cây quyết định. 3.1 Cây quyết định Cây quyết định hiển thị ánh xạ của các hành vi phức tạp thành một biểu đồ đơn giản. Sử dụng kết hợp các công cụ thống kê và cách hiểu thông thường, các quy tắc đơn giản có thể được tạo ra để cung cấp thông tin chi tiết chính. Chúng chủ yếu được sử dụng để tạo các quy tắc cho kết quả nhị phân (lưỡng phân), ví dụ: có, không. 3.1.1 Định nghĩa Hình dưới đây chứa hình ảnh của một cây quyết định đơn giản. Ba mươi người được khảo sát bên ngoài một cửa hàng DIY hỏi họ những yếu tố nào họ sẽ cân nhắc để hoàn thành nhiệm vụ của mình trong ngày. Các kết quả đã được trình bày trong một cây quyết định.
  • 27.
    27 Sử dụng câyquyết định trong hình trên, những người quan tâm đến một môn thể thao cụ thể không có khả năng tự làm. Đối với những người không nhận ra có môn thể thao trên TV (không), thì thời tiết là một yếu tố chính. Cây quyết định có thể tạo ra một câu chuyện dễ theo dõi và dễ hiểu. Các thuật ngữ chính được sử dụng như sau:  Biến phụ thuộc: biến đích, biến gốc.  Biến giải thích / độc lập: các biến tạo ra quy tắc.  Biến liên tục: một biến dựa trên số (ví dụ: tuổi / lương).  Biến số: một biến dựa trên ký tự (ví dụ: vùng).  Biến thứ tự: Một biến thứ tự tương tự như một biến phân loại. Sự khác biệt giữa hai biến là có thứ tự rõ ràng của các biến.  Bin (thùng): biến phân loại được chia thành gì (ví dụ: thể thao trên TV được chia thành không, có (quan tâm), có (không quan tâm).  Cắt tỉa: Đôi khi cây có thể chứa quá nhiều chi tiết. Vì vậy chúng tôi ‘Cắt tỉa’ cây ở mức độ thích hợp cho phù hợp với thực tiễn. 3.1.2 Chúng ta quyết định nút như thế nào? Như thường lệ, có nhiều phương pháp để thực hiện bất kỳ điều gì trong thống kê, bao gồm cả cây quyết định. Trong mục này, chúng ta sẽ sử dụng phương pháp CHAID. CHAID là viết tắt của Khi-square Automatic Interaction Detector (hoặc Detection, tùy thuộc vào nguồn được trích). Vì chúng ta đã có hiểu biết về khi bình phương, nên sử dụng phương pháp khi bình phương để tạo ra cây quyết định. Thống kê khi bình phương cho phép chúng ta khám phá các biến (dựa trên phân loại) cung cấp sự phân biệt rõ ràng giữa các thành phần khác nhau của chúng (thùng). Thống kê khi bình phương được sử dụng để điều tra xem liệu phân phối của các biến phân loại có khác nhau hay không. 3.2 Chuyển một biến liên tục thành một biến phân loại Việc chuyển đổi một biến số thành đặc tính rất đơn giản, chúng ta chỉ cần tính các bin 'tốt nhất'. Nếu chúng ta sử dụng phỏng đoán, điều này có thể tạo ra các bin không có 'mục tiêu', điều này sẽ không cho phép thực hiện thống kê khi- bình phương. Trước tiên, hãy tải xuống tệp nhị phân sổ làm việc Excel. Sổ làm việc này trình bày chi tiết doanh số bán một sản phẩm với các đặc điểm cơ bản của
  • 28.
    28 khách hàng. Giaiđoạn tiếp theo đòi hỏi việc phân đoạn các biến giải thích liên tục thành các tỷ lệ có kích thước bằng nhau dựa trên biến mục tiêu (không phải tổng số quan sát), như sẽ được minh họa trong ví dụ 1 sau: Ví dụ 1. Sổ làm việc Excel, nhị phân, có một biến phản hồi nhị phân được gọi là đã bán, giá trị này bằng 1 nếu một lần bán đã được thực hiện và bằng 0 nếu không. Sổ làm việc này cũng chứa ba biến dự báo: Thu nhập (liên tục); Thế chấp% (% tiền lương được sử dụng để trả tiền thế chấp) (liên tục); Tier (thứ hạng khách hàng) (phân loại / rời rạc). Bậc thay đổi nhận các giá trị từ 1 đến 4. Các bậc có thứ hạng 1 có uy tín cao nhất, trong khi những bậc có 4 có uy tín thấp nhất. Đầu tiên, chuyển đổi các biến liên tục thành các biến phân loại, với số lượng mục tiêu bằng nhau trong mỗi bin (phân đoạn). Điều này yêu cầu tạo một bảng tính mới với tất cả các cột, nhưng chỉ khi cột đã bán = 1. Sắp xếp bảng tính Excel theo số lượng đã bán (lớn nhất đến nhỏ nhất). Sao chép và dán tất cả dữ liệu mà đã bán = 1 vào một trang tính mới. Phải có 89 khách hàng mà cờ bán hàng = 1. Giai đoạn tiếp theo yêu cầu sản xuất 4 bin để thu nhập và thế chấp. Vì chúng tôi muốn mỗi bin có số lượng mục tiêu gần như nhau, hãy đo các giá trị ở mỗi phần tư. Sắp xếp trang tính mới này theo thu nhập. Tại dòng 22, 44, 66 ghi lại các giá trị này.
  • 29.
    29  Ở dòng22, thu nhập bằng 5200;  Ở dòng 44, thu nhập bằng 6000;  Tại dòng 66, thu nhập bằng 6800. Không cần biết con số cuối cùng vì bất kỳ số nào trên 6800 sẽ đại diện cho bin thứ tư và cuối cùng của chúng ta. Tiếp theo, sắp xếp trang tính mới này theo% thế chấp. Tại dòng 22, 44, 66 ghi lại các giá trị này. Ở dòng 22,% thế chấp bằng 31,7. Ở dòng 44,% thế chấp bằng 34,9. Ở dòng 66,% thế chấp bằng 37,1. Không cần biết con số cuối cùng vì bất kỳ số nào trên 37,1 sẽ đại diện cho bin thứ tư và cuối cùng của chúng ta. Phần tiếp theo trình bày chi tiết về hai phương pháp tạo cột mới với bin. 3.2.2 Phương pháp 1 tạo bins - sao chép và dán Phương pháp đầu tiên là phương pháp đơn giản nhất nhưng có thể gây mệt mỏi nếu chúng ta có dữ liệu với hơn 10000 hàng. Đầu tiên, hãy sắp xếp trang tính Excel theo thu nhập và trong nhãn cột F nó là "nhóm thu nhập". Điền vào cột mới này nếu thích hợp:  5200 trở xuống;  5201 đến 6000;  6001 đến 6800 6801 trở lên. Lặp lại cho một cột mới được gọi là nhóm thế chấp:  31,7 trở xuống;  31,8 đến 34,9;  35,0 đến 37,1;  37,2 trở lên. Độ chính xác là chìa khóa khi phân loại các cột thu nhập và% thế chấp. Hình sau: Tạo các bin mới bằng cách sử dụng sao chép và dán.
  • 30.
    30 3.2.3 Phương pháp2 tạo bin - Hàm if Hàm If trong Excel: Trong Excel, chúng ta có thể sử dụng một hàm có tên là ‘If’. Điều này cho phép tạo một giá trị trong một ô dựa trên một giá trị (số hoặc ký tự) trong một ô khác. = IF(logical_test value_if_true) Logical_test: là bất kỳ giá trị hoặc biểu thức nào dẫn đến TRUE hoặc FALSE. Ví dụ: nếu ô A2 = 3 là một biểu thức logic. Nếu ô A2 bằng 3, thì biểu thức này là đúng, còn lại là sai. Value_if_true: đây là giá trị chúng ta muốn hiển thị nếu nó là true. Ví dụ. nếu ô A2 bằng 3, thì chúng ta có thể muốn hiển thị văn bản "A2 là 3". Value_if_false: đây là giá trị chúng ta muốn hiển thị nếu nó là false. Ví dụ. nếu ô A2 không bằng 3, thì chúng ta có thể muốn hiển thị văn bản "A2 không bằng 3". Ví dụ. Sao chép ví dụ được hiển thị trong hình sau: * ô công thức chỉ mang tính chất tham khảo Trong ô B3, là công thức. Phím tắt để dừng viết nhiều dòng công thức: Thay vì viết ra công thức này nhiều lần, chúng ta có thể sử dụng hàm 'drag'. Như có thể thấy, ở góc dưới cùng bên phải của ô, có một hình vuông. = IF(A2 = 3,‘‘cell is 3’’,‘‘cell is not 3’’ )
  • 31.
    31 a. Sử dụngchuột và nhấp chuột trái vào hình vuông này. Đừng nhấp chuột; b. Kéo hình vuông này xuống dưới, để bạn bao gồm các ô từ B2 đến B10. 1) Nếu bạn bấm vào góc dưới cùng, ta sẽ thấy một thông báo ở cuối màn hình Excel như hình trình bày ở trên. a. Chức năng này có thể được sử dụng thay vì sao chép và dán, nhưng hãy cẩn thận khi sử dụng các số, vì Excel có thể sử dụng quá trình đếm. 2) Bây giờ hãy bỏ nhấp chuột để xem các ô đã hoàn thành. Hình dưới: Hàm nhấp và kéo trong Excel (3). Nhấp vào bất kỳ ô nào, và chúng ta sẽ nhận thấy rằng công thức đã được cập nhật để phản ánh các ô có liên quan, … như được minh họa trong hình 3.9.
  • 32.
    32 Chức năng kéonày không chỉ giúp tiết kiệm thời gian quý giá mà còn có thể ngăn lỗi xuất hiện khi viết công thức (mã) trong các ô khác nhau. Quay lại binning các biến Như chúng ta đã thấy, hàm 'If' rất mạnh, nhưng chúng ta phải tạo 4 bin, không phải 2. Các thùng cho nhóm thu nhập như sau: 5200 trở xuống; 5201 đến 6000; 6001 đến 6800; 6801 trở lên. Các thùng cho nhóm thế chấp như sau: 31,7 trở xuống; 31,8 đến 34,9; 35,0 đến 37,1; 37,2 trở lên. Công thức Excel được phân tích:  IF(C2<=5200,"5200 and under", Nếu thu nhập nhỏ hơn hoặc bằng 5200, thì hãy hiển thị "5200 trở xuống’’;  IF(C2<=6000, "5201 to 6000", Giá trị cho dưới 5200 đã được tính trước đó; Nếu thu nhập nhỏ hơn hoặc bằng 6000 thì hiển thị "5201 đến 6000". Giá trị này tương đương với lớn hơn 5200 và nhỏ hơn hoặc bằng 6000.  IF(C2<=6800,"6001 to 6800",
  • 33.
    33 Giá trị chodưới 6000 đã được tính trước đây; Nếu thu nhập nhỏ hơn hoặc bằng 6800 thì hiển thị "6001 đến 6800". Giá trị này tương đương với lớn hơn 6000 và nhỏ hơn hoặc bằng 6800.  "6801 and above” Các giá trị cho dưới 6800 trước đây là hoàn thành.  Cuối cùng, nếu tất cả các giá trị true trước đó không được tìm thấy, thì hãy hiển thị "6801 trở lên.  Luôn lưu ý số lượng dấu ngoặc mở được sử dụng, vì dấu ngoặc mở và dấu đóng cần cân bằng. Excel đọc công thức từ trái sang phải, do đó chúng ta phải chắc chắn rằng nó được viết theo đúng thứ tự. Nếu chúng ta bắt đầu các lệnh với 'C2 <= 6800', sau đó tiếp tục với 5200 và 6000, công thức 'if' sẽ không thành công. Sử dụng nhiều câu lệnh 'if' có thể khó hiểu và phải đếm số lượng dấu ngoặc được sử dụng, nhưng sau khi hoàn thành, nó có thể làm cho việc gắn nhãn các ô trong Excel rất nhanh chóng. Công thức Excel được phân tích:  IF(D2<=31.7,"31.7 and under", Nếu phần trăm thế chấp bằng hoặc nhỏ hơn 31,7 thì hiển thị "31,7 trở xuống’’.  IF(D2<=34.9,"31.8 to 34.9", Ngược lại nếu phần trăm thế chấp bằng hoặc nhỏ hơn 34,9 thì hiển thị "31,8 đến 34,9". Điều đó tương đương lớn hơn 31,7 và nhỏ hơn hoặc bằng 34,9.  IF(D2<=37.1,"35.0 to 37.1", Ngược lại, nếu phần trăm thế chấp bằng hoặc nhỏ hơn 37,1 thì hiển thị "35,0 đến 37,1". Đây tương đương với lớn hơn 31,7 và nhỏ hơn hoặc bằng 37,1.  "37.2 and above"
  • 34.
    34 Cuối cùng, nếukhông tìm thấy tất cả các giá trị true trước đó, thì sẽ hiển thị "37.2 trở lên. Như trước đây, ngay sau khi hoàn thành công thức một lần a. Nhấp vào góc dưới cùng bên phải của ô và kéo xuống hoặc b. nhấp đúp chuột vào hình vuông này Hình 3.13 chứa một ảnh chụp nhanh của trang tính Excel đã hoàn thành. LƯU Ý: nếu lỗi được tạo ra trong công thức, thì lỗi này sẽ lặp lại trong tất cả các ô khác. Luôn kiểm tra kỹ công việc của bạn, ví dụ: đảm bảo nó hiển thị 37,2 chứ không phải 3,72.
  • 35.
    35 3.3 Tạo câyquyết định Bây giờ chúng ta đã tạo một tập dữ liệu (bảng tính Excel) có các cột sau:  id (id khách hàng)  Đã bán (khách hàng đã mua sản phẩm);  Thu nhập (thu nhập của khách hàng);  Thế chấp% (phần trăm thu nhập của khách hàng được chi tiêu cho thế chấp );  Nhóm thu nhập bậc (phân cấp khách hàng) (nhóm biến thu nhập được phân nhóm);  Nhóm thế chấp (nhóm biến% thế chấp được nhóm lại). Tập dữ liệu này có 298 quan sát (hàng) và 89 doanh số (mục tiêu). Đối với nhánh đầu tiên, chúng tôi sẽ sử dụng thống kê khi-bình phương. Như đã đề cập trước đây, khi-bình phương cho chúng ta biết xác suất của một sự kiện xảy ra một cách tình cờ, sử dụng các giá trị được quan sát và mong đợi. Nếu có giá trị khi-bình phương là 0,01, điều này cho chúng ta biết rằng các kết quả quan sát có thể chỉ xảy ra tình cờ 1% số lần. Do đó thống kê càng thấp càng tốt. Theo nguyên tắc cơ bản, chúng ta muốn thống kê chi bình phương nhỏ hơn 0,05 (5%). 3.3.1 Bảng tổng hợp Bước tiếp theo của chúng ta là tính tổng số quan sát trong mỗi bin cho từng biến bậc, nhóm thu nhập và nhóm thế chấp. Điều này có thể dễ dàng được tính toán bằng cách sử dụng bảng tổng hợp trong Excel, nhưng bước đầu tiên thêm một cột mới vào tập dữ liệu của chúng ta (trang tính Excel) được gọi là số. Cột mới này sẽ chứa số 1 cho tất cả các quan sát (hàng).
  • 36.
    36 1) đánh số1 vào ô H2 và H3 (như hình trên). a. đánh dấu cả hai ô bằng chuột. 2) Như trước đây, hãy nhấp đúp vào góc dưới cùng bên phải của các ô được đánh dấu để tự động điền vào cột. Lưu ý: nếu bạn chỉ nhập 1 vào chỉ một trong các ô và sau đó bấm đúp vào ô đó, Excel sẽ cung cấp cho bạn số lượng tích lũy, ví dụ: 1, 2, 3, 4, 5… đi xuống cuối dữ liệu, trong trường hợp này là dòng 299. Hình 3.15: Hoàn thành cột mới trong Exel. Với cột đã hoàn thành, giai đoạn tiếp theo liên quan đến việc tạo một bảng tổng hợp.
  • 37.
    37 1) Nhấp vàomột ô duy nhất trong tất cả dữ liệu. a. không đánh dấu 2 hoặc nhiều ô vì Excel sẽ chọn chỉ sử dụng các ô được đánh dấu đó để tạo bảng tổng hợp. 2) Nhấp vào tab CHÈN trên đầu dải băng. 3) Nhấp vào Bảng tổng hợp Excel sẽ tự động chọn dữ liệu ta muốn. 1) Dữ liệu! $ A $ 1: $ H $ 299 - Excel đã tự động hoàn thành việc này cho bạn đã hoàn thành; a. Dữ liệu là tên của trang tính; b. $ A $ 1: $ H $ 299, điều này cho Excel biết vị trí các ô chứa dữ liệu. 2) Chọn Trang tính mới. 3) Nhấp vào OK. Một sổ làm việc mới sẽ mở cho bạn, như được minh họa trong hình dưới:
  • 38.
    38 Danh sách nàyliệt kê tất cả các cột có sẵn cho bảng tổng hợp; Bước tiếp theo liên quan đến việc chọn các trường dữ liệu bắt buộc vào bảng tổng hợp. 1) Nhấp vào Bậc (không bỏ nhấp) và kéo đến hộp có tên ROWS. Bây giờ hãy bỏ nhấp vào. 2) Các biến chúng tôi muốn tóm tắt được kéo vào đây. a. Nhấp vào Count (không bỏ nhấp) và kéo đến hộp có tên là Giá trị. Bây giờ hãy bỏ nhấp vào. b. Nhấp vào Sold (không bỏ nhấp) và kéo đến hộp có tên là Giá trị. Bây giờ hãy bỏ nhấp vào. Giai đoạn tiếp theo yêu cầu chúng tôi tính toán phần trăm doanh số, bằng cách chèn một trường đã tính toán. 1) Đảm bảo rằng một ô được đánh dấu trong bảng tổng hợp; 2) Nhấp vào tab ANALYZE; 3) Tiếp theo nhấp vào Fields, Items & Sets; 4) Chọn trường được tính. 1) Viết trên Field1 với Perc_sale 2) Trong hộp Công thức, hãy tạo phương trình cho phép chúng tôi tính toán tỷ lệ phần trăm của một người nào đó mua, Sold / Count; a. Xóa số 0 trong hộp công thức (giữ nguyên dấu =);
  • 39.
    39 b. Trong hộpTrường, bấm đúp vào Sold; c. Bây giờ gõ / d. Nhấp đúp tiếp theo vào Count. Hy vọng rằng công thức sẽ giống như được hiển thị trong hình sau: Chọn OK.
  • 40.
    40 Giai đoạn tiếptheo yêu cầu làm cho Bảng tổng hợp hiển thị hơn. Kích chọn: Sum of count sau đó cọn cài đặt trường giá trị. Thay đổi điều này để hiển thị toàn bộ như trong hình 3.26 dưới đây:
  • 41.
    41 Lặp lại tươngtự cho Sold, nhưng gọi cột này là Total Sold. Với ‘Sum of Perc_sale’, chúng tôi muốn thay đổi tên của nó và làm cho nó hiển thị phần trăm (%). Sử dụng menu box ‘Value Field Setting’ cho ‘Sum of Perc_sale’. 1) Đổi tên % Sold; 2) Nhấp vào Number format.
  • 42.
    42 1) Chọn Phầntrăm; 2) Nhấp vào OK. Sau đó nhấp vào OK trên hộp: ‘Value Field Settings’. Chúng ta cần so sánh giá trị quan sát được với giá trị mong đợi. Nhìn chung, có tỷ lệ bán hàng 29,87%, do đó, tính toán cho mỗi Cấp 29,87% tổng số khách
  • 43.
    43 hàng trong mỗiben (giá trị dự kiến). Điều này yêu cầu một trường được tính toán mới có tên là ‘Expected sales’.  Đảm bảo rằng một ô được đánh dấu trong bảng tổng hợp;  Nhấp vào tab ANALYZE;  Tiếp theo nhấp vào Fields, Items & Sets;  Chọn Trường Tính toán. 1) Name: Expected sales; 2) Công thức: = count * 0.2987. Excel không thích hai cột được gắn nhãn giống nhau và ta có thể nhận được thông báo lỗi cho ‘Expected sales’, trong trường hợp này, chỉ cần đặt dấu cách trước chữ "E" trong doanh số dự kiến.
  • 44.
    44 Với các sốliệu dự kiến và thực tế đã hoàn thành, chúng ta có thể tính toán thống kê khi - square. Sao chép công thức như trong hình 3.34, với một bảng chi tiết kết quả. Đối với biến Tier, chúng tôi nhận thấy rằng giá trị khi-square là 0,015386, 1,5386% (đây là mức thấp). Để tính toán khi-bình phương cho nhóm Thu nhập, chúng ta thực hiện theo hướng dẫn sau: 1) Nhấp vào Bậc trong Hộp Hàng (không được bỏ bấm) a. Kéo nó lên hộp trên cùng (bỏ bấm); 2) Bấm vào Nhóm thu nhập (không bỏ bấm); a. Kéo nó vào hộp hàng (bỏ bấm).
  • 45.
    45 Đảm bảo rằngcác ô chính xác đang được sử dụng để tính khi-square thống kê Đối với nhóm thu nhập, giá trị khi-bình phương là 0,583968, hay 58,397% (mức này rất cao). Lặp lại tương tự đối với nhóm thế chấp. 1) Nhấp vào Bậc trong Hộp Hàng (không được bỏ nhấp (click)); a. Kéo nó lên hộp trên cùng (bỏ kích). 2) Bấm vào Nhóm thu nhập (không bỏ kích). a. Kéo nó vào hộp Hàng (bỏ kích).
  • 46.
    46 Đảm bảo rằngcác ô chính xác đang được sử dụng để tính toán thống kê Khi bình phương. Đối với nhóm thu nhập, giá trị Khi bình phương là 0,583968 hoặc 58,397% (tỷ lệ này rất cao). Lặp lại tương tự cho nhóm thế chấp (mortagage). Đối với nhóm thế chấp, giá trị Khi-square là 0,23237, hay 23,237% (đây là mức cao). Kết quả khi-bình phương được hiển thị trong bảng 3.1.
  • 47.
    47 Dựa trên kếtquả Khi bình phương, nhánh đầu tiên sẽ được tạo bằng cách sử dụng biến Tier, vì nó có thống kê khi bình phương thấp nhất và đáp ứng quy tắc dưới 5%. Nếu không có giá trị nào thỏa mãn quy tắc 5%, chúng ta sẽ xem xét liệu có nên khôn ngoan khi xây dựng cây quyết định hay không. 3.3.2 Thiết kế cây quyết định trong Excel Nhánh đầu tiên của chúng ta sẽ chứa các hình sau: Tổng số và tổng số hàng đã bán được thu thập từ bảng Tổng hợp. "Not Sold" được tính như sau: Not Sold = Total – Total Sold. Sử dụng nút Border, chúng ta có thể đơn giản tạo cây quyết định, dựa trên biến mạnh nhất (bậc) Hình 3.38, mặc dù sâu sắc nhưng có thể coi là khá nhàm chán. Thêm một số màu vào cây, với định dạng có điều kiện, sẽ tạo ra một cây tạo hình mắt đẹp hơn.
  • 48.
    48 1) Sử dụngCTRL và nhấp vào các ô, có thể đánh dấu tất cả các ô mà ta muốn thêm định dạng có điều kiện vào. a. Trong trường hợp này, các ô% đã bán đã được đánh dấu. 2) Chọn Thang màu và biểu đồ thứ hai ở hàng trên cùng. 3) Tô màu nhẹ cho các ô này a. Các nhãn đã bán và chưa bán có màu xanh lam nhạt. Quay lại câu hỏi ban đầu, có dân số nào mà chúng ta có thể nhắm mục tiêu chi phí hiệu quả không? Sử dụng cây quyết định, chúng ta nên nhắm mục tiêu những khách hàng đó ở cấp 1 và 2. Cấp 1 có nhiều hơn hai lần rưỡi để mua so với Cấp 4! Công việc này có thể được coi là rộng rãi, nhưng cần phải phát hiện ra biến số phân biệt đối xử với một sản phẩm đang được bán hoặc không phải là sản phẩm mạnh nhất. Điều này sẽ cho phép chúng ta tối đa hóa lợi nhuận của mình bằng cách nhắm mục tiêu các khách hàng hiệu quả về chi phí. 3.4. Tóm tắt Nội dung đã trình bày cho chúng ta thấy Excel có thể phân tích mạnh mẽ. Ngoài ra, nó là một công cụ tuyệt vời để giải thích các số liệu thống kê, một cách đơn giản. Excel có thể tạo ra các biểu đồ sâu sắc và là một trong những công cụ phân tích phổ biến nhất ở nơi làm việc. Đôi khi chúng ta có thể gặp các vấn đề phức tạp cần giải quyết mà không nằm ngoài việc gửi Excel.
  • 49.
    49 Chương 2. Xửlý dữ liệu bằng Python 1. Giới thiệu về Python Python là một công cụ phân tích dữ liệu mã nguồn mở và miễn phí cho phép làm việc các tập dữ liệu lớn và tiến hành các phân tích phức tạp. Python là một ngôn ngữ kịch bản, có nghĩa là bạn phải viết mã (mà chúng tôi đã giới thiệu một chút trong Excel với câu lệnh ‘IF’). Mục này bao gồm những điều cơ bản về thống kê trong Python), để loại bỏ bất kỳ giả định nào về các khả năng trước đó Python không có tất cả các công cụ cần khi cài đặt ban đầu. Do đó khi làm việc với Python, chúng ta sẽ không tải xuống các công cụ này (gói / thư viện). Các gói là tập hợp các hàm Python, có thể được sử dụng sau khi cài đặt. Mục đích của chương này là:  Hiểu cách sử dụng các kiểu dữ liệu khác nhau: Danh sách, mảng, khung dữ liệu.  Tính toán thống kê đơn giản (trung bình, chế độ, chi-square, v.v.)  Tạo đồ thị cơ bản. 1.1 Spyder Với nhiều lời khuyên và video trên internet hướng dẫn chi tiết cách tải xuống và cài đặt Python, cuốn sách này sẽ bắt đầu ở màn hình mở cho Spyder. Tôi thích máy chơi game console, trong khi người khác thích máy tính xách tay Jupyter hơn. Mã sẽ hoạt động trong bất kỳ môi trường nào. Cuốn sách này lặp lại các phần nhất định từ mục 1 đến mục 3 như một cách để chứng minh cách lập trình bằng Python. Điều này cũng sẽ cung cấp một nền tảng về cách chuyển kiến thức Excel sang Python và để kiểm tra kết quả của chúng
  • 50.
    50 ta. Không giốngnhư Excel, nơi có thể dễ dàng quan sát tiến trình, Python không hiển thị kết quả ngay khi viết mã. Thay vì giải thích các phân đoạn khác nhau trong Python, cuốn sách này sẽ hướng dẫn sử dụng các ví dụ. Qua nhiều năm kinh nghiệm, chúng tôi phát hiện ra rằng ‘làm điều đó’ có hiệu quả hơn những lời giới thiệu dài dòng. Do đó, mục này là một cách tiếp cận áp dụng để học những điều cơ bản trong Python. Hai thư viện quan trọng nhất để sử dụng trong cuốn sách này là: Chương trình 4-1: Thư viện ban đầu import numpy as np import pandas as pd Là một cách nhanh chóng để chạy mã, hãy dùng chuột đánh dấu mã, sau đó nhấn Shift và Enter. Điều này sẽ chạy mã của ta. Chạy hai thư viện này sẽ được giới thiệu sau dưới đây. Bỏ qua các dấu chấm than trong hình tam giác, điều này có nghĩa chúng ta chưa viết bất kỳ mã nào sử dụng các thư viện này. 1.2 Excel sang Python Ví dụ đầu tiên của chúng ta là sao chép ‘Ví dụ 1.2.1’, tính giá trị trung bình, trung vị và range, nhưng bằng Python. 1.2.1 Ví dụ về giá trị trung bình, trung vị và range Sử dụng Python để tính giá trị trung bình (trung bình), trung vị, mode và range cho dữ liệu: 13, 18, 13, 14, 13, 16, 14, 21, 13.
  • 51.
    51 Để hoàn thànhnhiệm vụ này, trước tiên chúng ta cần tạo một danh sách. Chương trình 4-2: Tạo danh sách các số. Nếu ta chạy mã trên (shift và enter), thì sẽ tạo danh sách số, với một biến được gọi là a. Hình 4.3 đến 4.5 hiển thị ảnh chụp nhanh của 3 màn hình khác nhau trong Spyder. Mã đã được chạy. Nhấp vào biến để xem kết quả. Hiển thị danh sách của chúng tôi, với thông tin.
  • 52.
    52 Chương trình 4-3.Tính toán giá trị trung bình np.mean(a) np, biểu thị rằng chúng ta cần sử dụng thư viện numpy, để tính giá trị trung bình. Phần thứ hai, mean (a), nói với Python rằng chúng ta muốn giá trị trung bình của biến. a. Chúng ta phải sử dụng các dấu khi dùng lệnh mean(a). Thông báo lỗi không có gì đáng sợ và đôi khi có thể hữu ích. Nếu mọi người đều hoàn hảo về Python, thì sẽ không cần thông báo lỗi. Trong hình 4.6, một lỗi đã được tạo ra làm ví dụ. Sửa mã và sử dụng dấu ngoặc.
  • 53.
    53 Sử dụng phầnbảng điều khiển, chúng ta có thể xem mã đã được chạy, cùng với kết quả, 15.0, khớp với kết quả Excel của chúng ta. Trong Excel, ta đã sử dụng lệnh trung bình, giống như trong Python. Trung vị sẽ được tính tiếp theo (vì numpy không tính chế độ). Có thể thấy trong chương trình 4-4, mã rất giống với việc tính giá trị trung bình. Chương trình 4-4: Tính giá trị trung bình. np.mean(a) Trung vị được hiển thị là 14. Cuối cùng, chúng ta sẽ tính toán range. Trong phần 1.3, chúng ta đã trình bày lệnh Excel dưới dạng: = Max (range) – Min (range). Chúng ta sửa đổi điều này một chút và viết nó trong Chương trình Python 4-5: Tính range trong Python: np.max(a) – np.min(a). Một lần nữa, đánh dấu mã và chạy nó.
  • 54.
    54 Giai đoạn tiếptheo liên quan đến việc tính toán mode, độ lệch chuẩn và phương sai. Điều này liên quan đến việc sử dụng một thư viện mới, số liệu thống kê. Chương trình 4-6: Tính toán thêm các số liệu thống kê.
  • 55.
    55 Bây giờ chúngta đã tạo lại thống kê Excel của mình bằng Python. Lựa chọn sử dụng Python thay vì Excel cho các thống kê cơ bản chủ yếu mang tính cá nhân, cuốn sách này được thiết kế chỉ để cung cấp nền tảng của thống kê ứng dụng.
  • 56.
    56 2. Tương quan Nhiệmvụ tiếp theo là tạo lại các thống kê và đồ thị tương quan trong Python từ hình 1.11. (Điều này sử dụng chương trình 2 tương quan) Hình 4.12: Bản sao của hình 1.11. Điều này sẽ đòi hỏi:  Tạo 4 danh sách mới;  Thực hiện các bài kiểm tra tương quan;  Tạo ra một biểu đồ. Bước đầu tiên của chúng tôi yêu cầu tạo 4 danh sách mới. Để bắt chước ví dụ Excel, chúng sẽ được gọi là data1, data2, data3 và data4. Tất cả bốn dòng có thể được chạy cùng một lúc, bằng cách đánh dấu chúng và nhấn shift và enter. Lệnh để tiến hành kiểm tra tương quan là pearsonr () (lệnh này sử dụng Pearson-test). Điều này tạo ra kết quả có hai giá trị: - Hệ số tương quan; - Giá trị p. Giá trị p được sử dụng khi ta kiểm tra một giả thuyết. Giá trị p là một thước đo quan trọng, đã được thảo luận ờ các mục trước. So sánh mã Excel của chúng tôi với mã Python, chúng tôi nhận thấy một số điểm tương đương.
  • 57.
    57 A2: A11 giốngvới data1, B2: B11 giống với data2, … Kết quả được tạo ra bằng Python cũng giống như kết quả trong Excel, với cảnh báo cho data1 và data4, như mong đợi. Phần tiếp theo của bài tập này yêu cầu xây dựng một biểu đồ. Điều này đòi hỏi phải viết mã thêm, chúng ta sẽ tiến bộ từng bước. Đầu tiên, chúng ta cần một thư viện mới, xây dựng Chương trình 4-9: nhập thư viện vẽ đồ thị.
  • 58.
    58 plt.plot - lệnhtạo ra biểu đồ của chúng ta; (data1, data2, 'blue'): Data1 – trục x, Data2 - trục y; ‘blue’ - nói với python rằng đường màu xanh lam; Plt.show () - lệnh yêu cầu Python vẽ biểu đồ. Để bổ sung thêm dữ liệu vào cùng một biểu đồ, hãy chuyển tiếp Chương trình 4-11: Vẽ tất cả các đường.
  • 59.
    59 Biểu đồ tươngtự như biểu đồ đã hoàn thành trong Excel (không có tiêu đề). Python có khả năng tạo ra nhiều loại đồ thị tuyệt vời. 3. Hồi quy tuyến tính đơn giản Ví dụ 1.5.1. đã giới thiệu hồi quy tuyến tính đơn giản, điều này sẽ được tạo lại bằng Python. 3.1. Ví dụ về hồi quy tuyến tính đơn giản Chúng ta muốn kiểm tra xem có mối quan hệ giữa độ dày của miếng bọt biển và độ thấm hút chất lỏng của nó hay không. Chúng tôi đã thiết kế một thí nghiệm với các mức độ dày khác nhau của bọt biển, với lượng chất lỏng được hấp thụ. Kết quả được ghi trong bảng 4.3. Bảng 4.3: Dữ liệu hồi quy tuyến tính đơn giản. Trong Python, các bước sau sẽ được tiến hành: Tạo mảng, trong cuốn sách này, chúng tôi sẽ định nghĩa mảng là một biến có thể lưu trữ danh sách các giá trị. Tạo hồi quy tuyến tính đơn giản; Tạo đồ thị có trục và tiêu đề được gắn nhãn Chương trình 4-12 dưới đây: Tạo mảng của chúng ta. np.array, nói với Python rằng chúng ta muốn tạo mảng bằng cách sử dụng các số liệu bên trong ([…]). Bây giờ, chúng ta có hai mảng: đầu vào x và đầu ra y. Để hồi quy hoạt động trong Python, chúng ta cần sửa đổi x thành hai chiều, một cột, nhưng nhiều hàng. Đó là lý do tại sao chúng ta cần định hình lại lệnh ((- 1,1)). Mảng cho phép chúng ta thao tác dữ liệu dễ dàng hơn.
  • 60.
    60 Chương trình 4-13dưới: Mã hồi quy tuyến tính đơn giản của chúng ta. 1) Nhập thư viện mới; 2) Mã hồi quy của chúng ta; 3) Tạo đầu ra của chúng ta cho mô hình –xem hình 4.16. Giai đoạn tiếp theo yêu cầu chúng ta tạo ra cốt. Chương trình 4-14: Vẽ mã mô hình hồi quy tuyến tính đơn giản.
  • 61.
    61 1) Chúng tađã tạo một mảng dữ liệu mới dựa trên các hệ số của mô hình. Điều này đã được thực hiện để chúng ta có thể vẽ biểu đồ giá trị dự đoán của mình so với giá trị thực của chúng (đường xu hướng). 2) Mã của chúng ta. Nhiều mã đã được thêm vào từ các ví dụ trước a. plt.title (‘…’) - đặt tiêu đề biểu đồ; b. plt.xlabel (‘…’) – gắn nhãn cho trục x; c. plt.ylable (‘…’) - gắn nhãn trục y. 3.2. Bài kiểm tra t Phần tiếp theo chúng ta giải bài tập kiểm tra t từ ví dụ 2.1. Trong ví dụ này, chúng ta muốn kiểm tra hiệu quả của một loại thuốc mới. Hỏi một số học sinh về tình trạng sức khỏe của họ (điểm 0 đến 20). Sau đó, không nói với họ, bắt đầu cho họ dùng loại thuốc mới. Sau một tuần, hỏi những người tương tự về tình trạng sức khỏe của họ. Kết quả được ghi trong bảng 4.4. 1) Tính giá trị trung bình & độ lệch chuẩn; 2) Loại thuốc đó và sức khỏe học sinh, chúng có tương quan với nhau không?
  • 62.
    62 3) Tính toángiá trị t-test để theo dõi xem có sự khác biệt về sức khỏe của học sinh hay không. Ghi chú rất hữu ích khi viết mã: - Chúng cung cấp cho một bản tóm tắt nhanh chóng về những gì mã thực thi mà ta không cần phải đọc qua các dòng mã; - Cho phép đồng nghiệp hiểu công việc của chúng ta. Hình 4.40 hiển thị các giai đoạn cần thiết cho bài tập này trong R. Để tiến hành kiểm định t, các bước sau sẽ được yêu cầu: - Tạo mảng với các giá trị trước khi tính; - Tính giá trị trung bình và độ lệch chuẩn: + Tính toán thống kê tương quan; + Tính toán thống kê kiểm định t bằng một lệnh mới. - Tạo dữ liệu; - Tiến hành thống kê theo yêu cầu.
  • 63.
    63 Chương trình 4– 16. T test thống kê stats.ttest_ind(- lệnh của chúng ta để Python tiến hành kiểm tra trước khi t- test pre, post, - dữ liệu equal_var = False) – được đặt thành false, không giả định phương sai tổng thể bằng nhau. Ttest_indResult(statistic = -2.9139712, pvalue = 0.0108723). Phép thử t so sánh hai giá trị trung bình và thông báo cho ta nếu chúng khác nhau. Phép thử t cho biết các biến có ngẫu nhiên hay không. + T = -2,91397. + Giá trị P (đây là giá trị được tính trong Excel). Thông báo về xác suất liệu các kết quả từ mẫu có ngẫu nhiên hay không. Giá trị P = 0,05 cho biết rằng có 5% khả năng kết quả xảy ra một cách ngẫu nhiên. Giá trị p càng thấp thì kết quả càng tốt. Trong trường hợp này, p = 0,108 có nghĩa là kết quả có 1,08% khả năng xảy ra ngẫu nhiên. Python sử dụng một kịch bản thử nghiệm t khác với Excel, do đó sự khác biệt về số liệu, nhưng kết quả là tương tự. 4. Khi-square Bài tập tiếp theo xây dựng dựa trên các ví dụ trước, cũng như giới thiệu các lệnh mới và cấu trúc dữ liệu mới (chương trình 5 khi-square). Sau đây giải quyết ví dụ 2.4.1.
  • 64.
    64 4.1. Ví dụvề khi-square Chúng ta cùng đi dạo trong một khu rừng xinh xắn và nhận xét về màu sắc của những quả táo. Chúng tôi dự kiến sẽ thấy ¾ táo đỏ và ¼ táo xanh. Sau khi đếm số táo trong rừng, kết quả đã được ghi lại ở bảng dưới đây: Công thức của Exel: = CHITEST(observed range, expected ranger). Bước đầu tiên của chúng ta là tạo mảng: Chương trình 4-18. Tạo một khung dữ liệu chứa hai cột và hai hàng: + Khi_data - tên của khung dữ liệu; + pd. quan sát; + 'observed' - tạo một cột được gọi là observed: + expected - chứa dữ liệu trong mảng expected. Giai đoạn cuối cùng của chúng ta bao gồm các bước sau: Kích hoạt thư viện; Tiến hành kiểm định khi- square.
  • 65.
    65 stats.chi2_contingency – lệnhsử dụng; (khi_data) – Dữ liệu đã cho của chúng ta. Từ kết quả ban đầu, kết quả có thể khá khó hiểu: + 0,00818 - đây là giá trị chi bình phương của chúng ta; + 0,9279 – đây là giá trị p của chúng ta; + 1 - đây là bậc tự do. Bậc tự do được tính bằng cách sử dụng số cột - 1 (2-1). + Phần cuối là kết quả mong đợi. Python có một cách dễ dàng để trình bày kết quả: Phần đầu tiên của mã chi2_stat, p_val, dof, ex, yêu cầu Python tạo 4 đối tượng khác nhau, mỗi đối tượng chứa các giá trị. Do đó, để có được thống kê khi bình phương thực hiện như sau: Điều này tạo ra p_value của chúng ta là 0,9279, giống như kết quả của Excel. Khi bạn bắt đầu lập trình bằng Python, chắc chắn sẽ tìm thấy nhiều cách để thực hiện bất kỳ tác vụ nào. Sự lựa chọn nên là của chúng ta, miễn là kết quả tạo ra là chính xác. 4.2. Tóm tắt Mục đích chính của mục này là bắt đầu bằng Python, không cần nhiều lý thuyết. Nó chứng tỏ rằng để sử dụng Python một cách thông minh, chúng ta phải cài đặt các gói và thư viện. Python là một ngôn ngữ lập trình, đó là lý do tại sao
  • 66.
    66 chúng ta sửdụng Excel để giới thiệu một số mã hóa cơ bản bằng cách sử dụng các lệnh và câu lệnh ‘if’. Vì vậy bước chuyển sang Python sẽ không quá lớn. Không ai trở thành bậc thầy của một ngôn ngữ lập trình trong một sớm một chiều, có thể mất vài tháng / năm và như thường lệ, sự kiên nhẫn và ứng dụng là chìa khóa. Điều này không có nghĩa là chúng ta không nên sử dụng Python, chỉ cần bạn kiên nhẫn khi học.
  • 67.
    67 5. Dữ liệucho Python và thao tác dữ liệu Bất kể bạn sử dụng ngôn ngữ phân tích nào, dữ liệu là khía cạnh quan trọng nhất của bất kỳ các phân tích. Nếu dữ liệu không tốt, thì bất kỳ phân tích nào được tạo ra sẽ không có giá trị. Một trong những câu nói phổ biến nhất trong thế giới phân tích là: Rubbish in = Rubbish out (Có nghĩa là: Dữ liệu vào là rác thì thông tin ra là rác, không có giá trị). Khi mọi người tập trung vào kỹ thuật hơn là dữ liệu, họ sẽ tạo ra những kết quả không thực tế với những kết luận khó hiểu. Hiểu dữ liệu và cách dữ liệu sẽ hoạt động là chìa khóa trong phân tích. Điều này sẽ trở nên rõ ràng hơn khi chúng ta bắt đầu thao tác với dữ liệu. Mục này nghiên cứu sâu hơn về dữ liệu và cấu trúc dữ liệu. 5.1 Các kiểu dữ liệu cơ bản trong Python Các định dạng cơ bản của Python: Boolean: True, False Numeric Integer (ví dụ: 1, 2); Float (ví dụ: 5.6); Complex (ví dụ: 6 - 2i). String Ví dụ: "BOB", "fun" Binary Ví dụ: 0, 1. Trong cuốn sách này, chúng ta sẽ chủ yếu tập trung vào các kiểu dữ liệu số nguyên, số và chuỗi (ký tự). Python cũng có nhiều cấu trúc dữ liệu, nhưng cuốn sách này sẽ tập trung vào ba cấu trúc sau: + List + Array
  • 68.
    68 + Data frame. 5.1.Dữ liệu cho mục 5 Có thể làm sạch và sửa đổi dữ liệu là chìa khóa để trở thành một nhà phân tích giỏi. Như bạn có thể đã khám phá ra với cuốn sách này, một cách tiếp cận thực tế hơn là lý thuyết được sử dụng. Đối với chương này, cần có tệp CSV có tên là 'mẫu'. Tệp này nêu chi tiết về khả năng khách hàng không trả được nợ đối với một sản phẩm tài chính. Vui lòng nhập nó, thông qua Python nhập dữ liệu hoặc tự viết tập lệnh, để chúng ta ‘làm sạch’. Chương trình 5-1: Nhập tệp CSV Khi chúng ta nhập tệp CSV này, nó sẽ tạo ra một khung dữ liệu, được gọi là mẫu. + sample=, khung dữ liệu tạo ra; + pd.read_csv (- lệnh đọc CSV file); + "C:/temp/sample.csv" – nơi tệp được lưu trữ, được nhập vào Python. Tất cả công việc của chúng ta trong chương này sẽ sử dụng khung dữ liệu này. Khung dữ liệu này có 13508 hàng và 16 cột. Các cột được mô tả trong bảng 5.1.
  • 69.
    69 Nhiệm vụ đầutiên của chúng ta là xem xét 20 hàng trên cùng. Để thực hiện việc này, chúng ta sẽ tạo một khung dữ liệu mới có tên là top20, chứa 20 hàng đầu tiên của khung dữ liệu, mẫu. + top20- tên của khung dữ liệu mới; + sample – tên của khung dữ liệu của chúng ta; + head(20) – head là lệnh cho Python biết rằng chúng ta muốn xem số hàng trên cùng. Con số 20, nói với Python rằng chúng ta muốn 20 hàng trên cùng. Sau đó, chỉ cần nhấp đúp vào khung dữ liệu mới này (trong quá trình khám phá biến). Nếu sử dụng Jupyter, thì chúng ta có thể viết top20. Nhấp đúp vào đây sẽ mở ra khung dữ liệu mới của chúng ta.
  • 70.
    70 Hình sau làkhung dữ liệu của top20. + Điều đầu tiên cần chú ý là cột chỉ mục bắt đầu từ số 0. + Thứ hai, 2 cột đã có giá trị bị thiếu được thay đổi từ trống (thiếu) thành nan(CCJ_governmet và CCJ_private). Python ghi đè các giá trị bị thiếu bằng nan. Xử lý các giá trị bị thiếu được đề cập trong phần tiếp theo. Để đóng cửa sổ này, chúng ta chỉ cần nhấp vào dấu ‘x’ ở góc bên phải của khung dữ liệu. Giai đoạn tiếp theo liên quan đến việc lấy dữ liệu về dữ liệu (siêu dữ liệu). Để có được thông tin này, chúng ta sử dụng: Chương trình 5-3: Siêu dữ liệu mẫu Siêu dữ liệu liên quan đến dữ liệu về dữ liệu, trong Python, chúng ta sử dụng .info (), trong đó tên khung dữ liệu đứng trước tên này. Cụ thể:
  • 71.
    71 Từ lệnh info(), chúng ta có thể thấy rằng mẫu khung dữ liệu có: + 13508 obs (hàng); + 16 biến (cột); + Tên của tất cả các biến (phân biệt chữ hoa chữ thường); + Các biến là số nguyên (int64) hoặc number (float64). Điều này đã cho chúng ta hiểu rõ hơn về dữ liệu mà lệnh head () không thể truyền tải. 5.3 Thao tác dữ liệu Có thể sửa đổi dữ liệu và chỉ chọn các giá trị cụ thể tạo thành một cột là kỹ năng quan trọng đối với bất kỳ nhà phân tích / nhà khoa học quyết định nào. 5.3.1. Equal to Nếu chúng ta muốn tạo một khung dữ liệu mới chỉ chứa những khách hàng đã phá sản (target = 1), thì chúng ta sẽ viết một chương trình nhỏ. Trong Python, nếu muốn một biến có giá trị bằng nhau, thì chúng ta sẽ sử dụng hai dấu bằng ‘==’. Chương trình 5-4: Equal to Mã đã được chia nhỏ như sau: + targ1 - tên của khung dữ liệu mới được tạo; + mẫu - tên của khung dữ liệu mà chúng ta sẽ sử dụng; + [sample $ target - thông báo cho Python biết khung dữ liệu và biến chúng ta muốn sử dụng; + == 1 - như đã đề cập trước đây, trong Python, chúng ta sẽ sử dụng '==' có nghĩa là bằng; + ] - chỉ định phần cuối của lệnh. Trong Python, tên cột và khung dữ liệu phân biệt chữ hoa chữ thường, do đó 'Target' sẽ không hoạt động, ngược lại ' target 'không. Lệnh info () đã được đưa vào để hoàn thiện, nhưng chúng ta không cần phải chạy nó. Nếu chúng ta nhìn vào
  • 72.
    72 cửa sổ trêncùng bên phải, chúng ta sẽ thấy rằng khung dữ liệu targ1 có 1121 quan sát (hình 5.5). Nếu bạn nhấp vào từ ‘targ1’, thì trong Python, điều này sẽ hiển thị khung dữ liệu (hình 5.5). Hình 5.5: Sử dụng ngăn trình khám phá biến. 5.3.2 Các biểu thức khác Cho đến nay chúng ta đã thấy lệnh ‘==’, nhưng còn có các lệnh khác: Bảng 5.2: Các lệnh khác
  • 73.
    73 Hình 5.6: Kếtquả các biểu thức cơ bản Xin lưu ý rằng các kết quả không theo thứ tự đã tạo mà theo thứ tự bảng chữ cái, trong đó các ký tự viết hoa đứng trước các ký tự viết thường. Thông thường, thao tác dữ liệu bằng cách sử dụng hai hoặc nhiều biến, điều này dẫn chúng ta đến các lệnh ‘và’ và ‘hoặc’. Sử dụng khung dữ liệu 'mẫu', chúng ta sẽ tạo một khung dữ liệu mới chỉ chứa những khách hàng có mức lương trên 2000 và tiết kiệm dưới 100. Trong trường hợp này, chúng ta sẽ sử dụng '&' và sử dụng mỗi lệnh có dấu ngoặc , như hình dưới đây: Chương trình 5-6: Lệnh AND Nếu chúng ta xem xét mức lương > 3000 hoặc tiết kiệm > 500 thì chúng ta sẽ sử dụng ‘|’.
  • 74.
    74 Chương trình 5-7:Lệnh OR Như chúng ta có thể thấy trong hình 5.10, các khung dữ liệu đã được tạo, nhưng làm thế nào chúng ta có thể kiểm tra xem chúng có đúng không? Chúng ta có thể kiểm tra nhanh ‘eyeball’ bằng cách sử dụng head () hoặc tiến hành một số thống kê đơn giản như trong bảng 5.3. Lưu ý. Khung dữ liệu và tên cột có phân biệt chữ hoa chữ thường, vì vậy nếu đã sử dụng chữ in hoa trong mã hóa của mình (ví dụ: Save500), hãy nhớ liên tục sử dụng chúng. Chúng ta đã mở rộng công việc của mình từ mục 4 sang tính toán các số liệu thống kê đơn giản bằng cách sử dụng khung dữ liệu. Miễn là khung dữ liệu và biến (phân tách bằng dấu ‘. ') được viết đúng, thì nó sẽ đơn giản. 5.3.3 Bài tập 5.1: các lệnh cơ bản Sử dụng khung dữ liệu ' sample' hoàn thành các hoạt động sau: 1) Tạo khung dữ liệu mới có tên là activ1, sử dụng dữ liệu từ mẫu trong đó biến đích bằng 0. 2) Tạo khung dữ liệu mới được gọi là activ2, sử dụng dữ liệu từ mẫu có mức lương lớn hơn 5000. 3) Tạo khung dữ liệu mới có tên activ3 bằng cách sử dụng dữ liệu từ mẫu có mức lương lớn hơn hoặc bằng 10000.
  • 75.
    75 4) Tạo khungdữ liệu mới có tên activ4, sử dụng dữ liệu từ mẫu trong đó tiền lương nhỏ hơn hoặc bằng 10000 và mục tiêu không bằng 0. 5.3.4. Giải bài tập 5.1. 5.3.5. Các biến đặc trưng Cho đến nay chúng ta mới chỉ xem xét các giá trị số, nhưng dữ liệu thường đến ở dạng hỗn hợp giữa các giá trị đặc trưng và số. Giai đoạn đầu tiên là tạo một khung dữ liệu với các giá trị đặc trưng: Chương trình 5-9: Khung dữ liệu ký tự Ở trên tạo một mảng có tên là ‘boom’, sau đó được chuyển đổi thành một khung dữ liệu có tên là ‘bosh’ bằng cách sử dụng lệnh ‘pd.DataFrame’. Để lọc dữ liệu theo một biến đặc trưng rất giống với phiên bản số như trong chương trình sau:
  • 76.
    76 Chương trình 5-10:Thao tác dữ liệu biến ký tự 1) char1 = bosh [bosh.boom == "EXAMPLE"]: a. Chúng ta có thể sử dụng dấu ngoặc kép hoặc đơn, nhưng bạn phải nhớ sử dụng chúng và không trộn lẫn chúng, v.d. “EXAMPLE’ sẽ không hoạt động. 2) Tương tự như số 1, nhưng sử dụng số khác. 3) Một lần nữa, như được hiển thị trước đó với phiên bản số, nhưng các từ được bao quanh bởi dấu ngoặc kép. 4) Nhiều hoặc câu lệnh: a. Điều này chứng tỏ rằng chúng ta có thể sử dụng nhiều câu lệnh ‘or’. 5) Điều này sử dụng một cách rút gọn từ việc viết ra cùng một biến nhiều lần. Trong trường hợp này, chúng ta có thể sử dụng lệnh ‘isin’, lệnh này cung cấp cho chúng ta kết quả tương tự như trong 5. Hình 5.8 dưới đây, trình bày kết quả sử dụng các biến đặc trưng: Câu lệnh isin có thể được sử dụng cho các giá trị số cũng như đặc trưng. Khi xử lý các biến đặc trưng, phải nhớ rằng nó có phân biệt chữ hoa chữ thường. Chẳng hạn: từ ví dụ trước, char1 = bosh [bosh.boom == "EXAMpLE"] sẽ không hoạt động.
  • 77.
    77 5.4 Thao tácvới khung dữ liệu trong Python 5.4.1 Cập nhật giá trị null Khi làm việc với dữ liệu, nó hiếm khi sẵn sàng để sử dụng (sạch). Khi đó, chúng ta sẽ làm sạch dữ liệu để làm cho nó có thể sử dụng được. Từ hình 5.2, quan sát thấy rằng có một số giá trị bị thiếu cho CCJ_go Government và CCJ_private. (NA). Ba nguyên nhân phổ biến của việc thiếu giá trị là: Không xác định; Tệp dữ liệu được nhập không chính xác; Tỷ lệ đối sánh không thành công. Các biến CCJ_go Government và CCJ_private chứa các giá trị bị thiếu vì chúng chưa bao giờ có bất kỳ CCJ nào. Đối với các cột này, chúng ta thay thế các giá trị bị thiếu bằng 0. Đoạn mã dưới đây minh họa cách nó được hoàn thành. Đoạn mã trên: + sample['CCJ_government'] = chỉ định khung dữ liệu và cột chúng tôi đang sửa đổi / tạo. + sample['CCJ_government']. chỉ định khung dữ liệu và cột mà chúng tôi đang điều tra. + fillna(0) Thay đổi NA thành không. Điều này sau đó được lặp lại cho CCJ_private.
  • 78.
    78 Kiểm tra kếtquả bằng cách nhấp đúp vào mẫu. 5.4.2 Tạo cột mới Khả năng tạo cột mới là kỹ năng quan trọng đối với nhà phân tích. Đôi khi, chúng ta có thể muốn thêm một giá trị duy nhất vào khung dữ liệu hoặc tạo một cột mới dựa trên thông tin đã có trong khung dữ liệu. Ví dụ đầu tiên là tạo một cột mới với giá trị 1 được gọi là số đếm, trong mẫu khung dữ liệu. Chương trình 5-12: Tạo một cột mới. Đây là một trong những tình huống mà việc viết ra những gì chúng ta sẽ làm dài hơn bản thân mã. Chỉ cần nhớ ghi khung dữ liệu trước, sau đó là tên cột với [‘..’] Như thường lệ, hãy nhớ chạy mã. Nếu chúng ta muốn thêm cột ngày vào khung dữ liệu của mình thì chúng ta chỉ cần sử dụng pandas library và to_datetime command. Phần tiếp theo liên quan đến việc tạo một biến (cột) mới dựa trên các giá trị từ các biến khác nhau trong khung dữ liệu, mẫu. Một cột mới có tên là "totalbank" sẽ được tạo, cột này tổng hợp tổng số dư ngân hàng trong khung dữ liệu.
  • 79.
    79 Hy vọng rằngmã này hoàn toàn phù hợp với bạn, vì tất cả những gì chúng ta đang làm là tạo một cột mới dựa trên một cột khác. Xin lưu ý rằng phải chỉ định khung dữ liệu cho cột mới và nhớ rằng cột này có phân biệt chữ hoa chữ thường, nhưng đó sẽ là khó khăn duy nhất. Nếu bạn mắc lỗi, đây không phải là vấn đề ở giai đoạn này, vì Python sẽ chỉ ghi đè cột bằng phiên bản chính xác khi bạn chạy lại phiên bản mã chính xác. 5.4.3. Where Lệnh ‘where’ rất mạnh mẽ, vì nó cho phép ta thao tác dữ liệu một cách dễ dàng. Phần này sẽ cung cấp 2 ví dụ về việc sử dụng lệnh ‘where’ để hiểu được tính linh hoạt của nó. Chúng ta đã sử dụng câu lệnh ‘If’ trong Excel trong ‘phần 3.2.2 hàm if. Trước hết, chúng ta sẽ tạo một biến mới (cột) chứa việc sử dụng nợ (số tiền_ sở hữu) bằng cách tiết kiệm. Thông thường, nợ có tỷ lệ% cao hơn tỷ lệ tiết kiệm. Như trước đây chúng ta sẽ tạo một cột mới. Chương trình 5-15: Tạo một cột mới dựa trên các cột khác-2. Từ ví dụ trên, chúng ta có thể thấy rằng chúng ta đã tạo một cột mới có tên là ‘amtowesav’, được tính bằng cách chia amount_owed bởi savings. Nếu chúng ta xem xét biến mới này, chúng ta sẽ nhận thấy những điều sau.
  • 80.
    80 Cột mới củachúng ta có lưu trữ ‘Inf’ bên trong nó, cũng như nan. Điều này có nghĩa là vô hạn, vì chúng ta đã chia một số cho không. Một cách đơn giản để giải quyết vấn đề này là chỉ tính tỷ lệ này khi số tiền tiết kiệm được không bằng 0. Điều này dẫn đến việc sử dụng lệnh where. Thay vì đưa ra lý thuyết, cuốn sách này sẽ chứng minh cách chúng được sử dụng với một ví dụ. Program 5-16: Sử dụng lệnh + sample['amtowesav'] <- This is the name of our new column within the data frame. + np.where(sample.savings !=0, sample.amount_owed / sample.savings, 0) np.where – lệnh mới, hoạt động rất giống với lệnh Excel 'IF’; savings != 0, - thông báo cho Python biết rằng bất cứ khi nào lưu không bằng 0, thì hãy làm như sau: sample.amount_owed / sample.savings - tính toán chúng tôi muốn đã hoàn thành; 0)) – tất cả where savings không bằng 0, thì đặt 0 vào cột ‘amtowesav’. Tiếp theo là dấu ngoặc.
  • 81.
    81 Từ phần trên,chúng ta có thể thấy rằng ‘amtowesav’ có một chuỗi dài các số thập phân. Chỉ để hoàn chỉnh, nhưng không cần thiết, chúng ta có thể làm tròn con số này thành một chữ số thập phân. Chương trình 5-17: Làm tròn số Nếu muốn có 3 chữ số thập phân, thì chỉ cần thay thế ‘1’ bằng ‘3’. Chỉ là một lưu ý cuối cùng về biến mới. Phần tiếp theo yêu cầu tạo một cột mới được gọi là bảng lương, sử dụng các giá trị trong cột tiền lương. + sample['wageband'] < Yêu cầu Python tạo một cột mới có tên là wageband trong khung dữ liệu. + sample np.where( Lệnh chỉ định tiêu chí của cột mới dựa trên dữ liệu có sẵn. + sample.wages<100, 'low', Nếu mức lương thấp hơn 100, thì đặt "low" trong cột mới " wageband". Các dấu phẩy ngược sẽ không xuất hiện trong cột. + np.where(sample.wages<1000, 'medium', Nếu tiền lương dưới 1000, thì hãy đặt 'medium'. Lưu ý rằng nó sẽ không ghi đè quy tắc đầu tiên, (dưới 100) vì nó sẽ xử lý lệnh này theo thứ tự. Ngoài ra, chúng ta chưa sử dụng dấu ngoặc đóng!
  • 82.
    82 + np.where(sample.wages >=1000,'high', 'err'))) phần cuối cùng của mã thông báo cho chúng tôi biết rằng bất kỳ số liệu nào bằng hoặc lớn hơn 1000, hãy đặt 'high' vào cột mới. ‘err’ cho Python biết rằng đối với bất kỳ tình huống nào, trong đó các thông số kỹ thuật không khớp, hãy đặt ‘err’ vào cột. Điều này sẽ giúp chúng ta xác định bất kỳ lỗi nào trong mã hóa của chúng ta. Cuối cùng, chúng ta hoàn thành lệnh bằng dấu ngoặc (cả 3 trong số chúng). 5.4.4 Bài tập 5.2 Tạo một cột mới Bài tập này liên quan đến việc thao tác với các cột land_worth. 1) Tạo một cột mới dựa trên land_worth được gọi là landbands bằng cách sử dụng logic sau: a. Trường hợp land_worth bằng 0 và nhỏ hơn; b. Trường hợp land_worth trên 0 và nhỏ hơn 100; c. Trường hợp land_worth bằng 100 trở lên và nhỏ hơn 1000; d. Trường hợp land_worth bằng 1000 trở lên. 2) Tạo nhãn của riêng bạn cho các dải này. LƯU Ý - theo dõi số lượng dấu ngoặc được sử dụng và đừng quên dấu phẩy.
  • 83.
    83 Giải bài tập5.2. Bảng tóm tắt Bảng 5.4: Tóm tắt các lệnh Python chính Một ghi chú nhanh từ tác giả. Cuốn sách này có vẻ khá chuyên sâu như một khóa học nhập môn, nhưng mục đích chính của nó là đặt ra những nền tảng quan trọng theo cách áp dụng. Chỉ có một cách thực sự để học cách lập trình và đó là thực hiện nó. Chúng tôi đã phát hiện ra rằng mọi người bắt đầu sử dụng bất kỳ
  • 84.
    84 ngôn ngữ lậptrình nào càng sớm thì ngôn ngữ đó càng trở nên dễ dàng hơn và cũng cho phép bạn nâng cao kiến thức của mình hơn.
  • 85.
    85 6. Hợp nhấtdữ liệu Rất hiếm khi xảy ra khi tất cả các yêu cầu dữ liệu của bạn đều có sẵn trong một khung dữ liệu. Trong mục này, chúng ta sẽ tạo một khung dữ liệu giả dựa trên mẫu tệp CSV, để cho phép chúng tôi hợp nhất dữ liệu và giới thiệu nhiều lệnh hơn trong R. Chương này bao gồm các chủ đề: - Lấy mẫu - Giữ / loại bỏ các cột từ các khung dữ liệu - Sắp xếp dữ liệu - Hợp nhất các khung dữ liệu + Kết nối đầy đủ + Kết nối độc quyền + Kết hợp / Nối kết. Như đã đề cập trước đây, ứng dụng có lợi hơn công việc lý thuyết, do đó chúng ta phát triển các khung dữ liệu mới. 6.1. Tạo khung mô phỏng Vui lòng nhập mẫu tệp CSV vào Python. Giai đoạn tiếp theo liên quan đến việc tạo một khung dữ liệu được gọi là mockdata chứa: 1) Hai biến mới: a. Mock_wages, đây là tiền lương nhân với 100; b. Mock_savings, đây là khoản tiết kiệm nhân với 100; 2) Một biến khác sử dụng lệnh np.where được gọi là Land_group a. Trường hợp land_worth bằng 0 và nhỏ hơn; b. Trường hợp land_worth trên 0 và nhỏ hơn 100;
  • 86.
    86 c. Trường hợpland_worth bằng 100 trở lên và nhỏ hơn 1000; d. Trường hợp land_worth bằng 1000 hoặc hơn. 3) Trường ngày tháng được gọi là Mock_date –2002-02-02. 4) Các biến sau: a. Id b. Mock_wages c. Mock_savings d. Land_group e. Mock_date. Nếu bạn quyết định bỏ qua mục 4 và 5 và bắt đầu từ chương này, thì danh sách các yêu cầu này có thể gây khó khăn. Phần 3 - tạo cột ngày tháng Chương trình 6-4: Tạo cột ngày tháng năm Phần cuối cùng của bài tập này yêu cầu khung dữ liệu chỉ chứa các nội dung sau: a. Id b. Mock_wages c. Mock_savings d. Land_groupe
  • 87.
    87 e. Mock_date. Phần 4–tạo khung dữ liệu giả. Chương trình 6-5: Chọn cột Từ đoạn mã trên Chúng ta đã tạo một khung dữ liệu gọi là mockdata, chỉ sử dụng các cột đã chọn (trong dấu phẩy ngược) trong [[…]] Nếu chúng ta xem tất cả các nhiệm vụ đó cùng một lúc, thì điều đó có thể khiến bạn nản lòng. Do khả năng chia nhỏ các nhiệm vụ thành các phần có thể quản lý được, việc tạo khung dữ liệu cuối cùng (mockdata) của chúng ta trở nên dễ dàng hơn. Bước tiếp theo liên quan đến việc chọn một mẫu ngẫu nhiên từ mockdata và gọi nó là mockdata1. Lệnh được gọi là sample. Con số (1000) thông báo cho Python biết tổng số hàng (quan sát) mà chúng tôi yêu cầu. Trong trường hợp này, chúng ta đang yêu cầu Python cung cấp cho 1000 hàng ngẫu nhiên từ mô hình khung dữ liệu. Khung dữ liệu cuối cùng được tạo sẽ được gọi là mocksamp. Điều này sẽ chỉ chứa 3 cột từ mẫu khung dữ liệu: - Id - Wages - Mortgage
  • 88.
    88 Chương trình 6-6:Tạo mocksamp. Như trước đây, việc chọn cột từ khung dữ liệu chủ yếu liên quan đến việc đặt tên khung dữ liệu bên ngoài [[..]] và trong dấu ngoặc, liệt kê các cột muốn trong dấu phẩy ngược được phân tách bằng dấu phẩy. 6.2 Hợp nhất các tập dữ liệu Phần này sẽ chỉ xem xét việc kết hợp hai khung dữ liệu và sẽ tập trung vào ba loại kết hợp khác nhau: Full/Outer Exclusive Appending/concatenating 6.2.1 Full/Outer Join Kết nối đầy đủ sử dụng tất cả dữ liệu từ cả hai tập dữ liệu và khi có dữ liệu ở một phần chứ không phải ở phần kia, thì nó sẽ điền các giá trị này là ‘missing'. Khi giải thích các phép nối, chúng ta có xu hướng sử dụng các vòng kết nối. Kết hợp đầy đủ có nghĩa là chúng ta sẽ sử dụng tất cả dữ liệu từ mocksamp và mockdata1, ngay cả khi có các quan sát trong một tập dữ liệu và không có quan sát nào trong khác. Sao chép và chạy mã bên dưới. 1) Lệnh ở đây là: pd.merge a. Điều này cho Python biết bạn muốn hợp nhất các khung dữ liệu với nhau i. mocksamp 1. điều này cung cấp cho khung dữ liệu một bí danh được gắn nhãn ‘x’. ii. mockdata1
  • 89.
    89 1. điều nàycung cấp cho khung dữ liệu một bí danh được gắn nhãn ‘y’. 2) on = “id” a. Điều này cho Python biết biến để hợp nhất dữ liệu. 3) how=’outer’ a. Đây là một lệnh quan trọng cho Python biết loại liên kết bạn muốn sử dụng. Trong trường hợp này, nó là full/outer join. Hình sau kết quả Full join Vì chúng tôi chỉ lấy một mẫu ngẫu nhiên gồm 1000 hàng từ mẫu, chúng ta sẽ kết thúc với rất nhiều ‘nan’ (naT cho dữ liệu ngày) trong khung dữ liệu, như thể hiện trong hình 6.5. Có một cơ hội rất tốt là bảng sẽ trông khác với hình 6.5, điều này là do Python chọn ngẫu nhiên 1000 hàng. Đừng lo lắng về điều đó, nếu có lỗi, Python sẽ cho bạn biết. Đây là lý do tại sao nó được gọi là full join (tham gia đầy đủ) vì nó chứa tất cả dữ liệu. Nếu có các hàng trong mockdata1 không có trong mocksamp, thì chúng ta sẽ thấy các giá trị bị thiếu (NA) cho các biến từ mocksamp. 6.2.2. Các phép nối độc quyền Các phép nối độc quyền cho phép chúng tôi chọn dữ liệu chỉ có liên quan trong một trong các khung dữ liệu và nơi nó khớp trong khung dữ liệu khác. Ví dụ sau sẽ tập trung vào mockdata1 của khung dữ liệu và ở đâu có sự trùng khớp trên mocksamp của tập dữ liệu, thì nó sẽ sử dụng dữ liệu này.
  • 90.
    90 Hình 6.4: Sơđồ của một phép nối độc quyền. Đoạn mã này rất giống với chương trình 6-7, chỉ với câu lệnh thay đổi như thế nào. Mocksamp chứa 13508 hàng, mockdata1 chứa 1000 hàng. Vì chúng ta chỉ muốn các giá trị có liên quan trong mockdata1, nên mã này tạo ra một dữ liệu nổi tiếng được gọi là 'rightjoin' với chỉ 1000 hàng (quan sát). Đối với phép nối bên trái, chúng ta sẽ sử dụng how = ’left’. Một kiểu kết nối độc quyền khác là khi muốn sử dụng dữ liệu xuất hiện trong cả hai tập dữ liệu, nói cách khác, nơi có cùng ID trong cả hai bảng. Đây được gọi là liên kết bên trong. Hình 6.5: Sơ đồ kết hợp độc quyền (2). Một lần nữa, mã rất giống nhau ngoại trừ how = ‘inner’. Trong trường hợp này, chúng ta sẽ nhận được 1000 hàng (giống như nối phải), điều này là do chúng ta đã lấy một mẫu ngẫu nhiên từ mockdata để tạo mocksamp. 6.2.3 Kết hợp / nối dữ liệu Đôi khi chúng ta có thể có 2 tập dữ liệu mà chúng ta muốn kết hợp bằng cách xếp chồng chúng lên trên tập dữ liệu kia, điều này được gọi là nối hoặc nối.
  • 91.
    91 Hình 6.6: Sơđồ nối thêm Lệnh để nối dữ liệu rất đơn giản, pd.concat. Điều này sẽ tạo ra một khung dữ liệu được gọi là conc chứa 14508 hàng và 7 cột. Chuẩn bị dữ liệu là rất quan trọng khi tiến hành phân tích. Mục 5 cung cấp các lệnh cơ bản để làm sạch dữ liệu. Nếu không làm sạch dữ liệu đơn giản, ta có thể nhận được kết quả sai và số liệu sai lệch được báo cáo. Ngoài ra, hiếm khi dữ liệu yêu cầu được lưu trữ ở một nơi, do đó cần phải nối các bảng, như được mô tả trong mục 6. 6.3. Tóm tắt Bảng dưới đây chứa các đoạn mã chính như được trình bày trong mục 6.
  • 92.
    92 7. Phân tích Phầnnày cung cấp các công cụ để bắt đầu phân tích dữ liệu. Như đã trình bày trước đây, dữ liệu hiếm khi được cung cấp "sẵn sàng để sử dụng". Vì vậy chúng ta phải biết cách điều khiển khung dữ liệu bằng các lệnh cụ thể. Trước đây, chúng ta tính toán các số liệu thống kê đơn giản, bây giờ chúng ta sẽ mở rộng kiến thức vào phân tích. Chương sau trình bày cách chúng ta có thể sử dụng Python để thực hiện các phân tích hữu ích và sâu sắc cũng như cách chúng ta có thể sử dụng nhiều công cụ để trình bày kết quả. Python có một số gói mạnh mẽ cho phép chúng ta thực hiện các phân tích phức tạp, một cách đơn giản. 7.1. Giới thiệu về phân tích dữ liệu Trước đây, chúng ta sử dụng bảng pivot để tiến hành phân tích (mục 3.3.1), chương này sẽ sử dụng Python. Thông thường các báo cáo qua email có tệp đính kèm Excel, nhưng nếu chúng tôi sử dụng dữ liệu thô thay vì dữ liệu tóm tắt, chúng tôi có thể có thể gửi email có kích thước 10 giây hoặc 100 megabyte. Python cho phép chúng tôi giảm kích thước dữ liệu, để cung cấp thông tin chính, sau đó có thể được sử dụng trong Excel. Như phần trước, chúng ta sẽ học bằng ứng dụng chứ không phải lý thuyết. 7.1.1 Tạo tập dữ liệu Giai đoạn đầu tiên liên quan đến việc sử dụng dữ liệu từ sample.csv, với các sửa đổi sau: + Ghi đè nan trong CCJ_go Government thành 0; + Ghi đè nan trong CCJ_private thành 0; + Tạo cột có số 1. Chương trình 7-1: Tạo khung dữ liệu của chúng ta.
  • 93.
    93 Mã này đượcsao chép và dán từ mục 5. Một lượng lớn chương trình có xu hướng liên quan đến việc sao chép, dán và sửa đổi công việc trước đó. Đây là lý do tại sao bạn nên để lại những ghi chú sâu sắc trong mã của bạn. HÃY NHỚ CHẠY MÃ NÀY TRƯỚC KHI TIẾN HÀNH. 7.1.2 Phân tích cơ bản Chỉ là một bản tóm tắt, chúng ta sẽ đưa ra một số thống kê đơn giản: + Tổng số khách hàng có CCJ_private; + Average wages của khách hàng. Các lệnh này rất đơn giản và tạo ra các kết quả sau: + Tổng CCJ_private = 1237; + Average wages = 2269,99. 7.2 Tổng hợp dữ liệu theo nhóm Thông thường người ta thường tóm tắt dữ liệu bằng cách nhóm chúng theo các thuộc tính cụ thể để thu thập phân tích sâu sắc hơn. Ví dụ: Độ tuổi trung bình của nam và nữ. 7.2.1. Ví dụ về tổng hợp dữ liệu theo nhóm Chúng tôi muốn phân tích tổng số CCJ do chính phủ đệ trình, bởi những người đã phá sản. Đối với điều này, chúng ta sẽ: 1. Tạo một khung dữ liệu mới được gọi là sum_exer; 2. Sử dụng cờ mục tiêu để tạo một cột mới được gọi là phá sản; 3. Tóm tắt dữ liệu cho kết quả của chúng tôi Bước 1 và 2 rất đơn giản và đã được đề cập trước đó.
  • 94.
    94 Phần trên choPython biết rằng nếu target bằng 1, thì cột bị phá sản bằng “CÓ”, còn lại đối với tất cả các hàng khác, hãy phá sản bằng “KHÔNG”. Đối với bước 3, chúng ta sẽ tóm tắt theo nhóm. Chương trình 7-4: Tạo một biến và khung dữ liệu mới. We have completed simple statistics before, program7-4 takes it to the next level + sum_exe.groupby(['bankrupt']). sử dụng khung dữ liệu sum_exe groupby(['bankrupt']). – phân đoạn các thống kê sau theo biến bankrupt . + sum()[["count", "CCJ_government"]] sum() – thêm (sum) trường tiếp sau count – Cộng tất cả số 1 CCJ-government – thêm tất cả ccj_government figures. Lập bảng kết quả để dễ tham khảo tạo ra: Bảng 7.1: Bảng kết quả 1) bankrupt a. Biến được phân đoạn để phân tích 2) count a. Đây là biến được sử dụng như được chỉ định trong câu lệnh tóm tắt và cho bạn biết số hàng / quan sát đã được sử dụng từ khung dữ liệu
  • 95.
    95 i. 12387 khôngphải bankrupt ii. 1121 trở thành bankrupt 3) CCJ_government a. Đây là biến được sử dụng như được chỉ định trong lệnh tóm tắt i. 518 CCJ_government không phải bankrupt ii. 2248 CCJ_government bankrupt Từ kết quả, chúng tôi nhận thấy rằng CCJ_go Government lớn hơn tổng số khách hàng trong nhóm đó. Phần sau sẽ nghiên cứu thêm về sự bất thường này. 7.3. Tính toán tỷ lệ phần trăm 7.3.1. Ví dụ về tạo tỷ lệ phần trăm Dựa trên những gì đã được sản xuất trước đó, chúng tôi muốn tính% những người có CCJ CCJ go bankrupt. Ngoài ra, bankruptcy % phá sản cho toàn bộ dân số cũng sẽ được tính toán. Tuân theo các phương pháp cho đến nay trong cuốn sách này, chúng tôi sẽ: 1. Tạo khung dữ liệu dựa trên ví dụ trước (7.2.1) 2. Tạo khung dữ liệu mới dựa trên ví dụ trước mà không có ‘group by’ a. Tạo một cột mới được gọi là bankrupt, với giá trị “ALL” 3. Nối cả hai khung dữ liệu để tạo một khung dữ liệu mới 4. Tính% trên khung dữ liệu mới này. Sửa đổi mã đã sử dụng trước đó, chúng ta có thể nhanh chóng tạo ra:
  • 96.
    96 Lưu ý, đểtính%, bạn không thể sử dụng perc3.CCJ_go Government / perc3.count vì nó sẽ bị lỗi! Cột perc vẫn chưa có dấu%. Điều này có thể được giải quyết bằng cách: + Nhân với 100 + Chuyển số thành chuỗi + Thêm dấu% vào cuối. Ngoài ra, để làm cho kết quả thẩm mỹ hơn, chúng tôi sẽ làm tròn phép tính ban đầu thành 4 chữ số thập phân, điều này sẽ cung cấp cho số liệu% của chúng ta có độ chính xác 2 dấu thập phân.
  • 97.
    97 Kết quả Viết nhữngkết quả này vào một bảng sẽ tạo ra 1) Bankrupt a. Biến được phân đoạn để phân tích, cột đầu tiên 2) Count a. Điều này cho bạn biết số lượng hàng / quan sát đã được sử dụng từ tập dữ liệu cho procedure. 3) CCJ_government a. Đây là biến được sử dụng như được chỉ định trong câu lệnh tóm tắt 4) Perc a. Tính toán phần trăm. Là một nhà phân tích, bạn có thể nhận thấy rằng đối với phá sản = ‘YES’, tỷ lệ phần trăm là hơn 100%. Xem xét nhanh dữ liệu cho thấy một số người có nhiều hơn 1 CCJ. Vì vậy những con số này không đưa ra con số thực về% số người có government CCJ là bankrupt. Đây là một bài học quý giá, đừng bao giờ đưa ra giả định về dữ liệu. 7.3.2 Bài tập 7.1: tóm tắt và tỷ lệ phần trăm Sử dụng ví dụ trước, tạo một biến mới có logic sau: nếu tổng số government CCJ là một hoặc nhiều hơn, hãy làm cho nó bằng bằng 1, nếu không thì làm cho nó bằng 0.
  • 98.
    98 Điều này sẽyêu cầu sử dụng lệnh 'np.where'. Sau đó, hãy khám phá% khách hàng thực sự có government CCJ cuối cùng là bankrupt. 7.3.3 Lời giải bài tập 7.1 Chương trình 7-7: Lời giải đầy đủ bài tập 7-1 Một lần nữa lập bảng kết quả để dễ tham khảo, … Từ bảng 7.3, hơn 52% những người có CCJ government trở thành bankrupt.. chúng ta có thể đã sao chép và dán mã trước đó, với bước mới được thêm vào (chương trình 7-7), hoặc có thể mã hóa mọi thứ từ đầu. Nếu đã sao chép và dán mã từ trước đó, đây không phải là gian lận và hiếm khi có thêm bất kỳ tín dụng nào từ việc viết mã từ đầu (ngoại trừ, có thể, tại các cuộc phỏng vấn xin việc). Có thể an toàn khi giả định rằng đôi khi 80% thời gian của lập trình viên được dành để sao chép, dán và sửa đổi mã trước đó. Đó là kiến thức về chức năng của các lệnh giúp bạn trở thành một lập trình viên giỏi hơn.
  • 99.
    99 7.4. Tạo báocáo thông tin quản lý đơn giản (MI) Cuối cùng, các nhà quản lý cần những số liệu sâu sắc để có thể đưa ra các quyết định thông minh. Phần tiếp theo này sẽ mở rộng kiến thức của chúng ta, hơn nữa để tạo ra một báo cáo đơn giản và hữu ích. Điều này sẽ đòi hỏi phải viết một lượng mã đáng kể và tạo các khung dữ liệu mới, sử dụng các kinh nghiệm trước đây của chúng ta được đề cập đến trong cuốn sách này. 7.4.1. Ví dụ về báo cáo MI đơn giản Tạo một báo cáo chi tiết, theo bankruptcy và cho tất cả: + Tổng số người + Mức lương trung bình + Số CCJ tư nhân và chính phủ + Số dư ngân hàng trung bình + Tiết kiệm trung bình. Trước khi đưa ra giải pháp, vui lòng tìm kèm theo một đoạn mã có liên quan. Nếu như chúng ta muốn tóm tắt và tính toán trung bình trong một dòng mã, sau đó chúng tôi có thể sử dụng. Chương trình 7-8: Tổng kết và tính trung bình + summar1 = sum_exe7_1.groupby(['bankrupt']). Phần này sẽ quen thuộc. + agg({'count':'sum', 'wages':'mean'). Trước đây, chúng ta đã sử dụng tổng bên ngoài dấu ngoặc, nhưng bằng cách sử dụng agg, với các lệnh liên quan, chúng ta có thể tính toán tổng và giá trị trung bình. + reset_index() trong các ví dụ trước của chúng tôi, cột bankrup xuất hiện trong cột chỉ mục, điều này khó xác định. Bằng cách sử dụng lệnh này, chúng ta sẽ có một cột được gọi là chỉ mục.
  • 100.
    100 Báo cáo chỉtrình bày chi tiết và rõ ràng những số liệu này. Chương trình 7-9: Bài tập 7.4.1 Từ hình 7.4: Những khách hàng phá sản có xu hướng + Có nhiều CCJ của chính phủ hơn mức trung bình;
  • 101.
    101 + Có nhiềuCCJ tư nhân hơn mức trung bình; + Có mức lương thấp hơn mức trung bình; + Có số dư ngân hàng thấp hơn mức trung bình; + Có số tiền tiết kiệm thấp hơn mức trung bình; Có thể thấy, kết quả không thực sự gây chú ý và các nhà quản lý có xu hướng thích những số liệu đơn giản với đồ thị. Python có khả năng tạo ra một số đồ thị tuyệt vời, nhưng nhiều doanh nghiệp đã quen thuộc với đồ thị Excel. Do đó, chúng ta sẽ sử dụng Excel để tạo các biểu đồ. Chương trình 7-10: Xuất dữ liệu sang tệp csv cho Exel. + summar3 là khung dữ liệu + .to_csv là lệnh + “C:/temp/summar3.csv", đường dẫn đến lưu file cvs. + index = False, chúng ta không muốn xuất cột chỉ mục trong Python. Trong Excel, bạn có thể dễ dàng thay đổi tên cột và sửa đổi cách dữ liệu được trình bày để tạo báo cáo thông tin quản lý (MI) đơn giản.
  • 102.
    102 Hình 7.6: Báocáo MI đơn giản. 1) Đối với bảng, sau đây được tiến hành a. Đổi tên các cột b. Tô màu các hộp. 2) Biểu đồ hình tròn được tạo bằng phương pháp tương tự như biểu đồ phân tán như đã trình bày chi tiết trong chương 2. Mất vài phút để tạo báo cáo mà không cần mã hóa thêm. Không có quy tắc thành văn nào mà bạn phải sử dụng một ngôn ngữ / phần mềm lập trình để đạt được kết quả cuối cùng. Một số người thích tạo tệp dữ liệu chính với tất cả các số liệu được tổng hợp, sau đó sử dụng Excel để tạo trung bình, tỷ lệ phần trăm, v.v.…. Điều này đã được đề cập vì Python là một công cụ phân tích tuyệt vời có thể xử lý các bộ dữ liệu khổng lồ, nhưng mọi người có thể thích tính ra mức trung bình, v.v.… sau khi tập dữ liệu đã được tóm tắt. Một lý do khác tại sao mọi người thích đồ thị trong Excel là chúng dễ dàng thao tác và thay đổi diện mạo của chúng đòi hỏi ít nỗ lực.
  • 103.
    103 Tôi đã từngtrải qua nhiều nhà quản lý, mỗi người muốn đồ thị được tạo ra theo một cách cụ thể, từ tiêu đề được viết theo một cách nhất định cũng như chú thích là từ cạnh xuống dưới, biểu đồ thanh thay vì đường… danh sách khá đầy đủ. Trong Excel, các biểu đồ này có thể được thay đổi theo yêu cầu của người quản lý khi họ ngồi cạnh bạn, điều này giúp quá trình diễn ra suôn sẻ hơn. 7.5 Bài tập 7.2 tạo một báo cáo MI đơn giản bằng Python và Excel Bài tập sau sử dụng một số khía cạnh nhất định từ mục 5 đến mục 7. Xin lưu ý rằng chúng ta có thể sử dụng mã cũ để sao chép / dán và sửa đổi, điều này chỉ xảy ra trong khi phỏng vấn. 7.5.1. Bài tập 7.2: báo cáo MI đơn giản Tạo báo cáo MI sử dụng dữ liệu từ sample.csv bằng cách thực hiện như sau: + Nhập dữ liệu này (nếu bạn chưa có). + Sử dụng khung dữ liệu này và chia tập dữ liệu theo mức lương thành 5 dải:  0 và dưới 0  Trên 0 và dưới 1000  1000 đến dưới 10000  10000 và dưới 50000  50000 trở lên. Đối với những người chưa phá sản (target = 0), hãy khám phá cho từng của các mức lương: - % số người sở hữu tài sản - % số người có bất kỳ loại CCJ nào - % số người có số tiền tiết kiệm lớn hơn 1000 - Số tiền tiết kiệm trung bình của những người có số tiền tiết kiệm trên 1000. Xuất kết quả sang Excel, tạo biểu đồ và đổi tên các cột cho phù hợp tên mô tả.
  • 104.
    104 7.5.3. Giải bàitập 7.2 Chương trình 7-11: Bài tập 7.2 1) Nhập dữ liệu và nhanh chóng làm sạch các giá trị NA 2) tạo cờ đếm của riêng chúng ta và thay thế giá trị rỗng 3) Để loại bỏ tất cả các trường hợp phá sản
  • 105.
    105 4) Lệnh cungcấp cho mọi người 1 nếu họ có 1 hoặc nhiều CCJ 5) Tạo các dải lương của chúng tôi 6 ) Lệnh cung cấp cho mọi người 1 nếu họ có 1 hoặc nhiều thuộc tính 7) Lệnh cung cấp cho mọi người 1 nếu họ có số tiền tiết kiệm trên 1000 và tạo một cột mới dựa trên thời điểm tiết kiệm trên 1000 8) Tóm tắt dữ liệu Cách tiến hành tiếp theo là vấn đề lựa chọn, ta có thể tính toán các số liệu bằng Python hoặc xuất exer7_2b sang Excel và tính toán các số liệu trong đó. Hình 7.7: Báo cáo bài tập 7.2 trong Exel. Như đã đề cập trước đây, đồ thị và công cụ báo cáo có sẵn bằng Python, nhưng cuốn sách này sẽ sử dụng Excel, do tính đơn giản và kiến thức mà các nhà quản lý có xu hướng thích đồ thị Excel của họ. Các lệnh Excel được sử dụng: + % own property = property / count
  • 106.
    106 + % vớiCCJ = CCJ / count + % với khoản tiết kiệm trên 1000 = save1000 / count + Số tiền tiết kiệm trung bình = save1000 / ovr1000. 7.6. Tóm tắt Mặc dù chúng ta đã trình bày nhiều trong mục này, nhưng các kỹ thuật mới được giới thiệu trong mục này là khá ít. Bảng dưới đây chứa các đoạn mã chính như trong mục. Bảng 7.4: Mã mẫu mục 7
  • 107.
    107 Chương 3. Đánhgiá và hiệu chỉnh dữ liệu 1. Hồi quy tuyến tính đơn giản trong R Chúng tôi đã trình bày hồi quy tuyến tính đơn giản trong mục 2, sử dụng Excel và rất ngắn gọn trong mục 4, sử dụng R. Mục này sẽ trình bày nhiều khía cạnh chúng ta đã thấy trước đây nhưng chi tiết hơn. Phần mở đầu của mục này khác với các phần trước là chúng ta tập trung một chút vào lý thuyết (theo cách áp dụng). Mục này sẽ trình bày chi tiết việc tính toán các thống kê cụ thể:  Phương sai  Độ lệch chuẩn  Sai số chuẩn  Hồi quy tuyến tính đơn giản  R bình phương 1.1. Giới thiệu về hồi quy Hồi quy tuyến tính có nhiều ứng dụng trong thực tế. Hầu hết các ứng dụng của hồi quy tuyến tính thuộc một trong hai loại lớn sau: • Nếu mục tiêu là dự đoán hoặc dự báo, thì hồi quy tuyến tính có thể được sử dụng để phù hợp mô hình dự đoán với một tập dữ liệu quan sát của các giá trị Y và X. • Cố gắng mô hình hóa mối quan hệ giữa hai biến bằng cách điều chỉnh một phương trình tuyến tính với dữ liệu quan sát. Ví dụ, một nhà phân tích muốn tìm mối quan hệ giữa cân nặng và chiều cao của các cá nhân bằng cách sử dụng mô hình hồi quy tuyến tính. 1.1.1 Sơ đồ hồi quy tuyến tính đơn giản Mục đích của hồi quy là mô hình hóa sự phụ thuộc của một biến Y vào biến X. + Y được gọi là biến phụ thuộc hoặc biến đáp ứng. + X được gắn nhãn là biến độc lập, hiệp biến hoặc biến giải thích. Phương trình hồi quy tuyến tính đơn giản: Y = mX + c.
  • 108.
    108 Mục tiêu củahồi quy tuyến tính là tìm đường dự đoán tốt nhất của Y từ X. 1.1.2 Phân phối chuẩn Phân phối chuẩn hoặc Gauss là phân phối liên tục quan trọng nhất trong Thống kê. Đồ thị của phân phối chuẩn là một đường cong hình chuông. Đường cong đối xứng về giá trị trung bình để giá trị trung vị và giá trị chế độ cũng là giá trị trung bình của nó. 1.1.3 Tính phương sai, độ lệch chuẩn và sai số chuẩn Table 8.1: Mean, median, mode and range + Phương sai 2 ( )  các quan sát của bạn thay đổi bao nhiêu so với giá trị trung bình, ví dụ: số 1, 2, 4, 7. + Độ lệch chuẩn ( )  : phản ánh cả độ lệch so với giá trị trung bình và tần suất của độ lệch này, sử dụng các số liệu trên. Ta có: 2 5,25 2,29.      + Sai số chuẩn (SE): một phép đo phổ biến khác để mô tả độ lệch so với giá trị trung bình và tần số 1.1.4 Tính toán hồi quy tuyến tính đơn giản Hồi quy tuyến tính đơn giản đã được đề cập trước đây. Phần này minh họa cách tính toán điều này bằng tay và để hiểu rõ hơn (nếu bạn không quan tâm thì bạn có thể chuyển sang chương 8.2).
  • 109.
    109 Ở đây: x vày là các biến; m là hệ số góc của đường hồi quy; c là điểm giao nhau của đường hồi quy và trục y; N là số giá trị hoặc phần tử; X là điểm đầu tiên; Y là điểm thứ hai; ΣXY là tổng của tích của điểm thứ nhất và thứ hai; ΣX là tổng của điểm thứ nhất; ΣY là tổng của điểm thứ hai; ΣX² là tổng bình phương điểm đầu tiên. 1.1.5. Tính toán hồi quy tuyến tính Tính toán phương trình hồi quy tuyến tính đơn giản sử dụng các hình trong bảng 8.2. Giải ví dụ 8.1 Bước 1: Tìm N: vì có 5 hình, N = 5 Bước 2: Tính X * Y và X²
  • 110.
    110 Bước 3: TínhΣX, ΣY, ΣXY, ΣX² ΣX = 60 + 61 + 62 + 63 + 65 = 311 ΣY = 3.1 + 3.6 + 3.8 + 4 + 4.1 = 18.6 ΣXY = 186 + 219.6 + 235.6 + 252 + 266.5 = 1159.7 ΣX² = 3600 + 3721 + 3844 + 3969 + 4225 = 19539 Bước 4: Thay thế vào công thức tính độ dốc Bước 5: Thay thế trong công thức ở trên: Bước 6: Thay các giá trị này vào công thức phương trình hồi quy Giả sử nếu chúng ta muốn biết giá trị của y khi biến x = 64. Khi đó chúng ta có thể thay thế giá trị trong phương trình đã suy ra: Vì vậy, khi x = 64, chúng ta nên mong đợi y bằng 4,06. 1.1.6 Tính r² R2 : một thước đo mức độ phù hợp của hồi quy tuyến tính. Giá trị r² là một phân số từ 0,0 đến 1,0 và không có đơn vị. Giá trị r² là 0,0 có nghĩa là biết X không
  • 111.
    111 giúp bạn dựđoán Y. Không có mối quan hệ tuyến tính nào giữa X và Y và đường phù hợp nhất là đường nằm ngang đi qua giá trị trung bình của tất cả các giá trị Y. Khi r² bằng 1,0, tất cả các điểm nằm chính xác trên một đường thẳng không có phân tán. Biết X cho phép bạn dự đoán Y một cách hoàn hảo. Giá trị R2 trên 0,7 có nghĩa là phù hợp tốt. 1.1.7. Ví dụ về tính toán bình phương r Một thước đo thống kê về mức độ gần đúng của đường hồi quy đối với các điểm dữ liệu thực. Công thức cho r bình phương: Với giá trị r-square cao, chúng ta biết rằng chúng ta có thể tự tin sử dụng mô hình được tạo ra.
  • 112.
    112 1.2 Tính toánhồi quy tuyến tính đơn giản trong Python Chương trình 8-1: Hồi quy tuyến tính đơn giản Hình 8.2: Kết quả hồi quy tuyến tính đơn giản trong Python Vậy phương trình của đường hồi quy: 1.3. Bài tập trong Python - hồi quy tuyến tính đơn giản 1.3.1. Kịch bản hồi quy tuyến tính Trong việc bán ô tô mới, thường xảy ra trường hợp ô tô càng đắt thì lợi nhuận cho đại lý càng lớn. Giám đốc bán hàng muốn giúp các nhân viên bán hàng của công ty thực hiện việc bán hàng có lợi nhất có thể cho từng khách hàng. Một lĩnh vực quan tâm cụ thể liên quan đến số tiền tín dụng được áp dụng thành công cho các giao dịch mua ô tô mới. Người quản lý đã lấy được mẫu 30 xe bán hàng đã hoàn thành gần đây mà khách hàng đã đảm bảo một khoản vay tín dụng. Tệp CSV có tên reg01 chứa hai biến:
  • 113.
    113 + X: tổngthu nhập hàng năm của người mua (tính bằng 1.000 giây); + Y: số tiền vay tín dụng mà người mua nhận được (tính bằng 1.000 giây). Điều này rõ ràng sẽ hữu ích cho nhân viên bán hàng nếu biết cách nhiều tín dụng mà một người mua tiềm năng có thể được thuyết phục để nộp đơn, dựa trên kiến thức về thu nhập của họ. Trong ví dụ này, chúng ta sẽ sử dụng một thư viện khác cho hồi quy của mình, vì nó cung cấp nhiều thống kê hơn trong kết quả của nó. 1.3.2 Giải pháp hồi quy tuyến tính trong Python Chương trình 8-2: Hồi quy tuyến tính đơn giản - Bài tập. 1) Đầu tiên, chúng ta cần kích hoạt một thư viện mới và nhập dữ liệu 2) y = reg01 ['Y'] - từ khung dữ liệu reg01, chúng ta cần tạo một chuỗi (một mảng) chỉ với các biến mục tiêu y 3) Giai đoạn tiếp theo liên quan đến việc tạo dữ liệu với biến mà chúng ta muốn t sử dụng để dự đoán y. Mô hình gói trong Python không bao gồm một lệnh chặn trong kết quả của nó, trừ khi một biến đã được tạo. Trong trường hợp này,
  • 114.
    114 chúng tôi đãsử dụng sm.add_constant (x). Kết quả tương tự có thể đạt được với x [‘const’] = 1. 4) Mô hình dựa trên bình phương nhỏ nhất thông thường (OLS), trong đó sử dụng mọi thứ trong khung dữ liệu x, để dự đoán y. 5) Bằng cách gọi .fit (), chúng ta nhận được các kết quả thay đổi. Đối tượng này nắm giữ nhiều thông tin về mô hình hồi quy. 6) In kết quả đầy đủ của chúng ta, như thể hiện trong hình 8.3. Dưới đây là mô tả ngắn gọn về một số kết quả: + R-Square - R-Squared là tỷ lệ phương sai trong biến phụ thuộc có thể được giải thích bằng các biến độc lập. R-square là thống kê để đo lường mức độ phù hợp của mô hình với dữ liệu thực tế đã được tính toán trước đó. + Bình phương R được điều chỉnh - Trong nhiều mô hình hồi quy, bình phương rsquared sẽ tăng lên khi có nhiều biến hơn được đưa vào mô hình. Đây là sự điều chỉnh của bình phương R phạt việc bổ sung các yếu tố dự đoán không liên quan vào mô hình. Bình phương R đã điều chỉnh được tính bằng công thức 1 - ((1 - Rsq) (N - 1) / (N - k - 1)) trong đó k là số yếu tố dự đoán. + F-Statistic - Mô hình bình phương trung bình chia cho Sai số bình phương trung bình. Đây là một chỉ báo tốt về việc có mối quan hệ giữa yếu tố dự đoán và các biến phản ứng hay không. Thống kê F càng xa 1 thì càng tốt. + coef - giá trị mô hình của chúng tôi, được tính toán thủ công trước đây.
  • 115.
    115 + Std. Error- đo lường số tiền trung bình mà hệ số ước tính thay đổi so với giá trị trung bình thực tế của biến phản hồi của chúng ta. Lý tưởng nhất là chúng ta muốn một số thấp hơn so với giá trị của nó. + Giá trị T - đây là thước đo có bao nhiêu độ lệch chuẩn mà ước tính hệ số của chúng tôi cách xa 0. Đối với giá trị t, số càng cao thì khả năng dự đoán biến càng mạnh . Ngoài ra, giá trị t cũng được sử dụng để tính giá trị p. + Pr |> t | cho chúng ta biết sức mạnh của dự đoán ‘y’. Giá trị càng thấp thì biến càng mạnh. Giá trị p từ 0,05 (5%) trở xuống là một điểm giới hạn tốt. Áp dụng: y = mx + c. Với giá trị dương trên ước lượng tham số, chúng ta có thể suy ra rằng khi lương tăng, thì số tiền vay cũng vậy. Ngoài ra, với r-square lớn hơn 0,7 (0,7684), chúng ta có thể sử dụng các kết quả này một cách tự tin. Do đó, đối với những người có mức lương 10.000, chúng tôi có thể dự đoán rằng khả năng cho vay của họ sẽ là: 3,43 + (0,19558 x 10) = 5,1858. Do đó, dự đoán tín dụng = 5185,80. Các đơn vị tiền lương có thể thay đổi là vào những năm 1000, do đó chúng ta phải thực hiện các tính toán cần thiết để tạo ra số tiền tín dụng được dự đoán một cách chính xác. 1.4 Tóm tắt Mục đích chính của mục này là đặt nền tảng cho hồi quy tuyến tính và ứng dụng của nó. Tôi đã có kinh nghiệm nhiều người nói rằng họ hiểu hồi quy tuyến tính, nhưng không nắm được những điều cơ bản mà chương này đề cập.
  • 116.
    116 2. Hồi quytuyến tính bội Đây là một điều hiếm khi xảy ra khi chúng ta chỉ có thể sử dụng một biến để dự đoán một kết quả với độ tin cậy. Khi chúng ta sử dụng nhiều hơn một biến giải thích để dự đoán kết quả (Y), chúng ta gọi đây là hồi quy tuyến tính bội. Chương này bao gồm các chủ đề: + Hồi quy đa tuyến tính + Tạo tệp đầu ra + Các phương pháp tiếp cận loại bỏ tuần tự + Mô hình hóa các biến phân loại Theo lưu ý cá nhân, đây là khi hồi quy tuyến tính trở nên thú vị và đòi hỏi nhiều hơn (có thể thú vị hơn). 2.1. Hồi quy tuyến tính bội Trước đây chúng ta chỉ xem xét một biến giải thích. Hồi quy nhiều tuyến tính sử dụng nhiều hơn một biến giải thích để tạo ra phương trình tuyến tính của chúng ta. 1) Phần phụ thuộc (y) 2) Phần chặn (c) 3) Các biến giải thích / độc lập 4) Thuật ngữ sai số a. Khi phát triển các mô hình, giá trị hạn lỗi rất gần bằng 0, vì vậy sẽ bị bỏ qua. Đây chỉ là ở đây về độ chính xác của phương trình và sẽ không được xem xét thêm. Có thể thấy phương trình được viết dưới dạng: Chúng ta chỉ thay thế M bằng β, vì vậy nó là về sự lựa chọn và phong cách.
  • 117.
    117 2.1.1. Ví dụvề hồi quy tuyến tính bội Một tệp CSV được gọi là multi1 chứa các giá trị của các biến sau đây cho một mẫu gồm 19 công ty: + Công ty - tên công ty; + Lợi nhuận - tỷ suất lợi nhuận của công ty% ; + Tăng trưởng - tỷ lệ tăng trưởng; + PER của công ty - tỷ lệ giá trên thu nhập (P-E) của công ty. Ví dụ đầu tiên của chúng tôi liên quan đến việc xây dựng một mô hình hồi quy tuyến tính bội để dự đoán PER từ lợi nhuận và tăng trưởng. Chương trình này rất giống với chương trình 8-2, với sự khác biệt duy nhất, là khung dữ liệu x của chúng ta có 2 biến.
  • 118.
    118 Sử dụng cácước tính, hồi quy tuyến tính bội là: PER dự đoán = 5,56 + (0,47 * Lợi nhuận) + (0,20 * Tăng trưởng). Vì phương trình này sử dụng hai biến giải thích, chúng ta phải sử dụng bình phương r đã điều chỉnh cho hiệu suất của nó. Với r2 được điều chỉnh là 0,54, chúng ta có thể không xem xét sử dụng mô hình này vì nó nằm dưới mức 0,7. Nhưng nếu chúng ta thiếu một mô hình thay thế thì sẽ phải sử dụng nó. Lưu ý: mặc dù chúng ta có thể tạo ra các mô hình thống kê, nhưng đôi khi mô hình đó không đủ chính xác để sử dụng một cách tự tin. Như thường lệ, có một ngoại lệ đối với quy tắc, một số nhà quản lý sẽ thích một mô hình yếu hơn là không có mô hình. Là một nhà phân tích, chúng ta chỉ cung cấp càng nhiều thông tin càng tốt để các nhà quản lý đưa ra quyết định. 2.2 Tạo tệp đầu ra được ghi điểm Đôi khi, kết quả là không đủ và chúng ta muốn các giá trị dự đoán trên khung dữ liệu. Trong Python, chúng ta có thể tạo một tệp đầu ra với dự đoán giá trị, mà không cần phải tự ghi khung dữ liệu. Có thể nhận được các giá trị dự đoán bằng cách sử dụng .fittedvalues. Chương trình 9-2: Nhận giá trị dự đoán.
  • 119.
    119 Bây giờ bạnđã tạo một khung dữ liệu với các giá trị dự đoán. Bài tập 2.1 Một tệp CSV multi2 chứa đơn hàng đồ uống đầu tiên được tiêu thụ tại một nhà hàng / quán bar dựa trên 31 ngày đầu tiên. + Ngày - ngày trong tháng; + x1 - Giá đồ uống trung bình; + x2 - Đồ uống đã đặt; + x3 - Nhiệt độ ban ngày trung bình (F); + Y - thức uống còn lại (pint). Xây dựng mô hình hồi quy tuyến tính bội để dự đoán Y từ x1, x2 và x3. Ngoài ra, hãy thêm vào khung dữ liệu, multi2, các giá trị được dự đoán trong một cột.
  • 120.
  • 121.
    121 Vì mô hìnhnày có 3 biến giải thích, chúng ta sử dụng giá trị r-square đã điều chỉnh, là 0,6807. Với giá trị gần bằng 0,7, chúng ta có thể tin tưởng sử dụng mô hình này. Mức cắt 0,7 có thể được coi là một hướng dẫn chứ không phải là một quy tắc tuyệt đối. 2.3. Thống kê t Thống kê t được trình bày ngắn gọn trong mục 8. Nếu chúng ta xem kết quả từ bài tập 9.1 (hình 9.3), chúng ta sẽ nhận thấy các giá trị t và thống kê t. Thống kê t cung cấp thông tin về mức độ quan trọng của biến đối với mô hình. Bảng 9.1: Xếp hạng ý nghĩa thống kê t. Những thống kê này rất quan trọng, vì nó cho chúng ta biết những biến nào nên được xem xét trong mô hình. Ví dụ 9.3 Sử dụng kết quả trước đó về số lượng đồ uống còn lại, biến nào không đóng góp đáng kể vào mô hình? 1) Thống kê t được gắn nhãn Pr (> | t | 2) Từ Hình 9.4, giá đồ uống trung bình của X1 trên mỗi panh không đóng góp (chúng tôi bỏ qua phần chặn). Trong trường hợp này, ta nên chạy lại mô hình loại trừ biến giải thích 'X1', như được hiển thị trong chương trình 9-4.
  • 122.
    122 Chương trình 9-4:Bài tập 9.1 Hồi quy đa tuyến tính không có X1. 1) Với các biến giải thích có thống kê t nhỏ hơn 0,05, các biến giải thích có thể được sử dụng với độ tin cậy. 2) R-square và r-square được điều chỉnh không giảm đáng kể.
  • 123.
    123 Lưu ý: rằngcác ước lượng tham số và giá trị chặn đã thay đổi, có nghĩa là chúng ta có một mô hình đa tuyến tính mới. Chúng ta đã tiến hành một cách tiếp cận tuần tự được gọi là loại bỏ ngược, bằng cách loại bỏ một biến hoạt động yếu. Các kỹ thuật lựa chọn biến đổi có xu hướng gây ra tranh luận giữa các nhà khoa học / nhà thống kê dữ liệu, mà ta sẽ không đi sâu vào đây. 2.4. Bài tập 9.2 Một tệp CSV có tên là multi3 chứa các giờ dạy hàng tháng cho các trường được chia theo quận. Trong tệp gồm các cột sau: + Học sinh - học sinh trung bình đi học; + Sách - sách trong trường; + Giáo viên - giờ dạy; + Dân số - dân số trong huyện (000); + Vắng mặt - tỷ lệ học sinh vắng mặt; + Học sinh - giờ học sinh ở trường. Tạo chế độ Dự đoán giờ dạy chỉ sử dụng các biến có giá trị dự đoán (p> | t |) dưới 0,05). Gợi ý: lập mô hình tất cả các biến trước, sau đó giảm từng biến một. Chương trình 9-5: Bài tập 9.2 phần1.
  • 124.
    124 Với những cuốnsách có p> | t | 0f 0.915, đây sẽ là biến đầu tiên được sử dụng. Với các học sinh có p> | t | 0f 0,579, đây sẽ là biến tiếp theo.
  • 125.
    125 Với sự vắngmặt có p> | t | 0f 0,078, đây sẽ là biến tiếp theo. Giáo viên = -27.258 + 22,75 * học sinh - 0,727 * dân số. Với bình phương R-1 được ghi lại ở mỗi lần lặp, đây có thể là một nguyên nhân đáng lo ngại. Bất kỳ mô hình nào có giá trị bình phương R đã điều chỉnh lớn hơn 0,95 sẽ cần điều tra. Vì hầu hết có thể, một trong các biến độc lập là một bản sao gần như của biến phụ thuộc.
  • 126.
    126 2.5. Các biếnphân loại trong mô hình Khi xử lý hồi quy, đôi khi chúng ta sử dụng các biến phân loại, cũng như các biến liên tục. Giải pháp là khá đơn giản; chúng ta tạo các biến giả. 2.5.1. Tạo biến giả Các biến giả là các biến độc lập có giá trị là 0 hoặc 1. Ví dụ, nếu chúng ta có một biến được gọi là con có hai giá trị, có và không. Tạo giá trị giả của biến này yêu cầu: Tạo hai cột mới: + Children_y Trong đó children = 'Y' làm cho cột này bằng 1 khác làm cho nó bằng 0 + Children_n Trong đó children = 'N' làm cho cột này bằng 1 khác làm cho nó bằng 0. Vì vậy, về bản chất, đối với mỗi bin được tạo, chúng ta tạo số cột đó dựa trên trên mỗi giá trị. 2.5.2. Bẫy biến giả Khi tạo biến giả, chúng ta cần thận trọng khi sử dụng tất cả các biến giả đã tạo. Với mọi biến phân loại, với k số thùng, chúng ta chỉ cần k-1 biến giả. Nếu chúng ta bao gồm tất cả các biến giả, thì mô hình sẽ bị đa tuyến tính (bẫy biến giả). Khi đó, chúng sẽ có tương quan cao (có thể dự đoán cái này từ cái kia). Sử dụng ví dụ về biến con với mỗi lần children_y = 1, children_n = 0 và ngược lại. Do đó, chúng ta có thể sử dụng children_y để dự đoán trẻ em _n. Để giải quyết vấn đề này, khi tạo mô hình của mình, chúng ta loại trừ một trong các biến giả khỏi mỗi biến mà muốn lập mô hình. Ví dụ: đối với trẻ em, chỉ có thể đưa vào children_y. Biến giả bị loại bỏ được cho điểm 0. 2.5.3. Ví dụ về hồi quy phân loại Các biến phân loại có thể cung cấp cái nhìn sâu sắc hơn về việc dự đoán kết quả. Ví dụ: giới tính, khu vực của khách hàng hoặc đôi khi chúng ta có thể muốn nhóm các biến liên tục thành các nhóm. Chẳng hạn, tuổi. Tệp CSV có tên là categ1 chứa 19 công ty với các biến sau: + Công ty - tên công ty; Lợi nhuận - tỷ suất lợi nhuận của công ty% ;
  • 127.
    127 + Tăng trưởng- tỷ lệ tăng trưởng; + PER của công ty - tỷ lệ giá trên thu nhập; + (P-E) của công ty - Ngành có 3 loại: 1 = Tài chính. 3 = Máy tính. Nhập dữ liệu này và xây dựng mô hình hồi quy đa tuyến tính để dự đoán PER từ lợi nhuận, tăng trưởng và ngành.
  • 128.
    128 1) Với mộtbiến phân loại được bao gồm, mỗi thùng được cho điểm riêng của nó. a. Ngành 1 (còn thiếu trong kết quả) có giá trị là 0. b. Không giống như với các biến liên tục, trong đó chúng ta nhân các biến giải thích với các ước tính, vì phân loại chúng chỉ có một giá trị cố định 2) Kết quả thu thập được đã cho chúng ta thấy rằng lợi nhuận không phải là một biến giải thích tốt để dự đoán PER. Vì vậy, chúng ta cần mô hình lại, loại trừ lợi nhuận. Chương trình 9-10: Bài tập 9.3 part2. Từ các kết quả gần đây, ngành_3 không phải là dự đoán, do đó chúng ta phải loại bỏ kết quả này, kết hợp với ngành_1. Điều này đã bị loại bỏ ở giai đoạn cuối. Một số nhà phân tích sẽ đưa điều này vào mô hình của họ, vì nó là một phần của một biến.
  • 129.
    129 Tăng trưởng cógiá trị pr (> | t |) lớn hơn 0,05, vì vậy chúng ta có thể muốn xóa biến này theo cách thủ công, đây là lựa chọn cá nhân. Trong trường hợp này, sẽ chỉ viết kết quả cuối cùng. Đối với ngành 1 và 3: 11.1177 + 0 + (0,3027 * Tăng trưởng); Đối với ngành 2: 11.177+ 6.1414 + (0,3027 * Tăng trưởng). Trong suốt bài tập này, điều chỉnh-R -squared, chuyển từ 0,695 xuống 0,676. Điều này cho thấy việc giảm các biến yếu không ảnh hưởng quá nhiều đến hiệu suất của mô hình. 2.6. Tóm tắt Việc tạo mô hình hồi quy rất đơn giản. Hy vọng rằng bạn đã nhận thấy rằng các bước thực hiện như sau: 1) Nhập dữ liệu 2) Xác định mục tiêu của chúng tôi 3) Xác định các biến của chúng tôi
  • 130.
    130 4) Tạo môhình 5) Kiểm tra các biến là dự đoán, nếu không quay lại 3, cho đến khi hoàn thành 6) Đảm bảo mô hình đủ mạnh để dự đoán (adj. R bình phương). Mối quan tâm chính khi tạo mô hình luôn là dữ liệu. Nếu không có hiểu biết thực sự về dữ liệu, mô hình bạn tạo có thể tạo ra kết quả không thực tế với các biến lạ.
  • 131.
    131 3. Hồi quylogistic Hồi quy logistic được sử dụng để tính xác suất của một sự kiện xảy ra, ví dụ: người phản hồi chiến dịch thư trực tiếp hoặc khách hàng bị phá sản. Khi xem xét một hồi quy logistic, chúng ta cộng các điểm số của mô hình, sau đó chuyển nó thành xác suất, như sẽ được chứng minh. 3.1. Giải thích logit Logit là một thiết bị để hạn chế xác suất giữa 0 và 1. Trong đó z là tổ hợp tuyến tính có thể nhận bất kỳ giá trị nào. Từ hình 10.1, có thể thấy rõ rằng hình dạng mô hình không còn là tuyến tính nữa và giống với hình chữ s hơn. 10.2 Mô hình hậu cần 10.2.1 Tạo mô hình logistic Python phù hợp với các mô hình hồi quy logistic tuyến tính cho kết quả nhị phân (ví dụ: thành công hoặc thất bại). Cách tiếp cận tương tự như chương 9: - Nhập dữ liệu; - Kích hoạt thư viện; - Xác định biến mục tiêu của chúng ta; - Xác định biến dự báo của chúng ta; - Tạo biến giả nếu cần; - Tạo mô hình; - Giải mã kết quả.
  • 132.
    132 3.2. Ví dụvề tạo mô hình hậu cần Ví dụ này sử dụng tệp CSV có tên là logistic1, nhập tệp này và gọi khung dữ liệu logistic1. Tệp này có một biến phản hồi nhị phân được gọi là đã bán, giá trị này bằng 1 nếu một lần bán đã được thực hiện và bằng 0 nếu ngược lại. Có ba biến dự báo: - Thu nhập (liên tục); - Tỷ lệ thế chấp (% tiền lương dành cho thế chấp) (liên tục); - Cấp (xếp hạng khách hàng) (phân loại / rời rạc). Bậc thay đổi nhận các giá trị từ 1 đến 4. Các bậc có thứ hạng 1 có uy tín cao nhất, trong khi những bậc có 4 có uy tín thấp nhất. Chương trình 10 – 1. Chương trình logistic thứ nhất Như chúng ta có thể thấy mã trông rất giống với mục 9 (chương trình 9-11), trong đó sự khác biệt chính duy nhất là 1. thay vì sử dụng OLS, chúng ta đang sử dụng Logit.
  • 133.
    133 Chúng ta cóthể coi ‘P> | z | ' với P> | t |. Như chúng ta có thể thấy, tất cả các biến đều thỏa mãn quy tắc 0,05. Phương trình ở đây là: Điểm = -3,99 + (thu nhập * 0,0002) + (thế chấp * 0,0804) + (Ước tính bậc) Nhưng, chúng ta phải chuyển nó thành xác suất: Để hiểu quá trình này, chúng ta sẽ chia nhỏ điều này bằng Python. Tính điểm khung dữ liệu bằng Python. Điểm số rất hữu ích để chứng minh cách chúng ta tính toán các xác suất. Từ hình 10.2, có các hệ số, nhưng chúng ta cần độ chính xác hơn để tạo ra điểm số. Chương trình 10-3: Cải thiện mã độ chính xác của hệ số. + income = 0.000226; + mortgage = 0.080404;
  • 134.
    134 + tier_2 =-0.675443; + tier_3 = -1.340204; + tier_4 = -1.551464; + const = -3.989979. Using ID 1, Tier=3 as an example: Sự khác biệt là do làm tròn số. Lặp lại cho ID 3, trong đó tier = 1. Một lần nữa, sự khác biệt là do làm tròn, điều này không đáng quan tâm. Tuy nhiên, như đã đề cập trước đây, chúng ta muốn xác suất chứ không phải điểm số. Vì vậy có thể tự tính toán hoặc nhờ Python thực hiện. Chương trình 10-4: Sản xuất mô hình logistic xác suất. Chương trình 10-4 chuyển tỷ số thành xác suất Nếu chọn lấy các xác suất ngay lập tức, thì chúng ta có thể sử dụng Chương trình 10-5: Sản xuất mô hình logistic xác suất- phiên bản2 + logistic1['pred_y1']= điều này cho Python biết rằng chúng ta muốn tạo một biến mới trong khung dữ liệu đã ghi được gọi là pred_y1.
  • 135.
    135 + pred_y1 result.predict(x) Điềunày yêu cầu Python sử dụng kết quả như dự đoán đã tạo trước đó (x), sử dụng khung dữ liệu x và áp dụng mô hình trên đó để nhận dự đoán của chúng ta. Có thể thấy, các xác suất từ việc sử dụng phương trình, đến sử dụng Python ngay lập tức cung cấp cùng một câu trả lời. Sử dụng ví dụ trước của chúng ta về ID 1 và 3. Đối với điểm ID 1 = -1,56712. Phủ định đã biến mất khi cả hai phủ định triệt tiêu lẫn nhau. Do đó, xác suất để những người tiêu dùng đó phù hợp với cùng tiêu chí của ID 2 của một lần bán hàng là 17,26%. Đối với ID 3 Do đó, xác suất để những người tiêu dùng đó phù hợp với cùng tiêu chí của ID 3 của một lần bán hàng là 73,84%. Một câu hỏi phổ biến được đặt ra ở giai đoạn này là "Tại sao chúng ta lại tính toán xác suất của các sự kiện khi chúng ta có câu trả lời ở phía trước?" Vì vậy, chúng ta có thể áp dụng mô hình này trên một
  • 136.
    136 nhóm dân sốkhác. Cụ thể, có thể tối đa hóa nỗ lực của mình để đạt được thành công. Ví dụ: Tại sao lại tập trung nỗ lực vào một khách hàng có xác suất bán hàng là 17% trong khi chúng ta có một khách hàng khác với 73%? Sử dụng các mô hình thống kê để giúp chúng ta đưa ra các lựa chọn sáng suốt và thông minh. Điều này sẽ luôn gợi lên câu hỏi tiếp theo… 'Làm thế nào để biết liệu mô hình này có tốt hay không?' Đối với mô hình hồi quy đa tuyến tính, chúng ta sử dụng bình phương R đã điều chỉnh, nhưng vì đường cong logistic không phải là một đường thẳng, sẽ cần thứ gì khác. 3.3. Phép đo logistic Như đã trình bày chi tiết trước đây, r-square không phải là một phép đo tốt cho độ chính xác của mô hình logistic. Trong cuốn sách này, chúng tôi sẽ sử dụng Gini (Somers ’D). Gini (Somers ’D). Mặc dù phương trình của Gini và Somers D là khác nhau, nhưng cả hai đều có cùng một câu trả lời. 3.3.1. Gini (Somers ’D) Trước khi bắt đầu cung cấp mã cho Gini (Somers’ D), chúng tôi sẽ giới thiệu thêm một vài khái niệm ROC (Đặc tính hoạt động của máy thu) và AUC (Vùng dưới đường cong). Khi chúng ta thử và dự đoán một kết quả nhị phân (ví dụ: có / không, bán / không bán), sẽ xem xét tỷ lệ dương tính thực sự (TPR) và tỷ lệ dương tính giả (FPR). Tiếp theo sau một cách tiếp cận rất đơn giản của một tập dữ liệu giả lập Bảng 10.1: TPR và FPR.
  • 137.
    137 Từ bảng trên,chúng ta có thể thấy cách chúng ta có thể tính toán TPR và FPR + Sắp xếp dữ liệu theo xác suất giảm dần; + Cộng dồn mục tiêu; + Cộng dồn tích lũy các mục tiêu; + TPR là mục tiêu tích lũy chia cho tổng mục tiêu; + FPR là mục tiêu không phải mục tiêu tích lũy chia cho tổng số mục tiêu không phải mục tiêu. Càng nhiều mục tiêu ở cuối cao hơn của phạm vi xác suất và càng có nhiều mục tiêu không phải là mục tiêu ở cuối phạm vi xác suất thấp hơn, thì mô hình càng mạnh. Sử dụng dữ liệu này, chúng ta có thể xây dựng biểu đồ ROC của mình. Đưa dữ liệu này vào Excel, sau đó xây dựng biểu đồ phân tán trên các cột TPR, FPR với nhau. Hình 10.5: Dữ liệu TPR và FPR trong Exel.
  • 138.
    138 Tiếp theo, thêmmột cơ sở vào biểu đồ, với cơ sở là cả trục X và Y. Bao gồm các số 0, trên biểu đồ để xây dựng biểu đồ để mọi thứ bắt đầu từ 0, 0 trên biểu đồ. Đây là một ví dụ về biểu đồ ROC. ROC được sử dụng để đánh giá hiệu suất của một mô hình hậu cần. Trong ví dụ này, TPR nằm trên trục x. Nó là một trường hợp hiếm khi xây dựng biểu đồ ROC với ít quan sát (hàng) như vậy, vì chúng ta nhận được một đường cong lung lay. Nếu biểu đồ đi theo đường thẳng từ phía dưới bên trái đến phía trên bên phải (đường cơ sở), thì mô hình không thể phân biệt giữa mục tiêu và không mục tiêu, vì vậy nó không có sức mạnh. Từ biểu đồ, chúng ta có thể thấy rằng có không gian giữa cơ sở (AUC) và đường cong, do đó, có sức mạnh trong mô hình này. Hiệu suất sau đó được tính bằng cách tính Diện tích dưới đường cong (AUC). Điều này mang lại cho bạn điểm từ 0 đến 1. Điểm 0,5 có nghĩa là không
  • 139.
    139 có sức mạnhnào, với bất kỳ giá trị nào gần với một giá trị tiên đoán hơn, điều này sẽ dẫn chúng ta tính toán Gini (hoặc Somers ’D). Gini cho chúng ta biết mô hình phân tách mục tiêu và không mục tiêu tốt như thế nào bằng cách sử dụng xác suất. Python có thể cho phép chúng ta tính toán Gini bằng cách sử dụng nó để tính Diện tích dưới đường cong (AUC). Trước hết, hãy lưu bảng dưới dạng tệp CSV, (trong ví dụ này, nó được gọi là roc.csv). Bảng 10.3: Roc.csv. Chương trình 10-6: Tính AUC và Gini bằng Python 1. AUC = roc_auc_score (roc.Target, roc.Probability) a. AUC là tệp đầu ra của chúng ta; b. roc_auc_score cho Python biết hàm chúng ta muốn sử dụng;
  • 140.
    140 c. roc.Target, roc.Probability,điều này cho Python biết trường với xác suất và những gì chúng ta đang cố gắng dự đoán 2. Gini = (2 * AUC) -1 a. Phép tính Gini của chúng ta. 3. AUC = 0,68 4. Gini = 0,36. Ở giai đoạn này, mọi người có xu hướng hỏi, "Gini tốt là gì?" Rất tiếc, không có câu trả lời chắc chắn, vì nó phụ thuộc vào chất lượng dữ liệu, ngành bạn đang tham gia và mô hình mới có thực hiện tốt mô hình trước đó không. Nếu bạn tạo một mô hình mới và nó không hoạt động tốt hơn mô hình cũ, thì các câu hỏi sẽ được đưa ra về lý do tại sao họ nên sử dụng mô hình mới. 3.4. Hiệu suất của mô hình logistic ban đầu Sử dụng khung dữ liệu logistic1, được tạo trong chương trình 10.4, bước đầu tiên của chúng ta sẽ là tạo đường cong ROC bằng Python. Như mọi khi, chúng ta tuân theo cùng một mẫu, thư viện hoạt động, chạy chức năng để thu thập số liệu thống kê / đồ thị. Trong trường hợp này, hàm roc_curve, cung cấp cho chúng ta thống kê chính của chúng ta tpr và fpr (các
  • 141.
    141 ngưỡng không đượcđề cập trong cuốn sách này). Các lệnh đã được trình bày trong mục 4. Phần tiếp theo liên quan đến việc tính toán AUC và Gini của chúng ta. Chương trình 10-8: Tính AUC và Gini. AUC = 0.6928, Gini = 0.3856. 3.5 Tạo phiếu ghi điểm 3.5.1 Bài tập 10.1: mô hình logistic Bài tập này sẽ sử dụng kết hợp các tài liệu đã đề cập trước đó để tạo ra một phiếu ghi điểm. Công ty của bạn muốn tiếp thị một sản phẩm cao cấp cho khách hàng của mình. Chiến lược quan trọng của họ là không muốn tiếp thị cho những khách hàng sẽ phá sản trong tương lai. Nhập dữ liệu sample.csv (trong mục 5) và thay thế các giá trị bị thiếu CCJ_go Government và CCJ_private bằng 0. Sử dụng dữ liệu này để tạo thẻ điểm hậu cần dự đoán khả năng khách hàng bị phá sản (target = 1), sử dụng các biến: + CCJ_go Government; + CCJ_private; + bank_balance;
  • 142.
    142 + properties; + money_owed. Ghivào phiếu ghi điểm để tạo ra một xác suất. Kiểm tra xem các tính toán của bạn có khớp với giải pháp Python hay không. Đo hiệu suất của mô hình này tạo ra: + Biểu đồ ROC + Giá trị AUC + Giá trị Gini. 3.5.2. Lời giải bài tập 10.1 Chương trình 10-9: Bài tập 9.1 Lời giải phần 1.
  • 143.
    143 Giải pháp đãđược chia thành 6 phân đoạn 1) Nhập và làm sạch dữ liệu cơ bản Có thể, bạn đã tham khảo các chương trước để biết mã này. Như đã đề cập trước đây, nếu chúng ta có mã sẵn sàng để sử dụng… hãy sử dụng nó. 2) Tạo biến mục tiêu và biến dự đoán của chúng ta Mẹo duy nhất mà tôi có thể cung cấp ở đây là đảm bảo rằng bạn không thêm bất kỳ chữ hoa nào khi nhập các biến. 3)
  • 144.
    144 Từ kết quả,chúng ta nhận được phép tính điểm. Bây giờ có thể tính điểm của bạn. 4) Cho điểm và tính xác suất Sử dụng ID 1 làm ví dụ của: + CCJ_go Government = 0 + CCJ_private = 0
  • 145.
    145 + bank_balance =1884; + thuộc tính = 1; + amount_owed = 24. Ví dụ. Sử dụng ID 2: + CCJ_government = 0; + CCJ_private = 0; + bank_balance = 33946; + properties = 2; + amount_owed = 1. Sự khác biệt giữa kết quả Python và của chúng ta (như đã đề cập trước đây) là do làm tròn.
  • 146.
    146 Hình 10.11: Gắnxác suất vào khung dữ liệu Tính xác suất rất dễ dàng, là khi chúng ta có điểm For ID1, the score = -7.734440 Vì vậy, ID1 có 0,0437% khả năng phá sản. 5) Tạo biểu đồ ROC
  • 147.
    147 Hình 10.12: Biểuđồ ROC cho bài tập 10.1 Từ biểu đồ, chúng ta có thể nói rằng chúng ta sẽ có một con số AUC lớn, điều này ngụ ý rằng mô hình sẽ rất mang tính dự đoán. 6) Tính AUC và Gini Với giá trị AUC là 0,8939 và Gini là 0,7877, những số liệu này xác nhận rằng mô hình dự đoán kết quả tốt. 3.6. Tóm tắt Mục này hy vọng sẽ hiểu được những kiến thức cơ bản và các phép đo chính khi chúng ta xây dựng một mô hình logistic. Trong một kịch bản thực tế, quá trình xây dựng mô hình sẽ sử dụng nhiều biến hơn, yêu cầu thử nghiệm thêm và nhiều vấn đề (thường là dữ liệu).