ANOVA、ANCOVA 使用R语言进行方差分析(一)( 四 )


结果:
dose effectdose0550500 32.35367 28.87672 30.56614 29.33460

ANOVA、ANCOVA  使用R语言进行方差分析(一)

文章插图
调整的均值与()函数得出的未调整的均值类似 , 但并非所有的情况都是如此 。总之 , 包为复杂的研究设计提供了强大的计算调整均值的方法 , 并能将结果可视化 。
3.2 用户定义对照的多重比较(User- )
剂量的F检验虽然表明了不同的处理方式幼崽的体重均值不同 , 但无法告知我们哪种处理方式与其他方式不同 。同样 , 我们使用包来对所有均值进行成对比较 。另外 , 包还可以用来检验用户自定义的均值假设 。假定你对未用药条件与其他三种用药条件影响是否不同感兴趣 , 可使用以下代码实现:
library(multcomp)contrast <- rbind("no drug vs. drug" = c(3, -1, -1, -1)) #rbind表示“row bind” , 即“按行绑定” , 其中每个对象应该具有相同的列数和相同的类型summary(glht(fit, linfct=mcp(dose=contrast)))
rbind(“no drug vs. drug” = c(3, -1, -1, -1))中的c(3, -1, -1, -1)是一个长度为4的数值向量 , 其中第一个数值(即3)表示“未注射药物的比重” , 后面三个数值(即-1 , -1 , -1)表示“三种剂量的比重” 。这个向量用于定义将三个剂量合并为一个组并将其与未注射药物组进行比较的比较向量 。
结果:
Simultaneous Tests for General Linear HypothesesMultiple Comparisons of Means: User-defined ContrastsFit: aov(formula = weight ~ gesttime + dose)Linear Hypotheses:Estimate Std. Error t value Pr(>|t|)no drug vs. drug == 08.2843.2092.5810.012no drug vs. drug == 0 *---Signif. codes:0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Adjusted p values reported -- single-step method)
对照c(3, -1, -1, -1)设定第一组和其他三组的均值进行比较 。假设检验的t统计量(2.581)在p 3.3 评估检验的假设条件
与ANOVA相同 , 都需要正态性和同方差性假设 , 另外还假定回归斜率相同 。本例中 , 假定四个处理组通过怀孕时间来预测出生体重的回归斜率都相同 。模型包含怀孕时间×剂量的交互项时 , 可对回归斜率的同质性进行检验 。交互效应若显著 , 则意味着时间和幼崽出生体重间的关系依赖于药物剂量的水平 。
library(multcomp)fit2 <- aov(weight ~ gesttime*dose, data=http://www.kingceram.com/post/litter) summary(fit2)
结果:
Df Sum Sq Mean Sq F valuePr(>F)gesttime1134.3134.308.289 0.00537 **dose3137.145.712.821 0.04556 * gesttime:dose381.927.291.684 0.17889Residuals66 1069.416.20---Signif. codes:0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
可以看到交互效应不显著 , 支持了斜率相等的假设 。若假设不成立 , 可以尝试变换协变量或因变量 , 或使用能对每个斜率独立解释的模型 , 或使用不需要假设回归斜率同质性的非参数方法 。sm包中sm.()函数为后者提供了一个例子 。
总之 , 如果交互效应不显著 , 就说明自变量对因变量的影响是线性的 , 可以使用统一的回归方程来描述它们之间的关系 。
3.4 结果可视化
HH包中的()函数可以绘制因变量、协变量和因子之间的关系图:
library(HH)ancova(weight ~ gesttime + dose, data=http://www.kingceram.com/post/litter)