有没有办法在R中使用双向ANOVA,它还为测试变量提供均值和标准差?
目前我正在使用代码
summary(aov(Tortuosity~Site*Species,data=BF.C))
但这仅提供F值,概率,残差等。
由于
答案 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]
进行比较。理解正在发生的事情是一个很好的练习。