R语言获取不含block项的Type III ANCOVA表及各效应F值与p值
解决方案
前置设置(必做,保证Type III检验正确性)
R默认的分类变量处理对比(treatment contrast)会导致Type III平方和计算错误,需先将所有分类变量切换为效应编码:
# 对分类变量设置效应编码 contrasts(rye$strain) <- contr.sum contrasts(rye$manure) <- contr.sum contrasts(rye$block) <- contr.sum # 重新拟合线性模型 rye_lm <- lm(yield ~ block + strain*manure*moisture, data = rye)
方法1:直接调用joint_tests过滤block项
利用joint_tests的which和invert参数,直接排除block项的输出,剩余结果即为调整block效应后所有目标变量的检验结果:
library(emmeans) joint_tests(rye_lm, which = "block", invert = TRUE)
方法2:通过emmeans对象生成检验结果
生成emmeans对象时添加cov.keep参数保留连续变量moisture,即可输出包含分类、连续变量所有效应的检验结果,block会被自动取平均不会出现在输出中:
library(emmeans) # 生成emmGrid时保留连续变量moisture作为检验项 rye_emm <- emmeans(rye_lm, ~ strain * manure * moisture, cov.keep = "moisture") joint_tests(rye_emm)
结果说明
两种方法输出的结果完全一致,均包含strain、manure、moisture三个变量的主效应、二阶交互、三阶交互的F值与p值,所有效应均已对block的效应进行调整。
内容的提问来源于stack exchange,提问作者hnguyen
相关产品推荐
相关产品推荐

