ANOVA với kích thước mẫu không bằng nhau Python

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

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]

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

Phân vùng tổng bình phương

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

  1. Cài đặt gói Python Statsmodels [

    from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

    Code language: Python [python]
    1]
  2. Nhập mô hình thống kê api và ols.

    from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

    Code language: Python [python]
    2 và

    from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

    Code language: Python [python]
    3
  3. Nhập dữ liệu bằng Pandas
  4. Thiết lập mô hình của bạn

    from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

    Code language: Python [python]
    4
  5. Thực hiện ANOVA.

    from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

    Code language: Python [python]
    5
  6. In kết quả.

    from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

    Code language: Python [python]
    6

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

BoxPlot dữ liệu tăng trưởng thực vật

  • 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ê

from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

Code language: Python [python]

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

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]
0

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$

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]
1

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$

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]
2

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$

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]
3

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

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]
4

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;

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]
5

Tính giá trị F

pip install scipy numpy pandas statsmodels pingouin

Code language: Bash [bash]
6

Để 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

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

Code language: Python [python]
0

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 [ η² ].

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

Code language: Python [python]
1

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

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

Code language: Python [python]
2

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

Hướng dẫn Python ANOVA trên YouTube

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]

  1. 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

  2. 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

  3. 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

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

Code language: Python [python]
3

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

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

Code language: Python [python]
4

  • 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]

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

Code language: Python [python]
5

  • Tiết kiệm

So sánh theo cặp bằng Statsmodels

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]

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

Code language: Python [python]
6

Đầu ra anova1way

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

Code language: Python [python]
7

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

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

Code language: Python [python]
8

  • Tiết kiệm

bảng ANOVA

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

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

Code language: Python [python]
9

  • 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

from scipy import stats F, p = stats.f_oneway[d_data['ctrl'], d_data['trt1'], d_data['trt2']]

Code language: Python [python]
0
  • 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

Tại sao kích thước mẫu không bằng nhau là một vấn đề đối với ANOVA?

Vấn đề thực tế chính trong ANOVA một chiều là kích thước mẫu không bằng nhau ảnh hưởng đến tính chắc chắn của giả định phương sai bằng nhau . ANOVA được coi là khởi hành mạnh mẽ đến vừa phải từ giả định này. Nhưng điều đó không đúng khi cỡ mẫu rất khác nhau.

ANOVA có yêu cầu tất cả các nhóm phải có cùng cỡ mẫu không?

ANOVA không yêu cầu cỡ mẫu bằng nhau

Có tốt hơn về mặt thống kê khi có cỡ mẫu không bằng nhau hoặc cỡ mẫu bằng nhau không?

Việc có cả kích thước mẫu và phương sai không bằng nhau ảnh hưởng đáng kể đến sức mạnh thống kê và tỷ lệ lỗi Loại I [Rusticus & Lovato, 2014]. Mất điện chung. Các nhóm có quy mô bằng nhau tối đa hóa sức mạnh thống kê .

Bạn có thể sử dụng ANOVA với cỡ mẫu nhỏ không?

ANOVA mạnh mẽ đối với những sai lệch so với quy tắc khi kích thước mẫu nhỏ nhưng bằng nhau . Các nhà điều tra nên cố gắng thiết kế các nghiên cứu với số lượng bằng nhau trong mỗi nhóm so sánh để thúc đẩy tính mạnh mẽ của các kiểm định thống kê.

Chủ Đề