具有平均值和标准偏差的双因素方差分析

时间:2014-07-14 14:13:46

标签: r anova

有没有办法在R中使用双向ANOVA,它还为测试变量提供均值和标准差?

目前我正在使用代码

summary(aov(Tortuosity~Site*Species,data=BF.C))

但这仅提供F值,概率,残差等。

由于

1 个答案:

答案 0 :(得分:2)

是的,您可以使用model.tables()。试试?model.tables即可熟悉它。你想要的可能是(我将使用一个例子):

aov_out <- aov(yield ~ N*P, npk)

model.tables(aov_out, "means") # This will give you the means.
model.tables(aov_out, se = TRUE) # Will give you standard errors for the effects.
model.tables(aov_out, "means", se = TRUE) # Will give you the standard error for the differences of means.

但请注意,只有在模型中没有任何随机效果时,最后一个命令才有效。因此,对于像这样的模型:

aov_out_ran <- aov(yield ~ N*P + Error(block), npk) 

最后一个命令无法正常工作,因为它尚未实现。但无论如何,你会在警告信息中看到这一点。

您也可以轻松地手动计算方法。使用对比度编码重新构建模型:

aov_out_contr <- aov(yield ~ N*P, npk, contrasts = list (N = "contr.sum", P = "contr.sum"))

使用coef()获取模型的系数:

coef_aov_out <- coef(aov_out)

因为我们使用对比度编码,位置(Intercept)的{​​{1}}将是平均值,而coef_aov_out[1]中的其他系数将是需要的主要效果或交互效果的影响。为了获得集团特定的手段,可以减去或加入到平均值中。您可以像这样手动计算它们:

coef_aov_out

您可以将结果与# Compute mean of N0: N0 <- coef_aov_out[1]+coef_aov_out[2] # Compute mean of N1: N1 <- coef_aov_out[1]-coef_aov_out[2] # Compute mean of P0: P0 <- coef_aov_out[1]+coef_aov_out[3] # Compute mean of P1: P1 <- coef_aov_out[1]-coef_aov_out[3] # Compute mean of N0xP0: NOP0 <- coef_aov_out[1]+coef_aov_out[2]+coef_aov_out[3]+coef_aov_out[4] # Compute mean of N0xP1: N0P1 <- coef_aov_out[1]+coef_aov_out[2]-coef_aov_out[3]-coef_aov_out[4] # Compute mean of N1xP0: N1P0 <- coef_aov_out[1]-coef_aov_out[2]+coef_aov_out[3]-coef_aov_out[4] # Compute mean of N1xP1: N1P1 <- coef_aov_out[1]-coef_aov_out[2]-coef_aov_out[3]+coef_aov_out[4] 进行比较。理解正在发生的事情是一个很好的练习。