什么是单因素方差分析?

方差分析是英国统计学家R.A.Fisher于20世纪20年代提出的一种统计方法,有着非常广泛的应用。单因素方差分析,即One-Way ANOVA(One-Way Analysis Of Variance)是方差分析的一种。是研究在某单一的因素影响下,因变量在该单一因素的不同水平下不同组别之间平均值差异。

单因素方差分析的作用是什么?

检验受单一因素影响下,不同因素水平分组的因变量值的平均值是否相同(不同分组均值是否存在显著差异)。例如:不同销售方式,其销售额是否有显著差异;施肥量不同,对农作物收获量的影响;教授方法不同,对成绩是否有显著差异等。

进行方差分析的前提假设(条件)是什么?

需要满足三个基本假设:

方差分析的关键术语?

单因素方差的数据描述(14单因素方差分析)(1)

One-Way ANOVA使用的库及数据

import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.stats.diagnostic import lilliefors from scipy.stats import levene from statsmodels.stats.multicomp import MultiComparison from scipy.stats import f_oneway

df = pd.read_csv('单因素方差分析-三个条件均满足的情况.csv')

单因素方差的数据描述(14单因素方差分析)(2)

单因素方差的数据描述(14单因素方差分析)(3)

数据呈现

sns.pointplot(data=df,x='teach',y='method_score',capsize=0.1,ci='sd') plt.ylim(50,100) _= plt.title('score between different teach method') sns.boxplot(x='teach',y='method_score', data=df) sns.despine(offset=6,trim=True)

单因素方差的数据描述(14单因素方差分析)(4)

单因素方差的数据描述(14单因素方差分析)(5)

方差分析正态性检验:lilliefors检验

正如之前所讲,方差分析有个前提条件是因变量需要符合正态分布(正态性),网上方差分析文章很多,但严格按照假设前提进行检验后再分析的却很少,或许认为样本是正态的,或者认为虽然不正态,但对分析结果影响不大,因而很少有人先进行正态分布性检验。

事实上方差分析的因变量确实需要满足正态分布特质,如果没有满足,则可以使用非参数检验进行检验。例如:MannWhitneyu检验,Kruskal-Wallis-H检验。Alexander-Govern 检验 (scipy.stats.alexandergovern) 。

mannwhitney:Mann-Whitney rank test on two samples.

friedmanchisquare:Friedman test for repeated measurements.

ksstat = [] pval = [] teach_i =[] for i in df.teach.unique(): data_i = df[df.teach ==i] ks,p = lilliefors(data_i['method_score']) ksstat.append(ks) pval.append(p) teach_i.append(i)

检验结果:

除了teach4外,其他p值均通过正态性检验。当然,是否这也与显著性水平大小的选择有关。

单因素方差的数据描述(14单因素方差分析)(6)

SPSS检验结果如下图:

单因素方差的数据描述(14单因素方差分析)(7)

方差齐性检验:levene检验

teach_data = [] for i in df.teach.unique(): data_i = df[df.teach ==i] teach_data.append(data_i.method_score) ks,p = levene(teach_data[0],teach_data[1],teach_data[2],teach_data[3],teach_data[4],teach_data[5])

检验结果:

ks = 2.06, p = 0.0699,方差齐性。

SPSS结果如下图:

单因素方差的数据描述(14单因素方差分析)(8)

One-Way ANOVA:使用scipy.stats.f_oneway

stat,p = f_oneway(teach_data[0],teach_data[1],teach_data[2],teach_data[3],teach_data[4],teach_data[5])

检验结果:

p= 0。不同教法(组)对成绩有显著影响。

单因素方差的数据描述(14单因素方差分析)(9)

SPSS结果如图:

单因素方差的数据描述(14单因素方差分析)(10)

多重比较:寻找显著差异

from statsmodels.stats.multicomp import MultiComparison mc = MultiComparison(df['method_score'],df['teach']) result = mc.tukeyhsd() result.plot_simultaneous(figsize=(6,4),xlabel='score',ylabel='teachMethod') plt.grid(b=True, which='major', axis='x')

单因素方差的数据描述(14单因素方差分析)(11)

单因素方差的数据描述(14单因素方差分析)(12)

结论:

单因素方差的数据描述(14单因素方差分析)(13)

单因素方差的数据描述(14单因素方差分析)(14)

单因素方差的数据描述(14单因素方差分析)(15)

,