Chúng tôi sẽ cung cấp một ví dụ thực tế về cách chúng tôi có thể chạy một bài kiểm tra chi bình phương trong Python. Giả sử rằng chúng tôi muốn kiểm tra xem có sự khác biệt có ý nghĩa thống kê về dân số giới tính (M, F) giữa những người hút thuốc và người không hút thuốc. Hãy để tạo ra một số dữ liệu mẫu để làm việc trên nó.Genders (M, F) population between Smokers and Non-Smokers. Let’s generate some sample data to work on it. Show
Nội phân chính
Nội phân chính
Nội phân chính
Nội phân chính
Dữ liệu mẫuimport pandas as pd import numpy as np from scipy.stats import chi2_contingency import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()
Bảng dữ liệu thống kêLàm thế nào để bạn chạy một chi Chi2 trong Python là gì?
Giới tính F
Giới tính normalize=’column’ and if we want the total percentage then we should write normalize=’all’ FM plt.figure(figsize=(12,8)) sns.heatmap(contigency, annot=True, cmap="YlGnBu") Kiểm định chi bình phươngHãy nói rằng chúng tôi muốn có được tỷ lệ phần trăm theo giới tính (hàng)
# Chi-square test of independence. c, p, dof, expected = chi2_contingency(contigency) p
Bây giờ chúng tôi đã xây dựng bảng dự phòng, chúng tôi có thể chuyển nó đến Gender isSmoker 0 M Smoker 1 M Smoker 2 M Non-Smpoker 3 F Non-Smpoker 4 F Smoker 8Function từ gói Gender isSmoker 0 M Smoker 1 M Smoker 2 M Non-Smpoker 3 F Non-Smpoker 4 F Smoker 9 trả về:Chi2: Thống kê kiểm tra2×2. We could have applied z-test for proportions instead of Chi-Square test. Notice that the Chi-Square test can be extended to m x n contingency tables. Ví dụ về bài kiểm tra chi bình phương trong PythonP: Giá trị p của bài kiểm traChúng tôi sẽ cung cấp một ví dụ thực tế về cách chúng tôi có thể chạy một bài kiểm tra chi bình phương trong Python. Giả sử rằng chúng tôi muốn kiểm tra xem có sự khác biệt có ý nghĩa thống kê về dân số giới tính (M, F) giữa những người hút thuốc và người không hút thuốc. Hãy để tạo ra một số dữ liệu mẫu để làm việc trên nó.Genders (M, F) population between Smokers and Non-Smokers. Let’s generate some sample data to work on it. Dữ liệu mẫuDOF: mức độ tự do
Bảng dữ liệu thống kêBài kiểm tra bài đăng bài kiểm tra H0 (giả thuyết null): Không có mối quan hệ giữa biến một và biến hai. There is no relationship between variable one and variable two. H1 (giả thuyết thay thế): Có mối quan hệ giữa biến 1 và biến 2. There is a relationship between variable 1 and variable 2. Nếu giá trị p là có ý nghĩa, bạn có thể bác bỏ giả thuyết khống và tuyên bố rằng các phát hiện ủng hộ giả thuyết thay thế. Giả định chi bình phươngCác giả định sau đây cần phải được đáp ứng để kết quả của bài kiểm tra Chi-vuông được tin cậy.
Nếu tất cả các giả định này được đáp ứng, thì Chi-vuông là thử nghiệm chính xác để sử dụng. Trang này sẽ đi qua cách thực hiện một bài kiểm tra độc lập Chi-vuông bằng Python, cách diễn giải kết quả và sẽ cung cấp một chức năng tùy chỉnh được Python phát triển cho Khoa học dữ liệu, LLC để bạn sử dụng! Nó làm sạch đầu ra, khả năng tính tỷ lệ phần trăm hàng/cột và có khả năng xuất kết quả sang tệp CSV. Đầu tiên chúng ta cần nhập số liệu thống kê gấu trúc và SCIPY! import pandas as pd from scipy import stats Dữ liệu được sử dụng cho ví dụ nàyDữ liệu được sử dụng trong ví dụ này là từ kaggle.com từ việc tìm nguồn cung cấp tâm thần, Ltd. Bộ dữ liệu là từ cuộc khảo sát về sức khỏe tâm thần OSMI trong Khảo sát công nghệ năm 2016 nhằm mục đích đo lường thái độ đối với sức khỏe tâm thần tại nơi làm việc công nghệ và kiểm tra tần suất rối loạn sức khỏe tâm thần của các nhân viên công nghệ. Liên kết đến nguồn Kaggle của bộ dữ liệu ở đây. Ví dụ này, chúng tôi sẽ kiểm tra xem có mối liên hệ giữa sự sẵn sàng thảo luận về các vấn đề sức khỏe tâm thần với người giám sát trực tiếp và hiện đang bị rối loạn sức khỏe tâm thần. Trong tập dữ liệu, đây là những biến số mà bạn có sẵn sàng thảo luận về một vấn đề sức khỏe tâm thần với (các) người giám sát trực tiếp của bạn không? Và "hiện tại bạn có bị rối loạn sức khỏe tâm thần không?" tương ứng. Hãy cùng xem dữ liệu! df['Do you currently have a mental health disorder?'].value_counts()
df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()0
Một số nhà tuyển dụng trước đây của tôi Không, không có nhà tuyển dụng trước đây của tôi
Một số nhà tuyển dụng trước đây của tôi Không, không có nhà tuyển dụng trước đây của tôi
Một số nhà tuyển dụng trước đây của tôiKhông, không có nhà tuyển dụng trước đây của tôi df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()5 Tôi không biết Có, tại tất cả các nhà tuyển dụng trước đây của tôi df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()6 Đối với biến số này hiện tại bạn có bị rối loạn sức khỏe tâm thần không? Để làm điều này, chúng ta cần sử dụng một chức năng để lấy lại dữ liệu. Ngoài ra, các biến sẽ được đổi tên để rút ngắn chúng. df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()1 df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()2 Mặc dù bài kiểm tra chi bình phương của chúng tôi rất có ý nghĩa, vì phân tích của chúng tôi là 2 × 3, chúng tôi có thể nêu chính xác nơi mối quan hệ này kể từ khi thử nghiệm Chi-vuông là một thử nghiệm omnibus. Chúng tôi phải tiến hành các bài kiểm tra sau hoc để kiểm tra mối quan hệ giữa các cấp độ (loại) khác nhau của từng biến. Ví dụ này sẽ sử dụng phương pháp giá trị p được điều chỉnh bởi Bonferroni sẽ được đề cập trong phần tiếp theo. Nếu bạn không thích đầu ra của bài kiểm tra chi bình phương, hãy xem phần Kiểm tra chi bình phương về tính độc lập bằng cách sử dụng chức năng tùy chỉnh. Phần cung cấp mã của một hàm tiến hành kiểm tra chi bình phương giống như chúng ta đã làm, nhưng đầu ra được trả về trong một bảng với định dạng dễ đọc, trình bày các giá trị, làm tròn dữ liệu, có thể tính toán tỷ lệ phần trăm hàng/cột và có khả năng xuất kết quả trực tiếp vào tệp CSV. Bài kiểm tra bài đăng bài kiểm traBây giờ chúng tôi biết bài kiểm tra độc lập Chi-vuông của chúng tôi là rất quan trọng, chúng tôi muốn kiểm tra mối quan hệ nằm giữa các cấp độ của các biến. Để làm điều này, chúng ta cần tiến hành nhiều thử nghiệm Chi-Square 2 × 2 bằng cách sử dụng giá trị P được điều chỉnh bởi Bonferroni. Một số bạn có thể hỏi tại sao? Bằng cách so sánh nhiều cấp độ (loại) với nhau, tỷ lệ lỗi của một hợp chất dương tính giả với mỗi thử nghiệm. Có nghĩa là, thử nghiệm đầu tiên của chúng tôi ở cấp 0,05 là 5% cơ hội dương tính giả; Bài kiểm tra sau đó sẽ là 10% cơ hội dương tính giả, v.v. Với mỗi bài kiểm tra tiếp theo, người ta sẽ tăng tỷ lệ lỗi thêm 5%. Nếu chúng tôi tiến hành tất cả các so sánh 6 cặp có thể có, thử nghiệm chi bình phương 2 × 2 cuối cùng của chúng tôi sẽ có tỷ lệ lỗi là 30%! Có nghĩa là giá trị p của chúng tôi đang được kiểm tra tại sẽ bằng 0,30, điều này không được chấp nhận ở bất kỳ cấp độ nào. Để tránh điều này, phương pháp điều chỉnh Bonferroni điều chỉnh giá trị p bằng cách so sánh cặp theo kế hoạch đang được tiến hành. Công thức là P/N, trong đó, p p p Trong ví dụ của chúng tôi, nếu chúng tôi dự định tiến hành tất cả các so sánh theo cặp có thể thì công thức sẽ là 0,05/6 = 0,008. Có nghĩa là, một bài kiểm tra chi bình phương Post Hoc 2 × 2 sẽ phải có giá trị p nhỏ hơn 0,008 để có ý nghĩa. Tuy nhiên, chúng tôi không quan tâm đến danh mục của tôi, tôi không biết về biến số của Sẵn sàng_Discuss_MH_Supervisor. Do đó tạo ra công thức là 0,05/3, bằng 0,017. Vì vậy, đối với các so sánh theo kế hoạch của chúng tôi là đáng kể, giá trị p phải nhỏ hơn 0,017. Để thực hiện nhiều bài kiểm tra chi bình phương 2 × 2, người ta cần tập hợp lại các biến cho mỗi thử nghiệm đến nơi nó là một loại so với phần còn lại. Đối với chúng tôi, nó sẽ là:
Python làm cho nhiệm vụ này dễ dàng! Có một phương thức pd.get_dummies () tạo ra các biến giả trong đó mỗi biến mới chỉ là một loại của biến ban đầu và bằng với 1 1 nếu chúng thuộc thể loại đó và là 0 0 nếu chúng không. Chúng tôi sẽ gán các biến giả cho khung dữ liệu Python mới. df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()7
Bây giờ chúng tôi đã đặt các biến giả của chúng tôi, chúng tôi có thể tiến hành các so sánh bài hoc theo kế hoạch của chúng tôi. Điều này sẽ dễ dàng sử dụng một vòng lặp. Sẽ có thêm một chút mã trong vòng lặp để làm sạch đầu ra. df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()8
Một số nhà tuyển dụng trước đây của tôi
Có, tại tất cả các nhà tuyển dụng trước đây của tôi
Bây giờ chúng tôi đã đặt các biến giả của chúng tôi, chúng tôi có thể tiến hành các so sánh bài hoc theo kế hoạch của chúng tôi. Điều này sẽ dễ dàng sử dụng một vòng lặp. Sẽ có thêm một chút mã trong vòng lặp để làm sạch đầu ra. df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()8
Kiểm tra chi bình phương về tính độc lập bằng cách sử dụng chức năng tùy chỉnhChức năng tùy chỉnh này được phát triển bởi Python cho Data Science, LLC và chúng tôi muốn bạn sử dụng nó! Nó yêu cầu gấu trúc được nhập dưới dạng PD và SCIPY để được nhập dưới dạng số liệu thống kê - giống như các thư viện được sử dụng trong ví dụ này được nhập ở đầu trang này. Chúng là hình thức phổ biến nhất của việc nhập các thư viện này. Chức năng này làm gì là tiến hành thử nghiệm độc lập chi bình phương bằng phương pháp scipy chi2_conting (nhưng nó làm sạch định dạng của kết quả, cho phép người ta dễ dàng tính toán tỷ lệ hàng hoặc cột (tỷ lệ phần trăm) nếu muốn và cho phép một Xuất kết quả sang tệp CSV nếu muốn. Tỷ lệ phần trăm được làm tròn đến 2 chữ số thập phân trong khi giá trị chi bình phương và giá trị p là vòng tròn đến 4 thập phân. Các ví dụ sẽ được cung cấp ở dưới cùng của mã. Vì vậy, đây là! Chỉ cần sao chép và dán vào tệp bạn đang làm việc hoặc lưu chức năng vào một tệp .py riêng biệt và nhập nó từ đó. df = pd.DataFrame({'Gender' : ['M', 'M', 'M', 'F', 'F'] * 10, 'isSmoker' : ['Smoker', 'Smoker', 'Non-Smpoker', 'Non-Smpoker', 'Smoker'] * 10 }) df.head()9 Bây giờ để xem chức năng trong hành động. Một số ví dụ dưới đây! So sánh scipy.stats.chi2_contingency () với hàm chi2_table () tùy chỉnh ()Tôi sẽ sử dụng ví dụ từ phía trên để dữ liệu sẽ quen thuộc. 0. Bây giờ xem phân tích tương tự được thực hiện với hàm chi2_table () tùy chỉnh. 1
Không, không có nhà tuyển dụng trước đây của tôi 2Một số nhà tuyển dụng trước đây của tôi Có, tại tất cả các nhà tuyển dụng trước đây của tôiPearson Chi2 (3) = 32.4082 P-Value = 0,0000 Hàm cũng có thể xử lý có một danh sách hoặc nhiều danh sách được thông qua. Điều này xuất hiện trong tay nếu bạn muốn tiến hành nhiều bài kiểm tra chi bình phương trên nhiều biến. Nó sẽ tiến hành tất cả các so sánh kiểm tra chi bình phương. Nếu chỉ có một danh sách duy nhất được thông qua, nó phải được thông qua trong mục đầu tiên. Nếu xuất sang tệp CSV, tệp sẽ được đặt tên theo biến cột (mục nhập chuỗi thứ hai). Trong ví dụ trên, tên tệp sẽ là hiện tại_ental_disorder.csv, và tên của biến trong list_2 tương ứng.
Không, không có nhà tuyển dụng trước đây của tôi Một số nhà tuyển dụng trước đây của tôi
Không, không có nhà tuyển dụng trước đây của tôiMột số nhà tuyển dụng trước đây của tôi 5Có, tại tất cả các nhà tuyển dụng trước đây của tôiPearson Chi2 (3) = 32.4082 P-Value = 0,0000. Hàm cũng có thể xử lý có một danh sách hoặc nhiều danh sách được thông qua. Điều này xuất hiện trong tay nếu bạn muốn tiến hành nhiều bài kiểm tra chi bình phương trên nhiều biến. Nó sẽ tiến hành tất cả các so sánh kiểm tra chi bình phương. Nếu chỉ có một danh sách duy nhất được thông qua, nó phải được thông qua trong mục đầu tiên. Nếu xuất sang tệp CSV, tệp sẽ được đặt tên theo biến cột (mục nhập chuỗi thứ hai). Trong ví dụ trên, tên tệp sẽ là hiện tại_ental_disorder.csv, và tên của biến trong list_2 tương ứng. Nhận tỷ lệ hàng/cột (tỷ lệ phần trăm) Để có tỷ lệ được trả về trong crosstab, hãy chuyển ’hàng, hoặc’ col, vào đối số prop prop =. Dữ liệu được kiểm tra bằng cách sử dụng dữ liệu đếm, vì vậy chúng tôi không vi phạm các giả định của bài kiểm tra, nhưng sau đó trả về dữ liệu tỷ lệ. Để có được tỷ lệ hàng, hãy chuyển ‘hàng, vào đối số prop prop = cho chức năng. 3a non-parametric (distribution-free) method used to compare the relationship between the two categorical (nominal) variables
in a contingency table.Tôi có thể sử dụng chi khôngCả hai bài kiểm tra tương quan và chi bình phương có thể kiểm tra mối quan hệ giữa hai biến.Tuy nhiên, một mối tương quan được sử dụng khi bạn có hai biến định lượng và thử nghiệm độc lập chi bình phương được sử dụng khi bạn có hai biến phân loại.. However, a correlation is used when you have two quantitative variables and a chi-square test of independence is used when you have two categorical variables. |