用于多个比较的方差分析(ANOVA)

Source: http://www.r-bloggers.com/analysis-of-variance-anova-for-multiple-comparisons/

 

用于多个比较的方差分析(ANOVA:Analysis of variance)

ANOVA模型能用于比较多个群组之间的均值,这里使用了参数(parametric)的方法,也就是假设这些群组符合Gaussian分布。以下为例子:

----------------------------------------------------

超市连锁店的经理想看看4个店面的耗电量(千瓦)是否相等。他在每个月底收集数据,持续了6个月,结果如下:

Store A: 65, 48, 66, 75, 70, 55
Store B: 64, 44, 70, 70, 68, 59
Store C: 60, 50, 65, 69, 69, 57
Store D: 62, 46, 68, 72, 67, 56

为了使用ANOVA来验证,我们必须首先验证homoskedasticity,也就是方差的同质性检验。R软件提供了两种检验方法:Bartlett检验,和Fligner-Killeen检验。

---------------------------------------------------

我们先看Bartlett检验。首先我们创建4个向量,然后再组合成一个向量:

a = c(65, 48, 66, 75, 70, 55)
b = c(64, 44, 70, 70, 68, 59)
c = c(60, 50, 65, 69, 69, 57)
d = c(62, 46, 68, 72, 67, 56)
dati = c(a, b, c, d)

另外我们再创建一个对应用于标示dati分组的4个水平的factor:

groups = factor(rep(letters[1:4], each = 6))

这样我们就可以进行Bartlett test了:

bartlett.test(dati, groups)

        Bartlett test of homogeneity of variances

data:  dati and groups 
Bartlett's K-squared = 0.4822, df = 3, p-value = 0.9228

这个函数得到了统计检验的值(K squared)和p-value。因为p-value > 0.05,所以我们可以说这些组的方差是同质的。另一方面,我们也可以比较Barlett的K-squared和查表的chi-square值,使用函数qchisq,其输入包括alpha值和自由度

qchisq(0.950, 3)
[1] 7.814728

显然,这里的chi-squared 大于上面计算的Bartlett的K-squared,因此我们接受null hypothesis H0,即方差都是同质的。

-------------------------------------------------------------------

现在我们试着用Fligner-Killeen test来检测同质性。调用函数的方法和过程都类似:

a = c(65, 48, 66, 75, 70, 55)
b = c(64, 44, 70, 70, 68, 59)
c = c(60, 50, 65, 69, 69, 57)
d = c(62, 46, 68, 72, 67, 56)

dati = c(a, b, c, d)

groups = factor(rep(letters[1:4], each = 6))

fligner.test(dati, groups)

        Fligner-Killeen test of homogeneity of variances

data:  dati and groups 
Fligner-Killeen:med chi-squared = 0.1316, df = 3, p-value = 0.9878

这里的结论也与Bartlett test类似。

----------------------------------------------------------------------------------

已验证了4个群组的同质性,我们就可以来处理ANOVA模型了。首先拟合模型:

fit = lm(formula = dati ~ groups)

然后分析ANOVA模型:

anova (fit)

Analysis of Variance Table

Response: dati
          Df  Sum Sq Mean Sq F value Pr(>F)
groups     3    8.46    2.82  0.0327 0.9918
Residuals 20 1726.50   86.33 

函数的输出为经典的ANOVA表,数据如下:

  • Df = degree of freedom,自由度
  • Sum Sq = deviance (within groups, and residual),总方差和(分别有groups和residual的)
  • Mean Sq = variance (within groups, and residual),平均方差和(分别有groups和residual的)
  • F value = the value of the Fisher statistic test, so computed (variance within groups) / (variance residual),统计检验的值
  • Pr(>F) = p-value

因为p-value大于0.05,我们接受null hypothesis H0,即4个样本的均值统计相等。我们也可以比较计算的F-vaue和查表的F-value:

qf(0.950, 20, 3)
[1] 8.66019


查表的F-value大于之前计算的F-value,因此我们接受null hypothesis。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
双向方差分析(Two-Way ANOVA)是一种统计方法,用于评估两个或更多因素对因变量的影响是否显著。它可以帮助我们确定两个或多个分类变量如何相互作用以及它们对因变量的影响。 双向方差分析的分析过程如下: 1. 首先,我们将数据分成不同的组,每个组都由两个或多个因素的不同水平组成。 2. 然后,我们计算每个组的平均值,并计算总体平均值。 3. 接下来,我们计算组内平方和(Within-group Sum of Squares)和组间平方和(Between-group Sum of Squares)。 4. 通过计算组内均方(Mean Square Within-groups)和组间均方(Mean Square Between-groups),我们可以计算F统计量。 5. 最后,我们使用F统计量和自由度来进行假设检验,以确定因素之间是否存在显著差异。 如果双向方差分析的交互项(interaction term)是显著的,那么最常见的分析方法是分别评估每个因素的影响,使用一元方差分析(One-Way ANOVA)。 下面是一个示例代码,演示如何使用Python中的statsmodels库进行双向方差分析: ```python import pandas as pd import statsmodels.api as sm from statsmodels.formula.api import ols # 创建一个包含因变量和两个因素的数据框 data = {'value': [10, 15, 12, 18, 20, 25, 22, 28], 'factor1': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'factor2': ['X', 'Y', 'X', 'Y', 'X', 'Y', 'X', 'Y']} df = pd.DataFrame(data) # 使用公式定义模型 model = ols('value ~ factor1 + factor2 + factor1:factor2', data=df).fit() # 执行双向方差分析 anova_table = sm.stats.anova_lm(model, typ=2) print(anova_table) ``` 这段代码中,我们使用了pandas库创建了一个包含因变量和两个因素的数据框。然后,使用statsmodels库中的ols函数定义了一个模型,其中包括因变量和两个因素以及它们的交互项。最后,使用statsmodels库中的anova_lm函数执行了双向方差分析,并打印了结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值