Ma trận tương quan với các biến phân loại và liên tục python
Khi chúng tôi muốn tính toán mối tương quan giữa hai biến liên tục, chúng tôi thường sử dụng hệ số tương quan Pearson
Tuy nhiên, khi chúng ta muốn tính toán mối tương quan giữa một biến liên tục và một biến phân loại, chúng ta có thể sử dụng một thứ được gọi là tương quan lưỡng cực điểm Show
Tương quan nhị phân điểm được sử dụng để tính toán mối tương quan giữa một biến phân loại nhị phân (một biến chỉ có thể nhận hai giá trị) và một biến liên tục và có các thuộc tính sau
Ví dụ sau đây cho thấy cách tính tương quan nhị phân điểm trong thực tế Ví dụ. Tính toán tương quan nhị phân điểmGiả sử một giáo sư đại học muốn xác định xem có mối tương quan nào giữa giới tính và điểm số trong một kỳ thi năng khiếu cụ thể không Anh ấy thu thập dữ liệu sau về 12 nam và 12 nữ trong lớp của mình Vì giới tính là một biến phân loại và điểm số là một biến liên tục, nên việc tính toán mối tương quan điểm-lưỡng tính giữa hai biến là điều hợp lý Giáo sư có thể sử dụng bất kỳ phần mềm thống kê nào (bao gồm Excel, R, Python, SPSS, Stata) để tính tương quan điểm - nhị phân giữa hai biến Đoạn mã sau cho biết cách tính tương quan điểm-hai miền trong R, sử dụng giá trị 0 để biểu thị nữ và 1 để biểu thị nam cho biến giới tính #define values for gender gender <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) #define values for score score <- c(77, 78, 79, 79, 82, 84, 85, 88, 89, 91, 91, 94, 84, 84, 84, 85, 85, 86, 86, 86, 89, 91, 94, 98) #calculate point-biserial correlation cor.test(gender, score) Pearson's product-moment correlation data: gender and score t = 1.3739, df = 22, p-value = 0.1833 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: -0.1379386 0.6147832 sample estimates: cor 0.2810996 Từ đầu ra, chúng ta có thể thấy rằng hệ số tương quan biserial điểm là 0. 281 và giá trị p tương ứng là 0. 1833 Vì hệ số tương quan là dương nên nó cho chúng ta biết rằng có một mối tương quan thuận giữa giới tính và điểm số Vì chúng tôi mã hóa nam là 1 và nữ là 0, điều này cho thấy rằng điểm số có xu hướng cao hơn đối với nam (i. e. điểm có xu hướng tăng khi giới tính “tăng” từ 0 lên 1) Tuy nhiên, vì giá trị p không nhỏ hơn. 05, hệ số tương quan này không có ý nghĩa thống kê Tài nguyên bổ sungCác hướng dẫn sau đây giải thích cách tính tương quan nhị phân điểm bằng các phần mềm thống kê khác nhau Trong cả hai trường hợp này, độ mạnh của mối tương quan giữa các biến có thể được đo lường bằng kiểm tra ANOVA. ANOVA là viết tắt của Phân tích phương sai. Trên thực tế, thử nghiệm này đo lường nếu có bất kỳ sự khác biệt đáng kể nào giữa các giá trị trung bình của biến số cho từng giá trị phân loại. Đây là thứ mà bạn cũng có thể hình dung bằng cách sử dụng biểu đồ hộp Giả thuyết không(H0) Thử nghiệm giả thuyết ANOVA. Các biến không tương quan với nhau Trong ví dụ dưới đây, chúng tôi đang cố gắng đo lường xem có bất kỳ mối tương quan nào giữa FuelType trên CarPrices hay không. Ở đây FuelType là một công cụ dự đoán phân loại và CarPrices là biến mục tiêu số # Generating sample data import pandas as pd ColumnNames=['FuelType','CarPrice'] DataValues= [[ 'Petrol', 2000], [ 'Petrol', 2100], [ 'Petrol', 1900], [ 'Petrol', 2150], [ 'Petrol', 2100], [ 'Petrol', 2200], [ 'Petrol', 1950], [ 'Diesel', 2500], [ 'Diesel', 2700], [ 'Diesel', 2900], [ 'Diesel', 2850], [ 'Diesel', 2600], [ 'Diesel', 2500], [ 'Diesel', 2700], [ 'CNG', 1500], [ 'CNG', 1400], [ 'CNG', 1600], [ 'CNG', 1650], [ 'CNG', 1600], [ 'CNG', 1500], [ 'CNG', 1500] ] #Create the Data Frame CarData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(CarData.head()) ######################################################## # f_oneway() function takes the group data as input and # returns F-statistic and P-value from scipy.stats import f_oneway # Running the one-way anova test between CarPrice and FuelTypes # Assumption(H0) is that FuelType and CarPrices are NOT correlated # Finds out the Prices data for each FuelType as a list CategoryGroupLists=CarData.groupby('FuelType')['CarPrice'].apply(list) # Performing the ANOVA test # We accept the Assumption(H0) only when P-Value > 0.05 AnovaResults = f_oneway(*CategoryGroupLists) print('P-Value for Anova is: ', AnovaResults[1]) Đầu ra mẫu Vì đầu ra của giá trị P gần như bằng không, do đó, chúng tôi bác bỏ H0. Điều này có nghĩa là các biến có tương quan với nhau Mối tương quan giữa hai tính năng phân loạiĐây là một tình huống thường phát sinh trong quá trình học máy phân loại. Biến mục tiêu là biến phân loại và các yếu tố dự đoán có thể là liên tục hoặc phân loại, vì vậy khi cả hai đều là phân loại, thì cường độ của mối quan hệ giữa chúng có thể được đo bằng cách sử dụng kiểm tra Chi bình phương Kiểm định Chi-square tìm xác suất của giả thuyết Null(H0)
Nó có thể giúp hiểu liệu cả hai biến phân loại có tương quan với nhau hay không. Trong trường hợp bên dưới, chúng tôi cố gắng đo lường mối tương quan giữa GENDER và LOAN_APPROVAL # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1]) Đầu ra mẫu Kiểm định chi bình phương giữa hai biến phân loại để tìm mối tương quanH0. Các biến không tương quan với nhau. Đây là H0 được sử dụng trong kiểm định Chi-square Trong ví dụ trên, giá trị p cao hơn 0. 05. Do đó H0 sẽ được chấp nhận. Điều này có nghĩa là các biến không tương quan với nhau. Điều này có nghĩa là nếu hai biến tương quan với nhau, thì giá trị p sẽ rất gần bằng 0 Chi tiết về bài kiểm tra chi-squareTrong phần này, tôi sẽ giải thích cách chúng ta có thể kiểm tra hai cột phân loại trong tập dữ liệu để xác định xem chúng có phụ thuộc lẫn nhau không (i. e. tương quan). Chúng tôi sẽ sử dụng phép kiểm tra thống kê có tên 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ôngThố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. 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ông thường chứa các giá trị được sắp xếp theo 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 bài kiểm tra chi bình phương là so sánh các giá trị quan sát được trong dữ liệu với các giá trị mong đợi và xem liệu chúng có liên quan 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, nơi chúng tôi 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
Kiểm tra https. //www. jmp. 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 liệu hai biến phân loại có tương quan với nhau hay không, chúng tôi sẽ sử dụng Kiểm tra tí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 ta cần thực hiện các bước sau
2. Quyết định giá trị α. Đây là rủi ro mà chúng tôi sẵn sàng chấp nhận khi đưa ra kết luận sai. Ví dụ: giả sử chúng ta đặt α=0. 05 khi kiểm tra tính độc lập. Điều này có nghĩa là chúng tôi đ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 toán 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 (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 biết kết quả kiểm tra có ý nghĩa hay không
Để tính giá trị p, chúng ta cần hai mẩu thông tin
Nếu giá trị p thu được là
Trong trường hợp lựa chọn tính năng cho máy học, chúng tôi muốn tính năng đang đượ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, chúng ta cũng có thể sử dụng điểm này để tham khảo bảng chi-square để xem điểm nằm trong vùng từ chối hay vùng chấp nhận. 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 bình phương 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 TitanicMộ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 nó để đưa ra dự đoán. Cụ thể, tập dữ liệu chứa một số tính năng (Pclass, Giới tính, Tuổi, Đã lên đường, 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
Bởi vì phần 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ệuHãy tải tập dữ liệu trong Pandas DataFrame import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5) Làm sạch dữ liệu và kỹ thuật tính năngCó 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 Chúng tôi cũng sẽ thêm một cột khác có tên là Một mình, dựa trên 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 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 Trực quan hóa mối tương quan giữa các tính năng và mục tiêuBâ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ọ trong vụ tai nạn import seaborn as sns sns.barplot(x='Sex', y='Survived', data=df, ci=None) Cột Giới tính chứa dữ liệu danh nghĩa (i. e. thứ hạng không quan trọng) Từ con số trên, chúng ta 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 các tính năng Tình dục 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 Thế còn Pclass và Surved thì sao? sns.barplot(x='Pclass', y='Survived', data=df, ci=None) Có lẽ không có gì đáng ngạc nhiên khi điều đó cho thấy rằng hạng Pclass mà hành khách ngồi 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 ________số 8 Từ biểu đồ, có vẻ như nhiều người khởi hành từ C (Cherbourg) đã sống sót hơn C = Cherbourg; Chúng tôi cũng muốn biết liệu ở một mình trong chuyến đi có khiến một người 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']) Chúng ta 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ăngBâ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 có thể làm điều đó, chúng tôi 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 đó, chúng ta có thể sử dụng lớp LabelEncoder trong sklearn # Generating sample data import pandas as pd ColumnNames=['FuelType','CarPrice'] DataValues= [[ 'Petrol', 2000], [ 'Petrol', 2100], [ 'Petrol', 1900], [ 'Petrol', 2150], [ 'Petrol', 2100], [ 'Petrol', 2200], [ 'Petrol', 1950], [ 'Diesel', 2500], [ 'Diesel', 2700], [ 'Diesel', 2900], [ 'Diesel', 2850], [ 'Diesel', 2600], [ 'Diesel', 2500], [ 'Diesel', 2700], [ 'CNG', 1500], [ 'CNG', 1400], [ 'CNG', 1600], [ 'CNG', 1650], [ 'CNG', 1600], [ 'CNG', 1500], [ 'CNG', 1500] ] #Create the Data Frame CarData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(CarData.head()) ######################################################## # f_oneway() function takes the group data as input and # returns F-statistic and P-value from scipy.stats import f_oneway # Running the one-way anova test between CarPrice and FuelTypes # Assumption(H0) is that FuelType and CarPrices are NOT correlated # Finds out the Prices data for each FuelType as a list CategoryGroupLists=CarData.groupby('FuelType')['CarPrice'].apply(list) # Performing the ANOVA test # We accept the Assumption(H0) only when P-Value > 0.05 AnovaResults = f_oneway(*CategoryGroupLists) print('P-Value for Anova is: ', AnovaResults[1])0 Nhãn đoạn mã trên mã hóa các cột Sex và Embarked . Đầu ra hiển thị ánh xạ của các giá trị cho từng cột, điều này rất hữu ích sau này khi thực hiện dự đoán # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])0 Các câu sau đây cho thấy mối quan hệ giữa Đã bắt tay và Giới tính # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])1 Có vẻ như nhiều nam giới lên máy bay từ Southampton (S) hơn là ở Queenstown (Q) và Cherbourg (C) Thế còn Bắt đầu và Một mình thì sao? # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])2 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 # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])3 Như chúng ta 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ếtBây giờ chúng ta xác định giả thuyết vô hiệu và giả thuyết thay thế. Như đã giải thích trước đó, chúng
Và chúng tôi rút ra kết luận dựa trên các điều kiện giá trị p sau đây
Tính toán χ2 theo cách thủ côngHã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 bảng dự phòng. Sử dụng các cột Giới tính và Sống sót làm ví dụ, trước tiên chúng tôi tạo một bảng dự phòng Bảng ngẫu nhiên ở 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à Sống sót Bậc thang tự do tiếp theo được tính bằng (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 Trên đây là Giá trị được quan sát Tiếp theo, chúng tôi sẽ tính toán các giá trị Dự kiến. Đây là cách chúng được tính toán
Hình dưới đây cho thấy cách tính giá trị đầu tiên Hình tiếp theo cho thấy cách tính giá trị thứ hai Đây là kết quả cho các giá trị Mong đợi Sau đó, tính giá trị chi-square cho từng ô bằng cách sử dụng công thức cho χ2 Áp dụng công thức này cho các giá trị Quan sát và Dự kiến , chúng tôi nhận được các giá trị chi bình phương Điểm chi-square là tổng các giá trị chi-square Chúng tôi có thể sử dụng các trang web sau để xác minh xem các con số có chính xác không
Việc triển khai Python cho các bước trên có trong hàm chi2_by_hand() sau đây # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])4 Hàm chi2_by_hand() có ba đối số — khung dữ liệu chứa tất cả các cột, theo sau là hai chuỗi chứa tên của hai cột mà chúng ta đ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. Trước tiên, hãy so sánh cột Giới tính và cột Sống sót # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])5 # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])6 Bằng cách sử dụng điểm số chi-bình phương, giờ đây chúng ta có thể quyết định xem chúng ta sẽ chấp nhận hay từ chối giả thuyết không bằng cách sử dụng đường cong phân phối chi-square Trục x biểu thị điểm χ2. Khu vực bên phải của khu vực chi-square quan trọng được gọi là khu vực từ chối. 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 bình phương mà chúng tôi thu được nằm trong vùng chấp nhận, thì giả thuyết không được chấp nhận; Vậy làm thế nào để chúng ta có được vùng chi-square quan trọng? Chúng ta 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 chúng tôi sử dụng bảng chi-square. Với α được đặt thành 0. 05 và 1 bậc tự do, vùng chi-square tới hạn 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, chúng ta có thể kết luận rằng
Điều này có nghĩa là các cột Giới tính và Sống sót phụ thuộc vào nhau. Chúng ta có thể sử dụng hàm chi2_by_hand() trên các tính năng khác Tính giá trị pPhần trước cho thấy cách chúng ta 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, chúng ta có thể tính toán giá trị p bằng cách sử dụng hàm sf() của mô-đun thống kê # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])7 Giờ đây, chúng ta 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 # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])8 Đoạn mã trên dẫn đến giá trị p sau # Creating a sample data frame import pandas as pd ColumnNames=['CIBIL','AGE','GENDER' ,'SALARY', 'APPROVE_LOAN'] DataValues=[ [480, 28, 'M', 610000, 'Yes'], [480, 42, 'M',140000, 'No'], [480, 29, 'F',420000, 'No'], [490, 30, 'M',420000, 'No'], [500, 27, 'M',420000, 'No'], [510, 34, 'F',190000, 'No'], [550, 24, 'M',330000, 'Yes'], [560, 34, 'M',160000, 'Yes'], [560, 25, 'F',300000, 'Yes'], [570, 34, 'M',450000, 'Yes'], [590, 30, 'F',140000, 'Yes'], [600, 33, 'M',600000, 'Yes'], [600, 22, 'M',400000, 'Yes'], [600, 25, 'F',490000, 'Yes'], [610, 32, 'M',120000, 'Yes'], [630, 29, 'F',360000, 'Yes'], [630, 30, 'M',480000, 'Yes'], [660, 29, 'F',460000, 'Yes'], [700, 32, 'M',470000, 'Yes'], [740, 28, 'M',400000, 'Yes']] #Create the Data Frame LoanData=pd.DataFrame(data=DataValues,columns=ColumnNames) print(LoanData.head()) ######################################################### # Cross tabulation between GENDER and APPROVE_LOAN CrosstabResult=pd.crosstab(index=LoanData['GENDER'],columns=LoanData['APPROVE_LOAN']) print(CrosstabResult) # importing the required function from scipy.stats import chi2_contingency # Performing Chi-sq test ChiSqResult = chi2_contingency(CrosstabResult) # P-Value is the Probability of H0 being True # If P-Value>0.05 then only we Accept the assumption(H0) print('The P-Value of the ChiSq Test is:', ChiSqResult[1])9 Tóm lại, chúng tôi chấp nhận hoặc từ chối các giả thuyết và đưa ra kết luận dựa trên các điều kiện giá trị p sau đây
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ácHãy thử các cột phân loại có chứa các giá trị danh nghĩa import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)0 Vì giá trị p cho cả Embarked và Alone đều < 0. 05, chúng tôi có thể kết luận rằng cả hai tính năng Đã lên đường 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 chúng tôi Tóm tắt Chi-squareMột vài lưu ý thận trọng sẽ hữu ích ở đây
Thử nghiệm chi bình phương được sử dụng khi cả biến độc lập và biến phụ thuộc đều là biến phân loại. Tuy nhiên, nếu biến độc lập là biến phân loại và biến phụ thuộc là biến số thì sao? Và vì vậy trong phần này, cuộc thảo luận của chúng ta sẽ xoay quanh ANOVA và cách chúng ta sử dụng nó trong học máy để lựa chọn tính năng. Trước khi chúng ta bắt đầu, thật hữu ích khi tóm tắt các phương pháp khác nhau mà chúng ta đã thảo luận cho đến nay ANOVA là gì?ANOVA được sử dụng để kiểm tra hai biến, trong đó
ANOVA được sử dụng khi biến phân loại có ít nhất 3 nhóm (i. e ba giá trị duy nhất khác nhau). Nếu chỉ muốn so sánh hai nhóm, chúng tôi sử dụng kiểm định t. ANOVA cho chúng tôi biết nếu một biến số thay đổi theo cấp độ của biến phân loại. ANOVA sử dụng các bài kiểm tra f để kiểm tra thống kê tính bình đẳng của các phương tiện. Các bài kiểm tra F được đặt tên theo thống kê kiểm tra của chúng, F, được đặt tên để vinh danh Ngài Ronald Fisher Dưới đây là một số ví dụ để dễ hiểu hơn khi chúng ta có thể sử dụng ANOVA Chúng tôi có một bộ dữ liệu chứa thông tin về một nhóm người liên quan đến việc sử dụng phương tiện truyền thông xã hội của họ và số giờ họ ngủ Chúng tôi muốn tìm hiểu xem liệu lượng sử dụng mạng xã hội (biến phân loại) có tác động trực tiếp đến số giờ ngủ (biến số) Chúng tôi có bộ dữ liệu chứa ba nhãn hiệu thuốc khác nhau và số ngày thuốc có hiệu lực Chúng tôi muốn tìm hiểu xem liệu có mối quan hệ trực tiếp giữa một thương hiệu cụ thể và hiệu quả của nó hay không ANOVA kiểm tra xem có phương sai bằng nhau giữa các nhóm tính năng phân loại đối với phản hồi số hay không. Nếu có phương sai bằng nhau giữa các nhóm, điều đó có nghĩa là tính năng này không ảnh hưởng đến phản hồi và do đó, nó (biến phân loại) không thể được xem xét để đào tạo mô hình Thực hiện ANOVA bằng tayCách tốt nhất để hiểu ANOVA là sử dụng một ví dụ. Trong ví dụ sau, tôi sử dụng tập dữ liệu hư cấu để ghi lại thời gian phản ứng của một nhóm người khi họ được đưa cho một loại đồ uống cụ thể Tập dữ liệu mẫuTôi có tập dữ liệu mẫu có tên đồ uống. csv chứa nội dung sau import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)1 Có tất cả 10 đội — mỗi đội gồm 3 người. Mỗi người trong nhóm được phát ba loại đồ uống khác nhau — nước, coca và cà phê. Sau khi uống đồ uống, họ được yêu cầu thực hiện một số hoạt động và thời gian phản ứng của họ được ghi lại. Mục đích của thí nghiệm này là để xác định xem đồ uống có ảnh hưởng gì đến thời gian phản ứng của một người hay không Trước tiên, hãy tải tập dữ liệu vào Khung dữ liệu Pandas import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)2 Ghi lại kích thước quan sát mà chúng tôi sẽ sử dụng sau này import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)3 Trực quan hóa tập dữ liệuSẽ rất hữu ích khi trực quan hóa việc phân phối dữ liệu bằng Boxplot import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)4 Chúng ta có thể thấy rằng ba loại đồ uống có cùng thời gian phản ứng trung bình Xoay khung dữ liệuĐể thuận tiện cho việc tính toán ANOVA, chúng ta cần xoay khung dữ liệu import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)5 Các cột đại diện cho ba loại đồ uống khác nhau và các hàng đại diện cho 10 đội. Chúng tôi cũng sẽ tận dụng cơ hội này để ghi lại số lượng mục trong mỗi nhóm, cũng như số lượng nhóm mà chúng tôi sẽ sử dụng sau này import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)6 Xác định các giả thuyếtBây giờ chúng ta xác định giả thuyết vô hiệu và giả thuyết thay thế, giống như kiểm định chi bình phương. họ đang
Bước 1 — Tính phương tiện cho tất cả các nhómBây giờ chúng tôi đã sẵn sàng để bắt đầu tính toán cho ANOVA. Đầu tiên, hãy tìm giá trị trung bình cho mỗi nhóm import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)7 Từ đây, giờ đây chúng ta có thể tính giá trị trung bình tổng thể import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)8 Bước 2 — Tính Tổng bình phươngBây giờ chúng tôi đã tính được giá trị trung bình tổng thể, chúng tôi có thể tiến hành tính toán như sau
Tổng bình phương của tất cả các quan sát — SS_totalTổng bình phương của tất cả các quan sát được tính bằng cách trừ từng quan sát khỏi giá trị trung bình tổng thể, sau đó tính tổng tất cả các bình phương của sự khác biệt Theo lập trình, SS_total được tính là import pandas as pd import numpy as np df = pd.read_csv('titanic_train.csv') df.sample(5)9 Tổng bình phương trong — SS_withinTổng bình phương bên trong là tổng bình phương độ lệch của các điểm xung quanh giá trị trung bình của nhóm Theo lập trình, SS_within được tính là df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df0 Tổng bình phương giữa — SS_betweenTiếp theo, chúng tôi tính tổng bình phương của trung bình nhóm từ trung bình tổng thể Theo lập trình, SS_between được tính là df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df1 Chúng tôi có thể xác minh rằng SS_total = SS_between + SS_within Tạo bảng ANOVAVới tất cả các giá trị được tính toán, bây giờ chúng ta có thể hoàn thành bảng ANOVA. Nhớ lại chúng ta có các biến sau Chúng ta có thể tính các bậc tự do khác nhau như sau df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df2 Từ những điều trên, hãy tính các giá trị bình phương trung bình khác nhau df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df3 Cuối cùng, chúng ta có thể tính giá trị F, là tỷ lệ của hai phương sai df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df4 Nhớ lại trước đó tôi đã đề cập ANOVA sử dụng các bài kiểm tra f để kiểm tra thống kê tính bình đẳng của phương tiện Sau khi có được giá trị F, bây giờ chúng ta phải tham khảo bảng phân phối f (xem http. //www. socr. ucla. edu/Applet. dir/F_Table. html ví dụ) để có được giá trị tới hạn f. Bảng phân phối f được sắp xếp dựa trên giá trị α (thường là 0. 05). Vì vậy, trước tiên chúng ta cần xác định vị trí của bảng dựa trên α=0. 05 Nguồn. http. //www. socr. ucla. edu/Applet. dir/F_Table. htmlTiếp theo, hãy quan sát rằng các cột của bảng phân phối f dựa trên df1 trong khi các hàng dựa trên df2. Chúng tôi có thể nhận được df1 và df2 từ các biến trước đó mà chúng tôi đã tạo df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df5 Bằng cách sử dụng các giá trị của df1 và df2, giờ đây, chúng tôi có thể xác định vị trí giá trị quan trọng của f bằng cách định vị cột df1 và hàng df2 Từ hình trên, chúng ta có thể thấy rằng giá trị tới hạn f là 3. 3541. Sử dụng giá trị này, bây giờ chúng tôi có thể quyết định xem chúng tôi sẽ chấp nhận hay từ chối giả thuyết không bằng cách sử dụng đường cong phân phối F Vì giá trị f (0. 0171, là những gì chúng tôi có thể tính toán) nhỏ hơn giá trị tới hạn f trong bảng phân phối f, chúng tôi chấp nhận giả thuyết không — điều này có nghĩa là không có phương sai trong các nhóm khác nhau — tất cả các phương tiện đều giống nhau. Đối với máy học, tính năng này — drink_type, không nên được đưa vào đào tạo vì có vẻ như các loại đồ uống khác nhau không ảnh hưởng đến thời gian phản ứng. Chúng ta chỉ nên đưa vào một tính năng để đào tạo nếu chúng ta bác bỏ giả thuyết không vì điều này có nghĩa là các giá trị trong các loại đồ uống ảnh hưởng đến thời gian phản ứng Sử dụng mô-đun Thống kê để tính điểm fTrong phần trước, chúng tôi đã tính giá trị f cho tập dữ liệu của mình theo cách thủ công. Trên thực tế, có một cách dễ dàng hơn — sử dụng hàm f_oneway() của mô-đun thống kê để tính giá trị f và giá trị p df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df6 Hàm f_oneway() lấy các nhóm làm đầu vào và trả về ANOVA F và giá trị p Ở trên, giá trị f là 0. 0170760934691432 (giống với giá trị chúng tôi đã tính theo cách thủ công) và giá trị p là 0. 9830794846682348 Quan sát hàm f_oneway() nhận một số đối số khác nhau Nếu chúng ta có nhiều nhóm, sẽ khá tẻ nhạt khi chuyển từng giá trị của tất cả các nhóm một. Vì vậy, có một cách dễ dàng hơn df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df7 Sử dụng mô-đun statsmodels để tính điểm fMột cách khác để tính giá trị f là sử dụng mô-đun statsmodel. Trước tiên, chúng tôi xây dựng mô hình bằng cách sử dụng hàm ols(), sau đó gọi hàm fit() trên phiên bản của mô hình. Cuối cùng, chúng tôi gọi hàm anova_lm() trên mô hình được trang bị và chỉ định loại thử nghiệm ANOVA sẽ thực hiện trên mô hình đó. Có 3 loại thử nghiệm ANOVA để thực hiện, nhưng phần thảo luận về chúng nằm ngoài phạm vi của bài viết này df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df8 Đoạn mã trên tạo ra kết quả sau, giống như giá trị f mà chúng tôi đã tính toán trước đó (0. 017076) Hàm anova_lm() cũng trả về giá trị p (0. 983079). Chúng ta có thể sử dụng các quy tắc sau để xác định xem biến phân loại có bất kỳ ảnh hưởng nào đến biến số không
Vì giá trị p bây giờ là 0. 983079 (>0. 05), điều này có nghĩa là loại_đồ_uống không có ảnh hưởng đáng kể đến thời_gian phản ứng Tóm tắt ANOVAANOVA giúp xác định xem một biến phân loại có ảnh hưởng đến một biến số hay không. Cho đến nay, phép thử ANOVA mà chúng ta đã thảo luận được gọi là phép thử ANOVA một chiều. Có một vài biến thể của ANOVA
Sử dụng ANOVA hai chiều hoặc ANOVA nhiều chiều, chúng tôi có thể điều tra tác động kết hợp của hai (hoặc nhiều) biến phân loại độc lập đối với một biến số phụ thuộc Tài nguyên df.drop(columns=['PassengerId','Name', 'Ticket','Fare','Cabin'], inplace=True) df.dropna(inplace=True) df9 https. // hướng tới khoa học dữ liệu. com/statistics-in-python-using-chi-square-for-feature-selection-d44f467ca745 Làm cách nào để kiểm tra mối tương quan giữa biến phân loại và biến liên tục trong python?Tìm ANOVA trong python (trong R sẽ là "aov") . Điều này giúp bạn xác định liệu phương tiện (giá trị liên tục) của các nhóm khác nhau (giá trị phân loại) có ý nghĩa khác nhau hay không. Nếu bạn chỉ có hai nhóm, hãy sử dụng thẻ hai mặt. kiểm tra (ghép đôi hoặc không ghép đôi).
Làm thế nào để vẽ biểu đồ tương quan giữa các biến phân loại và liên tục?Điều này có thể được thực hiện bằng cách sử dụng biểu đồ hộp . Biểu đồ hộp hiển thị phân phối dữ liệu của biến liên tục cho từng danh mục. Nếu phân phối cho từng danh mục là tương tự nhau, có nghĩa là các hộp được căn chỉnh, thì điều đó cho thấy không có mối tương quan nào.
Ma trận tương quan có thể được thực hiện cho các biến phân loại?Việc so sánh rất dễ dàng vì các mối tương quan đều ở cùng một thang điểm, thường là từ -1 đến 1. Nhưng đây không phải là trường hợp với các biến phân loại. Đối với các biến phân loại, ma trận tương quan không dễ sử dụng hoặc thậm chí không phải lúc nào cũng có ý nghĩa vì các giá trị được tính toán thường thậm chí không tương đối với nhau .
Làm thế nào để tìm mối tương quan giữa các biến phân loại và số?Nếu biến phân loại của bạn là phân đôi (chỉ có hai giá trị), thì bạn có thể sử dụng tương quan điểm-lưỡng phân . Có một chức năng để làm điều này trong gói ltm. Bạn có thể thực hiện hồi quy logistic và sử dụng các đánh giá khác nhau về nó (độ chính xác, v.v. ) thay cho hệ số tương quan. |