Gấu trúc trăn kiểm tra chi vuông

Trong hai bài viết trước, tôi đã nói về cách đo lường mối tương quan giữa các cột khác nhau trong tập dữ liệu của bạn và cách phát hiện đa cộng tuyến giữa chúng

Thống kê trong Python - Hiểu về Phương sai, Hiệp phương sai và Tương quan

Hiểu mối quan hệ giữa dữ liệu của bạn và biết sự khác biệt giữa Hệ số tương quan Pearson và…

hướng tới khoa học dữ liệu. com

Thống kê trong Python - Collinearity và Multicollinearity

Hiểu cách phát hiện đa cộng tuyến trong tập dữ liệu của bạn

hướng tới khoa học dữ liệu. com

Tuy nhiên, những kỹ thuật này rất hữu ích khi các biến mà bạn đang cố gắng so sánh là liên tục. Làm thế nào để bạn so sánh chúng nếu các biến của bạn là phân loại? . e. tương quan]. Chúng tôi sẽ sử dụng phép kiểm tra thống kê được gọi là chi-square [thường được viết là χ2]

Trước khi chúng ta bắt đầu thảo luận về chi-square, đây là tóm tắt nhanh về các phương pháp kiểm tra có thể được sử dụng để kiểm tra các loại biến khác nhau

Sử dụng thống kê chi-square để xác định xem hai biến phân loại có tương quan với nhau không

Thống kê chi-square [χ2] là một cách để kiểm tra mối quan hệ giữa hai biến danh nghĩa phân loại

Các biến danh nghĩa chứa các giá trị không có thứ tự nội tại. Ví dụ về các biến danh nghĩa là giới tính, chủng tộc, màu mắt, màu da, v.v. Mặt khác, các biến thứ tự chứa các giá trị có thứ tự. Ví dụ về các biến thứ tự là lớp, trình độ học vấn, tình trạng kinh tế, v.v.

Ý tưởng chính đằng sau phép thử chi-square là so sánh các giá trị quan sát được trong dữ liệu của bạn với các giá trị mong đợi và xem liệu chúng có liên quan với nhau hay không. Đặc biệt, đây là một cách hữu ích để kiểm tra xem hai biến danh nghĩa phân loại có tương quan với nhau hay không. Điều này đặc biệt quan trọng trong học máy khi bạn chỉ muốn các tính năng tương quan với mục tiêu được sử dụng để đào tạo

Có hai loại kiểm định chi-square

  • Chi-Square Goodness of Fit Test - kiểm tra xem một biến có khả năng đến từ một phân phối nhất định hay không
  • Kiểm tra độc lập Chi-Square - kiểm tra xem hai biến có tương quan với nhau hay không

Kiểm tra https. //www. vân vân. com/en_us/statistics-knowledge-portal/chi-square-test. html để thảo luận chi tiết hơn về hai bài kiểm tra chi bình phương ở trên

Khi so sánh để xem hai biến phân loại có tương quan với nhau hay không, bạn sẽ sử dụng Kiểm định độc lập Chi-Square

Các bước để thực hiện kiểm tra Chi-Square

Để sử dụng kiểm định chi-square, bạn cần thực hiện các bước sau

  1. Xác định giả thuyết vô hiệu của bạn và giả thuyết thay thế. họ đang
  • H₀ [Giả thuyết không có giá trị] - rằng 2 biến phân loại được so sánh là độc lập với nhau
  • H₁ [Giả thuyết thay thế] - rằng 2 biến phân loại được so sánh phụ thuộc vào nhau

2. Xác định giá trị α. Đây là rủi ro mà bạn sẵn sàng chấp nhận khi đưa ra kết luận sai. Ví dụ: giả sử bạn đặt α=0. 05 khi kiểm tra tính độc lập. Điều này có nghĩa là bạn đang chấp nhận rủi ro 5% khi kết luận rằng hai biến là độc lập trong khi thực tế chúng không phải như vậy.

3. Tính điểm chi-square bằng cách sử dụng hai biến phân loại và sử dụng nó để tính giá trị p. Giá trị p thấp có nghĩa là có mối tương quan cao giữa hai biến phân loại của bạn [chúng phụ thuộc lẫn nhau]. Giá trị p được tính từ điểm chi bình phương. Giá trị p sẽ cho bạn biết liệu kết quả kiểm tra của bạn có đáng kể hay không

Trong phân tích chi-square, giá trị p là xác suất thu được chi-square lớn hơn hoặc lớn hơn so với trong thử nghiệm hiện tại và dữ liệu vẫn sẽ hỗ trợ cho giả thuyết. Đó là xác suất xảy ra sai lệch so với những gì được mong đợi chỉ do ngẫu nhiên. Nói chung giá trị p bằng 0. 05 hoặc lớn hơn được coi là tới hạn, bất kỳ giá trị nào thấp hơn có nghĩa là độ lệch là đáng kể và giả thuyết đang được kiểm tra phải bị bác bỏ

Nguồn. https. //passel2. unl. edu/xem/bài học/9beaa382bf7e/8

Để tính giá trị p, bạn cần hai thông tin

  • Bậc tự do - số loại trừ 1
  • điểm Chi bình phương

Nếu giá trị p thu được là

  • < 0. 05 [giá trị α bạn đã chọn], bạn từ chối H₀ [Giả thuyết không] và chấp nhận H₁ [Giả thuyết thay thế]. Điều này có nghĩa là hai biến phân loại phụ thuộc
  • > 0. 05 bạn chấp nhận H₀ [Giả thuyết không] và bác bỏ H₁ [Giả thuyết thay thế]. Điều này có nghĩa là hai biến phân loại là độc lập

Trong trường hợp lựa chọn tính năng cho học máy, bạn sẽ muốn tính năng được so sánh với mục tiêu có giá trị p thấp [dưới 0. 05], vì điều này có nghĩa là tính năng này phụ thuộc vào [tương quan với] mục tiêu

Với điểm chi-square được tính toán, bạn cũng có thể sử dụng nó để tham khảo bảng chi-square để xem điểm của bạn nằm trong vùng từ chối hay vùng chấp nhận

Tất cả các bước trên nghe có vẻ hơi mơ hồ và cách tốt nhất để thực sự hiểu cách hoạt động của chi-square là xem một ví dụ. Trong phần tiếp theo, tôi sẽ sử dụng bộ dữ liệu Titanic và áp dụng kiểm tra chi-square trên một số tính năng và xem chúng có tương quan như thế nào với mục tiêu

Sử dụng kiểm tra chi bình phương trên bộ dữ liệu Titanic

Một cách hay để hiểu một chủ đề mới là xem qua các khái niệm bằng ví dụ. Đối với điều này, tôi sẽ sử dụng bộ dữ liệu Titanic cổ điển [https. //www. kaggle. com/tedllh/titanic-tàu]

Bộ dữ liệu Titanic thường được sử dụng trong học máy để minh họa cách xây dựng mô hình học máy và sử dụng mô hình đó để đưa ra dự đoán. Cụ thể, tập dữ liệu chứa một số tính năng [Pclass, Sex, Age, Embarked, v.v.] và một mục tiêu [Sống sót]. Một số tính năng trong tập dữ liệu là các biến phân loại

  • Pclass-hạng cabin mà hành khách đã ở
  • Giới tính-giới tính của hành khách
  • Embarked-cảng lên tàu
  • Sống sót - nếu hành khách sống sót sau thảm họa

Bởi vì bài viết này khám phá các mối quan hệ giữa các tính năng và mục tiêu phân loại, chúng tôi chỉ quan tâm đến những cột có chứa các giá trị phân loại

Đang tải tập dữ liệu

Bây giờ bạn đã có được tập dữ liệu, hãy tải nó lên trong Pandas DataFrame

import pandas as pd
import numpy as np
df = pd.read_csv['titanic_train.csv']
df.sample[5]

Hình ảnh của tác giả

Làm sạch dữ liệu và kỹ thuật tính năng

Có một số cột không thực sự hữu ích và do đó chúng tôi sẽ tiến hành loại bỏ chúng. Ngoài ra, có một số giá trị bị thiếu, vì vậy hãy loại bỏ tất cả các hàng có giá trị trống

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df

Hình ảnh của tác giả

Chúng tôi cũng sẽ thêm một cột nữa có tên là Một mình, dựa trên các cột Parch [Cha mẹ hoặc con cái] và Sibsp [Anh chị em ruột hoặc vợ/chồng]. Ý tưởng mà chúng tôi muốn khám phá là liệu việc ở một mình có ảnh hưởng đến khả năng sống sót của hành khách hay không. Vì vậy, Alone là 1 nếu cả Parch và Sibsp đều là 0, nếu không thì nó là 0

df['Alone'] = [df['Parch'] + df['SibSp']].apply[
lambda x: 1 if x == 0 else 0]
df

Hình ảnh của tác giả

Trực quan hóa mối tương quan giữa các tính năng và mục tiêu

Bây giờ dữ liệu đã được làm sạch, hãy thử hình dung giới tính của hành khách có liên quan như thế nào đến sự sống sót của họ sau vụ tai nạn

import seaborn as sns
sns.barplot[x='Sex', y='Survived', data=df, ci=None]

Cột Sáu chứa dữ liệu danh nghĩa [i. e. thứ hạng không quan trọng]

Hình ảnh của tác giả

Từ hình trên, bạn có thể thấy rằng trong số tất cả các hành khách nữ, hơn 70% sống sót; . Có vẻ như tồn tại một mối quan hệ rất bền chặt giữa tính năng Giới tính và Sống sót. Để xác nhận điều này, chúng ta sẽ sử dụng kiểm định chi-square để xác nhận điều này sau

Làm thế nào về Pclass và Survived?

sns.barplot[x='Pclass', y='Survived', data=df, ci=None]

Hình ảnh của tác giả

Có lẽ không có gì đáng ngạc nhiên khi nó cho thấy hành khách ngồi ở hạng Pclass càng cao thì tỷ lệ sống sót của hành khách càng cao.

Tính năng quan tâm tiếp theo là nếu nơi lên tàu quyết định ai sống sót và ai không

sns.barplot[x='Embarked', y='Survived', data=df, ci=None]

Hình ảnh của tác giả

Từ biểu đồ, có vẻ như nhiều người bắt đầu từ C [Cherbourg] sống sót hơn

C = Cherbourg;

Bạn cũng muốn biết liệu ở một mình trong chuyến đi có khiến người ta sống sót hơn không

ax = sns.barplot[x='Alone', y='Survived', data=df, ci=None]    
ax.set_xticklabels[['Not Alone','Alone']]

Hình ảnh của tác giả

Bạn có thể thấy rằng nếu một người ở cùng với gia đình của họ, người đó sẽ có cơ hội sống sót cao hơn

Trực quan hóa mối tương quan giữa từng tính năng

Bây giờ chúng tôi đã trực quan hóa mối quan hệ giữa các tính năng phân loại với mục tiêu [Sống sót], bây giờ chúng tôi muốn trực quan hóa mối quan hệ giữa từng tính năng. Trước khi bạn có thể làm điều đó, bạn cần chuyển đổi các giá trị nhãn trong cột Giới tính và Bắt đầu thành số. Để làm điều đó, bạn có thể sử dụng lớp LabelEncoder trong sklearn

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import preprocessing
le = preprocessing.LabelEncoder[]
le.fit[df['Sex']]
df['Sex'] = le.transform[df['Sex']]
sex_labels = dict[zip[le.classes_, le.transform[le.classes_]]]
print[sex_labels]
le.fit[df['Embarked']]
df['Embarked'] = le.transform[df['Embarked']]
embarked_labels = dict[zip[le.classes_,
le.transform[le.classes_]]]
print[embarked_labels]

Đoạn mã trên nhãn mã hóa các cột Six và Embarked. Đầu ra hiển thị ánh xạ của các giá trị cho mỗi cột, điều này rất hữu ích sau này khi thực hiện dự đoán

________số 8

Các câu sau đây cho thấy mối quan hệ giữa Embarked và Sex

ax = sns.barplot[x='Embarked', y='Sex', data=df, ci=None]
ax.set_xticklabels[embarked_labels.keys[]]

Hình ảnh của tác giả

Có vẻ như nhiều nam giới lên máy bay từ Southampton [S] hơn là ở Queenstown [Q] và Cherbourg [C]

Làm thế nào về Bắt tay và Một mình?

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
0

Hình ảnh của tác giả

Có vẻ như phần lớn những người khởi hành từ Queenstown đều đi một mình

Và cuối cùng, hãy xem mối quan hệ giữa Tình dục và Một mình

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
1

Hình ảnh của tác giả

Như bạn có thể thấy, có nhiều nam giới đi du lịch một mình hơn nữ giới

Xác định các giả thuyết

Bây giờ bạn xác định giả thuyết không và giả thuyết thay thế của mình. Như đã giải thích trước đó, chúng

  • H₀ [Giả thuyết không có giá trị] — rằng 2 biến phân loại được so sánh là độc lập với nhau
  • H₁ [Giả thuyết thay thế] - rằng 2 biến phân loại được so sánh phụ thuộc vào nhau

Và bạn rút ra kết luận của mình dựa trên các điều kiện giá trị p sau đây

  • p < 0. 05 - điều này có nghĩa là hai biến phân loại có tương quan với nhau
  • p > 0. 05 - điều này có nghĩa là hai biến phân loại không tương quan với nhau

Tính toán χ2 theo cách thủ công

Hãy thực hiện thủ công các bước tính giá trị χ2. Bước đầu tiên là tạo một bảng dự phòng. Sử dụng các cột Sáu và Sống sót làm ví dụ, trước tiên bạn tạo một bảng dự phòng

Hình ảnh của tác giả

Bảng dự phòng ở trên hiển thị phân bố tần suất của hai cột phân loại — Giới tính và Người sống sót

Bậc tự do tiếp theo được tính là [số hàng -1] * [số cột -1]. Trong ví dụ này, bậc tự do là [2–1]*[2–1] = 1

Khi bảng dự phòng được tạo, hãy tổng hợp tất cả các hàng và cột, như thế này

Hình ảnh của tác giả

Trên đây là giá trị quan sát của bạn

Tiếp theo, bạn sẽ tính toán các giá trị Kỳ vọng. Đây là cách chúng được tính toán

  • Thay thế từng giá trị trong giá trị được quan sát bằng tích của tổng của cột và tổng của hàng, chia cho tổng

Hình dưới đây cho thấy cách tính giá trị đầu tiên

Hình ảnh của tác giả

Hình tiếp theo cho thấy cách tính giá trị thứ hai

Hình ảnh của tác giả

Đây là kết quả cho các giá trị mong đợi

Hình ảnh của tác giả

Sau đó, tính giá trị chi-square cho mỗi ô bằng công thức cho χ2

Hình ảnh của tác giả

Áp dụng công thức này cho các giá trị Quan sát và Dự kiến, bạn sẽ nhận được các giá trị chi bình phương

Hình ảnh của tác giả

Điểm chi-square là tổng lớn của các giá trị chi-square

Hình ảnh của tác giả

Bạn có thể sử dụng các trang web sau để xác minh xem các số có chính xác không

  • Máy tính Chi-Square - https. //www. toán học. com/data/chi-square-máy tính. html

Việc triển khai Python cho các bước trên được chứa trong hàm chi2_by_hand[] sau

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
2

Hàm chi2_by_hand[] nhận ba đối số — khung dữ liệu chứa tất cả các cột của bạn, theo sau là hai chuỗi chứa tên của hai cột mà bạn đang so sánh. Nó trả về một bộ — điểm chi-square, cộng với bậc tự do

Bây giờ hãy kiểm tra chức năng trên bằng bộ dữ liệu Titanic. Đầu tiên, hãy so sánh cột Sáu và cột Sống sót

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
3

Bạn sẽ thấy kết quả sau

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
4

Sử dụng điểm chi-square, bây giờ bạn có thể quyết định xem bạn sẽ chấp nhận hay bác bỏ giả thuyết không bằng cách sử dụng đường cong phân phối chi-square

Hình ảnh của tác giả

Trục x biểu thị điểm số χ2. Khu vực bên phải của khu vực chi bình phương quan trọng được gọi là khu vực bác bỏ. Khu vực bên trái của nó được gọi là khu vực chấp nhận. Nếu điểm chi-square mà bạn đạt được nằm trong vùng chấp nhận, thì giả thuyết không được chấp nhận;

Vì vậy, làm thế nào để bạn có được khu vực chi-square quan trọng?

Bảng từ https. //Mọi người. smp. Vì thế. ăn. au/YoniNazarathy/stat_models_B_course_spring_07/distributions/chisqtab. pdf

Bạn có thể xem Bảng Chi-Square tại https. //www. toán học. com/data/chi-square-table. html

Đây là cách bạn sử dụng bảng chi-square. Với α của bạn được đặt thành 0. 05 và 1 bậc tự do, vùng chi-square quan trọng là 3. 84 [tham khảo biểu đồ trên]. Đặt giá trị này vào đường cong phân phối chi-square, bạn có thể kết luận rằng

Hình ảnh của tác giả
  • Vì giá trị chi-square được tính toán [205] lớn hơn 3. 84, do đó nó rơi vào vùng bác bỏ, và do đó giả thuyết không bị bác bỏ và giả thuyết thay thế được chấp nhận
  • Nhắc lại giả thuyết thay thế của chúng tôi là. H₁ [Giả thuyết thay thế] - rằng 2 biến phân loại được so sánh phụ thuộc vào nhau

Điều này có nghĩa là các cột Six và Survived phụ thuộc vào nhau

Thông thường, bạn có thể sử dụng hàm chi2_by_hand[] trên các tính năng khác

Tính giá trị p

Phần trước cho thấy cách bạn có thể chấp nhận hoặc bác bỏ giả thuyết không bằng cách kiểm tra điểm chi-square và so sánh nó với đường cong phân phối chi-square

Một cách khác để chấp nhận hoặc bác bỏ giả thuyết không là sử dụng giá trị p. Hãy nhớ rằng, giá trị p có thể được tính bằng cách sử dụng điểm chi bình phương và bậc tự do

Để đơn giản, chúng ta sẽ không đi vào chi tiết cách tính giá trị p bằng tay.

Trong Python, bạn có thể tính giá trị p bằng cách sử dụng hàm sf[] của mô-đun thống kê

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
5

Bây giờ bạn có thể gọi hàm chi2_by_hand[] và nhận cả điểm chi_square, bậc tự do và giá trị p

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
6

Đoạn mã trên dẫn đến giá trị p sau

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
7

Tóm lại, bạn chấp nhận hoặc bác bỏ các giả thuyết và hình thành kết luận của mình dựa trên các điều kiện giá trị p sau đây

  • p < 0. 05 - điều này có nghĩa là hai biến phân loại có tương quan với nhau
  • p > 0. 05 - điều này có nghĩa là hai biến phân loại không tương quan với nhau

Và vì p < 0. 05 - điều này có nghĩa là hai biến phân loại có tương quan với nhau

Thử các tính năng khác

Hãy thử các cột phân loại có chứa các giá trị danh nghĩa

df.drop[columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], 
inplace=True]
df.dropna[inplace=True]
df
8

Vì giá trị p của cả Embarked và Alone đều < 0. 05, bạn có thể kết luận rằng cả hai tính năng Bắt đầu và Một mình đều tương quan với mục tiêu Sống sót và nên được đưa vào để đào tạo trong mô hình của bạn

Tóm lược

Trong bài viết này, tôi đã giải thích ngắn gọn về cách thức hoạt động của kiểm tra thống kê chi bình phương và cách bạn có thể áp dụng nó vào bộ dữ liệu Titanic. Một vài lưu ý thận trọng sẽ hữu ích ở đây

  1. Trong khi hệ số Pearson và hệ số xếp hạng của Spearman đo lường mức độ liên kết giữa hai biến, kiểm định chi bình phương đo lường tầm quan trọng của mối liên hệ giữa hai biến. Điều nó cho bạn biết là liệu mối quan hệ mà bạn tìm thấy trong mẫu có khả năng tồn tại trong dân số hay khả năng xảy ra do lỗi lấy mẫu là bao nhiêu
  2. Kiểm tra chi bình phương nhạy cảm với các tần số nhỏ trong bảng dự phòng của bạn. Nói chung, nếu một ô trong bảng dự phòng của bạn có tần số từ 5 trở xuống, phép kiểm chi bình phương sẽ dẫn đến kết luận sai. Ngoài ra, không nên sử dụng kiểm định chi bình phương nếu cỡ mẫu nhỏ hơn 50

Tôi hy vọng bây giờ bạn đã hiểu rõ hơn về cách thức hoạt động của chi-square và cách nó có thể được sử dụng để lựa chọn tính năng trong học máy. Hẹn gặp lại trong bài viết tiếp theo của tôi

chi2 trong Python là gì?

số liệu thống kê. chi2[] là biến ngẫu nhiên liên tục chi vuông được xác định với định dạng chuẩn và một số tham số hình dạng để hoàn thành đặc tả của nó.

Điều gì sẽ được chuyển đến bài kiểm tra chi2_contingency trong Python?

Hàm chi2_contingency[] của scipy. mô-đun thống kê lấy làm đầu vào, bảng dự phòng ở định dạng mảng 2d. Nó trả về một bộ chứa thống kê kiểm tra, giá trị p, bậc tự do và bảng dự kiến ​​[bảng chúng tôi đã tạo từ các giá trị được tính toán] theo thứ tự đó .

Chúng ta có thể sử dụng chi?

Có thể lưu ý Chi-Square cũng có thể được sử dụng cho biến số sau khi nó được phân tách phù hợp .

Bạn có thể

Kiểm tra Chi bình phương được sử dụng để so sánh một nhóm bằng một giá trị hoặc để so sánh hai nhóm trở lên, luôn sử dụng dữ liệu phân loại .

Chủ Đề