方差分析可以用来推断一个或多个因素在其状态变化时,其因素水平或交互作用是否会对实验指标产生显著影响。主要分为单因素方差分析、多因素无重复方差分析和多因素重复方差分析。
做方差分析首先必须满足独立,正态检验,方差齐性检验。如果是重复测量方差分析,则必须满足正态检验,方差齐性检验,以及球形检验。
之前一直使用的是SPSS,其实也可以用python或者R做方差分析
python
主要用到的库是pandas和statsmodels。简要流程是,先用pandas库的DataFrame数据结构来构造输入数据格式。然后用statsmodels库中的ols函数得到最小二乘线性回归模型。最后用statsmodels库中的anova_lm函数进行方差分析。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import pandas as pd
import numpy as np
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
data = pd.DataFrame([[1, 1, 32],
[1, 2, 35],
[1, 3, 35.5],
[1, 4, 38.5],
[2, 1, 33.5],
[2, 2, 36.5],
[2, 3, 38],
[2, 4, 39.5],
[3, 1, 36],
[3, 2, 37.5],
[3, 3, 39.5],
[3, 4, 43]],
columns=['A', 'B', 'value'])
# 因素A的水平对结果的影响 'value ~ C(A)'
# 因素A和因素B的水平对结果的影响 'value ~ C(A) + C(B)'
# 因素A和因素B以及A和B的交互作用的水平对结果的影响 'value ~ C(A) + C(B) + C(A)*C(B)'
# 多因素无重复试验,不计算交互作用的影响
model = ols('value~C(A) + C(B)', data=data[['A', 'B', 'value']]).fit()
anovat = anova_lm(model)
print model.summary()
print anovat
#data为之前生成的DataFrame中选出的进行分析所需要的列,实际上ols是通过DataFrame的列名来获得试验结果和因素水平的数据的。最后用ols函数进行最小二乘线性拟合,用anova_lm函数进行方差分析并输出结果。
# 如果是直接导入excel,通过pandas读取excel后,得到df,那么就不需要在ols()函数中data选择列,直接加入df
model = ols('value~C(group) + C(time)',df).fit()
anovat = anova_lm(model)
print model.summary()
print anovat
#进行单因素多方差分析,将formula中的C(B)去掉即可。
#如果是对于有重复的多因素方差分析,将formula中加上C(A)*C(B)
其他内容有待后面补充。。。。。
重复测量资料
方法:重复测量资料的方差分析、混合回归模型(Mixed regression Model)、广义估计方程。
说明:由于同一对象同一指标的相邻两个时间点的效应指标观察值往往是相关的,所以重复测量资料不独立。
分类:单因素重复测量方差分析;双因素重复测量方差分析;三因素重复测量方差分析
球形检验
①满足条件:运用需满足一般方差分析的前提假设,还需满足球形假设的条件。
②自由度:需要对被试内变量有关的F统计量的分子和分母的自由度进行校正。
③检验方法:常见方法为Mauchly式法检验球形假设,当p<0.05时,说明多次测量的方差差异较大或不同次测量之间的相关系数差异较大,不满足球形,重复测量方差分析的结果将导致统计推论的错误率增加。常有两种方法可供选择“
1.采用MANOVA(多变量方差分析方法);2.对重复测量ANOVA检验结果中与时间有关的F值的自由度进行调整。
用spss做方差分析看到最完整的资料
单因素重复测量方差分析
两因素重复测量方差分析