Hướng dẫn unbalanced anova python - con trăn anova không cân bằng

RENESH BEDRE & NBSP; & NBSP; 16 phút đọc16 minute read

ANOVA [phân tích phương sai] là gì?

  • Thử nghiệm ANOVA được sử dụng để so sánh phương tiện của hơn 2 nhóm [kiểm tra t hoặc kiểm tra Z có thể được sử dụng để so sánh 2 nhóm]
  • Các nhóm có nghĩa là sự khác biệt được suy ra bằng cách phân tích phương sai
  • ANOVA sử dụng kiểm tra F dựa trên phương sai để kiểm tra bình đẳng trung bình của nhóm. Đôi khi, thử nghiệm ANOVA F còn được gọi là thử nghiệm omnibus vì nó kiểm tra giả thuyết null không đặc hiệu, tức là tất cả các phương tiện nhóm đều bằng nhau
  • Các loại chính: một chiều [một yếu tố] và hai chiều [hai yếu tố] ANOVA [yếu tố là một biến độc lập]
  • Nó cũng được gọi là ANOVA đơn biến vì chỉ có một biến phụ thuộc trong mô hình. MANOVA được sử dụng khi có nhiều biến phụ thuộc trong tập dữ liệu. Nếu có một biến độc lập liên tục bổ sung trong mô hình, thì ANCOVA được sử dụng.
  • Nếu bạn đã lặp đi lặp lại các phép đo cho các phương pháp điều trị hoặc thời gian trên cùng một đối tượng, bạn nên sử dụng phép đo lặp lại ANOVA

Lưu ý: Trong ANOVA, nhóm, các yếu tố và biến độc lập là các thuật ngữ tương tự

ANOVA Giả thuyết

  • Giả thuyết null: Các nhóm có nghĩa là bằng nhau [không có sự thay đổi về phương tiện của các nhóm]
    H0: μ1=μ2=…=μp
  • Giả thuyết thay thế: Ít nhất, một nhóm trung bình khác với nhóm khác
    H1: All μ are not equal

Giả thuyết null được kiểm tra bằng cách sử dụng thử nghiệm omnibus [thử nghiệm F] cho tất cả các nhóm, tiếp tục được kiểm tra sau đại học để thấy sự khác biệt nhóm riêng lẻ.

Tìm hiểu thêm về kiểm tra và giải thích giả thuyết

Giả định ANOVA

  • Phần dư [lỗi thử nghiệm] được phân phối xấp xỉ bình thường [kiểm tra OR SHAPIRO-LOD hoặc Biểu đồ]
  • Tính đồng nhất hoặc tính đồng nhất của các phương sai [phương sai là bằng nhau giữa các nhóm điều trị] [Levene, Bartlett, hoặc xét nghiệm màu nâu-forsythe]
  • Các quan sát được lấy mẫu độc lập với nhau [không có mối quan hệ nào trong quan sát giữa các nhóm và trong các nhóm], tức là, mỗi đối tượng chỉ nên có một phản hồi
  • Biến phụ thuộc nên liên tục. Nếu biến phụ thuộc là thứ tự hoặc thứ hạng [ví dụ: dữ liệu mục Likert], có nhiều khả năng vi phạm các giả định về tính quy tắc và tính đồng nhất của phương sai. Nếu các giả định này bị vi phạm, bạn nên xem xét các bài kiểm tra không tham số [ví dụ: thử nghiệm Mann-Whitney U, kiểm tra Kruskal-Wallis].

ANOVA là một phương pháp mạnh mẽ khi các giả định về tính quy tắc và tính đồng nhất của phương sai là hợp lệ. ANOVA ít mạnh hơn [ít ảnh hưởng đến lỗi loại I], nếu giả định về tính quy tắc bị vi phạm trong khi phương sai bằng nhau.

ANOVA hoạt động như thế nào?

  • Kiểm tra kích thước mẫu: Số lượng quan sát bằng nhau trong mỗi nhóm
  • Tính hình vuông trung bình cho mỗi nhóm [ms] [SS của nhóm/cấp 1]; Cấp 1 là một mức độ tự do [DF] cho một nhóm
  • Tính toán lỗi bình phương trung bình [MSE] [lỗi SS/DF của phần dư]
  • Tính giá trị F [MS của nhóm/MSE]
  • Tính giá trị P dựa trên giá trị F và mức độ tự do [DF]

Một chiều [một yếu tố] ANOVA với Python

Mô hình hiệu ứng ANOVA, bảng và công thức

Bảng ANOVA biểu thị các nguồn biến thể giữa và trong nhóm và mức độ tự do liên quan của chúng, tổng hình vuông [SS] và bình phương trung bình [MS]. Tổng biến thể là tổng của các phương sai giữa và trong nhóm. Giá trị F là tỷ lệ bình phương trung bình giữa và trong nhóm [MS]. Giá trị P được ước tính từ giá trị F và mức độ tự do.

Ví dụ ANOVA

Dữ liệu ví dụ cho hướng dẫn phân tích ANOVA một chiều, tập dữ liệu

MộtBCD
25 45 30 54
30 55 29 60
28 29 33 51
36 56 37 62
29 40 27 73

Ở đây, có bốn phương pháp điều trị [A, B, C và D], là các nhóm để phân tích ANOVA. Phương pháp điều trị là biến độc lập và được gọi là yếu tố. Vì có bốn loại điều trị, yếu tố điều trị có bốn cấp độ.

Đối với thiết kế thử nghiệm này, chỉ có yếu tố [phương pháp điều trị] hoặc biến độc lập để đánh giá, và do đó, phương pháp ANOVA một chiều là phù hợp để phân tích.

Lưu ý: Nếu bạn có bộ dữ liệu của riêng mình, bạn nên nhập nó dưới dạng gấu trúc DataFrame. Tìm hiểu cách nhập dữ liệu bằng gấu trúc

import pandas as pd
# load data file
df = pd.read_csv["//reneshbedre.github.io/assets/posts/anova/onewayanova.txt", sep="\t"]
# reshape the d dataframe suitable for statsmodels package 
df_melt = pd.melt[df.reset_index[], id_vars=['index'], value_vars=['A', 'B', 'C', 'D']]
# replace column names
df_melt.columns = ['index', 'treatments', 'value']

# generate a boxplot to see the data distribution by treatments. Using boxplot, we can 
# easily detect the differences between different treatments
import matplotlib.pyplot as plt
import seaborn as sns
ax = sns.boxplot[x='treatments', y='value', data=df_melt, color='#99c2a2']
ax = sns.swarmplot[x="treatments", y="value", data=df_melt, color='#7d0013']
plt.show[]

import scipy.stats as stats
# stats f_oneway functions takes the groups as input and returns ANOVA F and p value
fvalue, pvalue = stats.f_oneway[df['A'], df['B'], df['C'], df['D']]
print[fvalue, pvalue]
# 17.492810457516338 2.639241146210922e-05

# get ANOVA table as R like output
import statsmodels.api as sm
from statsmodels.formula.api import ols

# Ordinary Least Squares [OLS] model
model = ols['value ~ C[treatments]', data=df_melt].fit[]
anova_table = sm.stats.anova_lm[model, typ=2]
anova_table
# output [ANOVA F and p value]
                sum_sq    df         F    PR[>F]
C[treatments]  3010.95   3.0  17.49281  0.000026
Residual        918.00  16.0       NaN       NaN

# ANOVA table using bioinfokit v1.0.3 or later [it uses wrapper script for anova_lm]
from bioinfokit.analys import stat
res = stat[]
res.anova_stat[df=df_melt, res_var='value', anova_model='value ~ C[treatments]']
res.anova_summary
# output [ANOVA F and p value]
                 df   sum_sq   mean_sq         F    PR[>F]
C[treatments]   3.0  3010.95  1003.650  17.49281  0.000026
Residual       16.0   918.00    57.375       NaN       NaN

# note: if the data is balanced [equal sample size for each group], Type 1, 2, and 3 sums of squares
# [typ parameter] will produce similar results.

Kiểm tra cách tính giá trị P bằng tay

Diễn dịch

Giá trị P thu được từ phân tích ANOVA là rất đáng kể [p

Bài Viết Liên Quan

Chủ Đề