单因素方差的数据描述(14单因素方差分析)
方差分析是英国统计学家R.A.Fisher于20世纪20年代提出的一种统计方法,有着非常广泛的应用。单因素方差分析,即One-Way ANOVA(One-Way Analysis Of Variance)是方差分析的一种。是研究在某单一的因素影响下,因变量在该单一因素的不同水平下不同组别之间平均值差异。
单因素方差分析的作用是什么?检验受单一因素影响下,不同因素水平分组的因变量值的平均值是否相同(不同分组均值是否存在显著差异)。例如:不同销售方式,其销售额是否有显著差异;施肥量不同,对农作物收获量的影响;教授方法不同,对成绩是否有显著差异等。
进行方差分析的前提假设(条件)是什么?需要满足三个基本假设:
- 所有样本均来自正态总体;(正态性)
- 这些正态总体具有相同的方差;(方差齐性)独立抽样。
- 所有观测值相互独立。(独立性)
- 因变量(Dependent):度量测量的实验结果。
- 因素(Facor):影响实验结果的自变量,也称因子
- 水平:因素划分的类别,取值类别。
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')
- '单因素方差分析-三个条件均满足的情况.csv'数据集结构、数据集的描述性统计结果如下:
数据呈现
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)
方差分析正态性检验: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值均通过正态性检验。当然,是否这也与显著性水平大小的选择有关。
SPSS检验结果如下图:
方差齐性检验: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结果如下图:
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。不同教法(组)对成绩有显著影响。
SPSS结果如图:
多重比较:寻找显著差异
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')
结论:
- teach2与teach5组成绩没有显著差异;
- teach5与teach6组成绩没有显著差异;
- 其它组成绩显著性差异情况上表已经通过True给出。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com