Tôi đang cố chạy ANOVA để so sánh bốn phương pháp điều trị này. Như bạn có thể thấy, có số lượng điểm dữ liệu khác nhau trong mỗi lần xử lý. Bây giờ, về mặt lý thuyết, đây không phải là một vấn đề, bởi vì ANOVA không cho rằng các cỡ mẫu bằng nhau. Đầu tiên, tôi đã cố gắng tạo DataFrame. Mật mã
import pandas as pd
df = pd.DataFrame[data]
Cung cấp cho tôi thông báo lỗi
Giá trịError. Tất cả các mảng phải có cùng độ dài
Vì vậy, điều này cho tôi biết rằng DataFrame sẽ không hoạt động. Nhưng bất kể tôi tìm kiếm "Anova với kích thước mẫu không bằng nhau" như thế nào, tất cả những gì tôi tìm thấy là thông tin sử dụng danh sách [và mã của chúng không hoạt động với từ điển] và/hoặc kích thước mẫu bằng nhau [không giải thích cách điều chỉnh kích thước mẫu không bằng nhau . Tôi nên tiếp cận ANOVA với các từ điển có độ dài khác nhau như thế nào?
Trong bài đăng này, chúng ta sẽ tìm hiểu cách thực hiện ANOVA bằng SciPy, tính toán “bằng tay” bằng Python, sử dụng Statsmodels và Pyvttbl.
Cập nhật. gói Python Pyvttbl không được duy trì trong một vài năm nhưng có một gói mới tên là Pingouin. Như một phần thưởng, cách sử dụng gói này được thêm vào cuối bài
Mục lục
- điều kiện tiên quyết
- Giới thiệu ANOVA
- giả định
- Thử nghiệm tiên nghiệm
- Bài kiểm tra sau đại học [So sánh theo cặp] trong Python
- 6 bước để thực hiện ANOVA trong Python
- ANOVA sử dụng Python
- Python ANOVA Video trên YouTube
- ANOVA trong Python sử dụng SciPy
- Tính toán bằng Python [i. e. , Python ANOVA thuần túy]
- ANOVA trong Python sử dụng Statsmodels
- Tiết kiệm
- Python ANOVA sử dụng pyvttbl anova1way
- Python ANOVA sử dụng Pingouin [tiền thưởng]
- Tiết kiệm
- Phần kết luận. Python ANOVA
điều kiện tiên quyết
Trong bài đăng này, bạn sẽ cần cài đặt các gói Python sau
- khoa học viễn tưởng
- NumPy
- gấu trúc
- mô hình thống kê
- chim cánh cụt
Tất nhiên, bạn không cần phải cài đặt tất cả các gói này để thực hiện ANOVA với Python. Bây giờ, nếu bạn chỉ muốn thực hiện phân tích dữ liệu, bạn có thể chọn cài đặt SciPy, Statsmodels hoặc Pingouin. Tuy nhiên, Pandas sẽ được sử dụng để đọc các bộ dữ liệu mẫu và thực hiện một số thống kê mô tả đơn giản cũng như trực quan hóa dữ liệu. Ví dụ, việc cài đặt các gói Python có thể được thực hiện bằng pip hoặc conda. Đây là cách cài đặt tất cả các gói trên
Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Bây giờ, pip cũng có thể được sử dụng để cài đặt một phiên bản cụ thể của gói. Để cài đặt phiên bản cũ hơn, bạn thêm “==” sau đó là phiên bản bạn muốn cài đặt. Trong phần tiếp theo, bạn sẽ được giới thiệu sơ lược về ANOVA, nói chung. Tất nhiên, nếu bạn chỉ định sử dụng một trong các gói, bạn có thể cài đặt một trong số chúng. Tuy nhiên, lưu ý nếu bạn cài đặt statsmodels với e. g. pip bạn cũng sẽ cài đặt SciPy, NumPY và Pandas
Giới thiệu ANOVA
Trước khi tìm hiểu cách thực hiện ANOVA trong Python, chúng ta sẽ thảo luận ngắn gọn về ANOVA là gì. ANOVA là phương tiện so sánh tỷ lệ phương sai hệ thống với phương sai phi hệ thống trong một nghiên cứu thực nghiệm. Phương sai trong ANOVA được phân chia thành phương sai tổng, phương sai do nhóm và phương sai do sự khác biệt của từng cá nhân
Tiết kiệm
Tỷ lệ thu được khi thực hiện phép so sánh này được gọi là tỷ lệ F. ANOVA một chiều có thể được coi là mô hình hồi quy với một yếu tố dự đoán phân loại duy nhất. Công cụ dự đoán này thường có hai loại cộng. ANOVA một chiều có một yếu tố duy nhất với mức J. Mỗi cấp độ tương ứng với các nhóm trong thiết kế đo lường độc lập
Dạng tổng quát của mô hình, là mô hình hồi quy cho một nhân tố phân loại với các mức J, là
$latex y_i = b_0+b_1X_{1,i} +…+b_{j-1,i} + e_i&s=2$
Có một cách thanh lịch hơn để tham số hóa mô hình. Theo cách này, các phương tiện nhóm được biểu thị dưới dạng độ lệch so với giá trị trung bình lớn bằng cách nhóm các hệ số của chúng theo một thuật ngữ duy nhất. Tôi sẽ không đi vào chi tiết về phương trình này
$latex y_{ij} = \mu_{grand} + \tau_j + \varepsilon_{ij}&s=2$
Đối với tất cả các thử nghiệm tham số, dữ liệu cần phải được phân phối chuẩn [dữ liệu của mỗi nhóm phải được phân phối chuẩn] để thống kê F đáng tin cậy. Mỗi điều kiện thí nghiệm nên có phương sai gần giống nhau [i. e. , tính đồng nhất của phương sai], các quan sát [e. g. , mỗi nhóm] phải độc lập và biến phụ thuộc ít nhất phải được đo lường trên một thang đo khoảng
giả định
Như với tất cả các bài kiểm tra tham số, ANOVA cũng có một số giả định. Trước hết, các nhóm phải độc lập với nhau. Thứ hai, dữ liệu cần được phân phối bình thường [trong mỗi nhóm]. Thứ ba, phải có phương sai bằng nhau giữa tất cả các nhóm. Tính đồng nhất của phương sai có thể được kiểm tra bằng thử nghiệm của Bartlett và Levene trong Python [e. g. , sử dụng SciPy] và giả định về tính quy phạm có thể được kiểm tra bằng cách sử dụng phép thử Shapiro-Wilks hoặc bằng cách kiểm tra phân phối. Lưu ý, nếu dữ liệu của bạn bị sai lệch, bạn có thể chuyển đổi dữ liệu đó bằng e. g. chuyển đổi nhật ký trong Python
Thử nghiệm tiên nghiệm
Khi tiến hành ANOVA bằng Python, tốt nhất nên giới hạn thử nghiệm trong một tập hợp nhỏ các giả thuyết có thể xảy ra. Hơn nữa, các bài kiểm tra này nên được thúc đẩy bởi lý thuyết và được gọi là so sánh trước hoặc so sánh theo kế hoạch. Như tên ngụ ý, các thử nghiệm này nên được lên kế hoạch trước khi dữ liệu được thu thập
Bài kiểm tra sau đại học [So sánh theo cặp] trong Python
Mặc dù các nghiên cứu có thể có động lực lý thuyết mạnh mẽ, cũng như các giả thuyết tiên nghiệm, nhưng sẽ có lúc mô hình xảy ra sau khi dữ liệu được thu thập. Lưu ý, nếu có thể có nhiều bài kiểm tra, những bài kiểm tra sau đại học này, tỷ lệ lỗi được xác định bởi số lượng bài kiểm tra có thể đã được thực hiện
Có một số bài kiểm tra hậu hoc có thể được thực hiện. Trong hướng dẫn ANOVA trong Python này, chúng ta sẽ sử dụng phép kiểm tra sự khác biệt có ý nghĩa trung thực của Tukey [Tukey-HSD]
6 bước để thực hiện ANOVA trong Python
Bây giờ, trước khi đi vào chi tiết, đây là 6 bước để thực hiện ANOVA trong Python
- Cài đặt gói Python Statsmodels [
1]
Code language: Python [python]from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
- Nhập mô hình thống kê api và ols.
2 và
Code language: Python [python]from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
3
Code language: Python [python]from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
- Nhập dữ liệu bằng Pandas
- Thiết lập mô hình của bạn
4
Code language: Python [python]from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
- Thực hiện ANOVA.
5from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
- In kết quả.
6
Code language: Python [python]from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
Bây giờ, đôi khi khi chúng tôi cài đặt các gói bằng Pip, chúng tôi có thể nhận thấy rằng chúng tôi chưa cài đặt phiên bản mới nhất. Tất nhiên, nếu muốn, chúng tôi có thể cập nhật pip lên phiên bản mới nhất bằng cách sử dụng pip hoặc conda
ANOVA sử dụng Python
Trong bốn ví dụ Python ANOVA trong hướng dẫn này, chúng ta sẽ sử dụng tập dữ liệu “PlantGrowth” ban đầu có sẵn trong R. Tuy nhiên, nó có thể được tải xuống bằng liên kết này. Sự phát triển của cây trồng. Trong ba ví dụ đầu tiên, chúng tôi sẽ sử dụng Pandas DataFrame. Tất cả ba ví dụ Python ANOVA bên dưới đều đang sử dụng Pandas để tải dữ liệu từ tệp CSV. Lưu ý, chúng ta cũng có thể sử dụng Pandas read excel nếu chúng ta có dữ liệu trong tệp Excel [e. g. ,. xlsx]
________số 8- Tìm hiểu thêm về cách sử dụng Pandas read_csv
Tiết kiệm
- 9 kỹ thuật trực quan hóa dữ liệu bạn nên học trong Python [Hướng dẫn trực quan hóa dữ liệu Python]
Đánh giá bằng Boxplot, có sự khác biệt về khối lượng khô của hai nghiệm thức. Tuy nhiên, dễ dàng xác định bằng mắt thường các nghiệm thức có khác với lô đối chứng hay không
Python ANOVA Video trên YouTube
- Nếu bạn muốn tìm hiểu cách làm việc với khung dữ liệu Pandas, hãy xem bài đăng Hướng dẫn cơ bản về khung dữ liệu Pandas
- Ngoài ra, hãy xem Hướng dẫn Python Pandas Groupby để biết thêm về cách làm việc với phương thức groupby
- Cách thực hiện kiểm tra T hai mẫu bằng Python. 3 Phương pháp khác nhau hoặc thực hiện bài kiểm tra Mann-Whitney U bằng Python
ANOVA trong Python sử dụng SciPy
Chúng tôi bắt đầu hướng dẫn Python ANOVA này bằng SciPy và phương thức f_oneway của nó từ số liệu thống kê
Code language: Python [python]
from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
Một vấn đề với việc sử dụng SciPy là theo hướng dẫn của APA, chúng ta cũng nên thực hiện kích thước [e. g. , eta bình phương] cũng như Bậc tự do [DF]. DF cần thiết cho dữ liệu ví dụ có thể dễ dàng thu được
0Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Tuy nhiên, nếu chúng ta muốn tính bình phương eta, chúng ta cần thực hiện thêm một số tính toán. Do đó, phần tiếp theo sẽ giải quyết cách tính toán ANOVA một chiều bằng cách sử dụng Pandas DataFrame và mã Python
Tính toán bằng Python [i. e. , Python ANOVA thuần túy]
ANOVA một chiều trong Python khá dễ tính toán nên dưới đây tôi sẽ chỉ cho bạn cách thực hiện. Đầu tiên, chúng ta cần tính tổng bình phương giữa [SSbetween], tổng bình phương bên trong [SSwithin] và tổng bình phương tổng [SSTotal]
Tổng bình phương giữa
Chúng tôi bắt đầu bằng cách tính Tổng bình phương giữa. Tổng bình phương giữa là sự thay đổi do tương tác giữa các nhóm. Đôi khi được gọi là Tổng bình phương của Mô hình
$latex SSbetween = \frac{\sum[\sum k_i]^2} {n} – \frac{T^2}{N}&s=2$
1Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Làm thế nào để tính tổng bình phương bên trong
Sự thay đổi trong dữ liệu do sự khác biệt trong con người. Việc tính toán Tổng bình phương bên trong có thể được thực hiện theo công thức này
$latex SSwithin = \sum Y^2 – \frac{\sum [\sum a_i]^2}{n}&s=2$
2Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Tính Tổng bình phương Tổng
Tổng bình phương Tổng sẽ cần thiết để tính bình phương eta sau này. Đây là tổng số biến thiên trong dữ liệu
$latex SStotal = \sum Y^2 – \frac{T^2}{N}&s=2$
3Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Cách tính bình phương trung bình giữa
Bình phương trung bình giữa là tổng bình phương bên trong chia cho bậc tự do giữa
4Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Tính toán bình phương trung bình trong phạm vi
Mean Square bên trong cũng là một phép tính dễ dàng;
5Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Tính giá trị F
6Code language: Bash [bash]
pip install scipy numpy pandas statsmodels pingouin
Để bác bỏ giả thuyết không, chúng tôi kiểm tra xem giá trị F thu được có cao hơn giá trị tới hạn để bác bỏ giả thuyết không. Chúng ta có thể tra cứu nó trong bảng giá trị F dựa trên DFwithin và DFbetween. Tuy nhiên, có một phương pháp trong SciPy để lấy giá trị p
0Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Cuối cùng, chúng ta cũng sẽ tính kích thước hiệu ứng. Chúng tôi bắt đầu với bình phương eta thường được sử dụng [ η² ].
1Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Tuy nhiên, bình phương eta hơi sai lệch vì nó hoàn toàn dựa trên tổng bình phương từ mẫu. Không có điều chỉnh nào được thực hiện vì mục tiêu của chúng tôi là ước tính quy mô ảnh hưởng trong dân số. Do đó, chúng ta có thể sử dụng phép đo kích thước hiệu ứng ít sai lệch Omega bình phương
2Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Kết quả chúng tôi nhận được từ cả SciPy và phương pháp trên có thể được báo cáo theo kiểu APA; . 846, p =. 016, η² =. 264. Nếu bạn muốn báo cáo bình phương Omega. ω2 =. 204. Thế là xong, bây giờ chúng ta đã biết cách thực hiện ANOVA trong Python bằng cách tính toán mọi thứ “bằng tay”
Tiết kiệm
ANOVA trong Python sử dụng Statsmodels
Trong phần hướng dẫn Python ANOVA này, chúng ta sẽ sử dụng Statsmodels. Đầu tiên, chúng tôi bắt đầu bằng cách sử dụng phương pháp bình phương nhỏ nhất thông thường [ols] và sau đó là phương pháp anova_lm. Ngoài ra, nếu bạn đã quen thuộc với cú pháp R, Statsmodels có API công thức nơi mô hình của chúng tôi được xây dựng rất trực quan
Đây là ba bước đơn giản để thực hiện ANOVA bằng Statsmodels
Thời gian cần thiết. 1 phút.
Trong phần hướng dẫn ANOVA bên dưới, giả định rằng dữ liệu nằm trong khung dữ liệu Pandas [i. e. , df]
- Nhập các gói Python cần thiết
Đầu tiên, chúng tôi nhập API mô hình thống kê và ols
Tiết kiệm
- Thiết lập mô hình ANOVA
Thứ hai, chúng tôi sử dụng ols để thiết lập mô hình của mình bằng công thức
Tiết kiệm
- Thực hiện ANOVA
Bây giờ chúng ta có thể sử dụng anova_lm để thực hiện ANOVA trong Python
Tiết kiệm
Trong ví dụ ANOVA bên dưới, chúng tôi nhập API và API công thức. Thứ hai, chúng tôi sử dụng hồi quy bình phương nhỏ nhất thông thường với dữ liệu của mình. Đối tượng thu được là một mô hình được trang bị mà sau này chúng ta sử dụng với phương thức anova_lm để lấy bảng ANOVA
Trong phần cuối cùng của phần này, chúng ta sẽ thực hiện so sánh theo cặp bằng cách sử dụng Statsmodels
3Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Bảng ANOVA Python
Tiết kiệm
Lưu ý, không có kích thước hiệu ứng nào được tính toán khi chúng tôi sử dụng Statsmodels. Để tính bình phương eta, chúng ta có thể sử dụng tổng bình phương từ bảng
4Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Tiết kiệm
Python ANOVA. So sánh theo cặp
Tất nhiên, cũng có thể tính toán so sánh theo cặp cho Python ANOVA của chúng tôi bằng cách sử dụng Statsmodels. Trong ví dụ tiếp theo, chúng ta sẽ sử dụng phương thức t_test_pairwise. Tiến hành các bài kiểm tra hậu kiểm, việc sửa lỗi theo kiểu gia đình có thể được thực hiện bằng một số phương pháp [e. g. , Bonferroni, Šidák]
5Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Tiết kiệm
Lưu ý, nếu chúng tôi muốn sử dụng một phương pháp hiệu chỉnh khác, chúng tôi thêm phương pháp tham số và thêm “bonferroni” hoặc “sidak”, chẳng hạn [e. g. , phương pháp =”sidak”]
- Jupyter Notebook Scipy và Statsmodels ANOVA một chiều
Nếu chúng tôi thực hiện phân tích hồi quy, sử dụng Python, chúng tôi có thể phải chuyển đổi các biến phân loại thành biến giả bằng phương thức Pandas get_dummies[]
Python ANOVA sử dụng pyvttbl anova1way
Trong phần này, chúng ta sẽ tìm hiểu cách thực hiện ANOVA trong Python bằng phương thức anova1way từ gói Python pyvttbl. Gói này cũng có phương thức DataFrame. Chúng ta phải sử dụng phương pháp này thay vì Pandas DataFrame để có thể thực hiện ANOVA một chiều trong Python. Lưu ý, Pyvttbl đã cũ và lỗi thời. Nó yêu cầu Numpy tối đa là phiên bản 1. 1. x nếu không bạn sẽ gặp lỗi ["[các] loại toán hạng không được hỗ trợ cho +. 'float' và 'NoneType'”]
Tất nhiên, vấn đề này có thể được giải quyết bằng cách hạ cấp Numpy [xem giải pháp của tôi bằng môi trường ảo Hướng dẫn từng bước để giải quyết lỗi Pyvttbl Float và NoneType]. Tuy nhiên, có thể tốt hơn nếu sử dụng pingouin để thực hiện Python ANOVAs [xem phần tiếp theo của bài đăng trên blog này]
6Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Đầu ra anova1way
7Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Chúng tôi nhận được nhiều thông tin hơn bằng cách sử dụng phương pháp anova1way. Điều có thể được quan tâm đặc biệt ở đây là chúng tôi nhận được kết quả từ một bài kiểm tra sau đại học [i. e. , Tukey HSD]. Trong khi ANOVA chỉ cho chúng tôi biết rằng có một tác động đáng kể của việc điều trị, thì phân tích hậu kiểm cho thấy tác động này có thể xảy ra ở đâu [giữa các nhóm nào]
Nếu bạn có nhiều biến phụ thuộc, phương pháp đa biến có thể phù hợp hơn. Tìm hiểu thêm về cách thực hiện Phân tích phương sai đa biến [ANOVA] bằng Python
- Python MANOVA sử dụng Statsmodels
Python ANOVA sử dụng Pingouin [tiền thưởng]
Trong phần này, chúng ta sẽ tìm hiểu cách thực hiện ANOVA trong Python bằng gói pingouin. Gói này, giống như Statsmodels, rất đơn giản để sử dụng. Nếu chúng ta muốn thực hiện ANOVA, chúng ta chỉ cần sử dụng phương pháp gọi là anova
8Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Tiết kiệm
Như có thể thấy trong bảng ANOVA ở trên, chúng ta nhận được bậc tự do, sai số bình phương trung bình, giá trị F và p, cũng như bình phương một phần eta khi sử dụng pingouin
So sánh theo cặp bằng Python [Tukey-HSD]
Một điều thú vị với Pingouin là chúng tôi cũng có thể thực hiện các bài kiểm tra sau đại học. Bây giờ chúng tôi sẽ thực hiện bài kiểm tra Tukey-HSD như một phần tiếp theo của ANOVA của chúng tôi. Điều này cũng rất đơn giản, chúng tôi sử dụng phương thức pairwise_tukey để thực hiện so sánh theo cặp
9Code language: Python [python]
import pandas as pd datafile = "PlantGrowth.csv" data = pd.read_csv[datafile] #Create a boxplot data.boxplot['weight', by='group', figsize=[12, 8]] ctrl = data['weight'][data.group == 'ctrl'] grps = pd.unique[data.group.values] d_data = {grp:data['weight'][data.group == grp] for grp in grps} k = len[pd.unique[data.group]] # number of conditions N = len[data.values] # conditions times participants n = data.groupby['group'].size[][0] #Participants in each condition
Tiết kiệm
Lưu ý, nếu chúng ta muốn một loại kích thước hiệu ứng khác, chúng ta có thể thêm đối số effsize và chọn giữa sáu kích thước hiệu ứng khác nhau [hoặc không có]. cohen, hàng rào, thủy tinh, eta-square, tỷ lệ cược và AUC. Trong ví dụ mã cuối cùng, chúng tôi thay đổi kích thước hiệu ứng mặc định [hàng rào] thành cohen
0Code language: Python [python]
from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]
- Jupyter Notebook của mã cho Pingouin ANOVA
Phần kết luận. Python ANOVA
đó là nó. Trong hướng dẫn này, bạn đã học được 4 phương pháp cho phép bạn thực hiện ANOVAs một chiều bằng Python. Tất nhiên, có những cách khác để giải quyết các bài kiểm tra giữa các nhóm [e. g. , phân tích hậu hoc]
Người ta có thể thực hiện Nhiều phép so sánh [e. g. , t-test giữa mỗi nhóm. Chỉ cần nhớ sửa lỗi familywise. ] hoặc tương phản theo kế hoạch. Tóm lại, thực hiện ANOVAs trong Python khá đơn giản