R中的ANOVA(AOV函数):误导的p_value以相等的值

时间:2016-09-01 08:04:35

标签: r anova p-value

我非常感谢以下任何指导:我正在运行ANOVA(aov)来检索更大数据集的多个子集的p_value。所以我碰到了一个子集,其中我的数值变量/值是相同的36.因为它是循环的一部分,ANOVA仍然被执行,同时报告看似无限小的p_value 1.2855e-134 - >如果我错了,纠正我,但p_值越小,因素之间的差异显着不同的可能性越大?

为简单起见,这是子集: sUBSET_FOR_ANOVA

以下是我如何计算ANOVA并检索p_value,其中TEMP_DF2只是您看到的子集:

anova_sweep <- aov(TEMP_DF2$GOOD_PTS~TEMP_DF2$MACH,data = TEMP_DF2)
p_value <- summary(anova_sweep)[[1]][["Pr(>F)"]]  
p_value <- p_value[1]

非常感谢任何指导,

1 个答案:

答案 0 :(得分:0)

我无法复制你的发现。让我们生成一个示例数据集,其中所有值都为36:

df <- data.frame(gr = rep(letters[1:2], 100),
                 y = 36)
summary(aov(y~gr, data = df))

给出:

             Df    Sum Sq   Mean Sq F value Pr(>F)
gr            1 1.260e-27 1.262e-27       1  0.319
Residuals   198 2.499e-25 1.262e-27               

基本上,根据样本量,我们得到的p值约为0.3左右。 F统计量(根据定义)始终为1,因为组间差异和组间差异相等。

结果会产生误导吗?在某种程度上,是的。估计的SS和MS应为0,aov将它们计算得非常小。 R和某些包中的其他一些统计测试会检查零差异并产生错误,但aov显然没有。

然而,更重要的是,我会说你的数据违反了方差分析的假设,因此任何结果都不能被信任得出结论。在统计测试中,R的期望通常是用户在正确的情况下使用测试。