首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Anova 2型及对比研究

Anova 2型及对比研究
EN

Stack Overflow用户
提问于 2012-07-06 13:55:23
回答 1查看 1.4K关注 0票数 0

我要分析的数据的研究设计很简单。对照组1例,治疗组2例(TREAT_1和TREAT_2)。数据还包括2个协变量COV1和COV2。我被要求检查数据中是否存在线性或二次处理效应。

我创建了一个虚拟数据集来解释我的情况:

代码语言:javascript
复制
df1 <- data.frame(

Observation = c(rep("CTRL",15), rep("TREAT_1",13), rep("TREAT_2", 12)),

COV1 = c(rep("A1", 30), rep("A2", 10)),

COV2 = c(rep("B1", 5), rep("B2", 5), rep("B3", 10), rep("B1", 5), rep("B2", 5), rep("B3", 10)),

Variable = c(3944133, 3632461, 3351754, 3655975, 3487722, 3644783, 3491138, 3328894,
             3654507, 3465627, 3511446, 3507249, 3373233, 3432867, 3640888,

             3677593, 3585096, 3441775, 3608574, 3669114, 4000812, 3503511, 3423968,
             3647391, 3584604, 3548256, 3505411, 3665138, 

             4049955, 3425512, 3834061, 3639699, 3522208, 3711928, 3576597, 3786781,
             3591042, 3995802, 3493091, 3674475)
)

plot(Variable ~ Observation, data = df1)

从图中可以看出,控制组和治疗组之间存在线性关系。为了检查这种线性效应是否具有统计意义,我使用contr.poly()函数改变对比,并拟合如下线性模型:

代码语言:javascript
复制
contrasts(df1$Observation) <- contr.poly(levels(df1$Observation))

lm1 <- lm(log(Variable) ~ Observation, data = df1)
summary.lm(lm1)

从总结中我们可以看出,线性效应在统计上是显著的:

代码语言:javascript
复制
Observation.L  0.029141   0.012377    2.355    0.024 *  
Observation.Q  0.002233   0.012482    0.179    0.859  

但是,第一个模型不包括两个协变量中的任何一个。如果将它们包含在内,则线性关系的p值不显着:

代码语言:javascript
复制
lm2 <- lm(log(Variable) ~ Observation + COV1 + COV2, data = df1)
summary.lm(lm2)

Observation.L  0.04116    0.02624   1.568    0.126    
Observation.Q  0.01003    0.01894   0.530    0.600    
COV1A2        -0.01203    0.04202  -0.286    0.776    
COV2B2        -0.02071    0.02202  -0.941    0.354    
COV2B3        -0.02083    0.02066  -1.008    0.320   

到目前一切尚好。但是,我被告知要执行II型Anova而不是I型,以执行II型Anova I型使用汽车包中的Anova()功能。

代码语言:javascript
复制
Anova(lm2, type="II")

Anova Table (Type II tests)

Response: log(Variable)
              Sum Sq Df F value Pr(>F)
Observation 0.006253  2  1.4651 0.2453
COV1        0.000175  1  0.0820 0.7763
COV2        0.002768  2  0.6485 0.5292
Residuals   0.072555 34 

这里使用类型II的问题是,对于线性和二次效应,您没有得到p值。所以我不知道这个效应是统计上的线性的,还是二次的。

我发现以下代码产生与Anova()函数相同的p值用于观察。但结果也不包括线性或二次效应的任何p值:

代码语言:javascript
复制
lm2 <- lm(log(Variable) ~ Observation + COV1 + COV2, data = df1)
lm3 <- lm(log(Variable) ~ COV1 + COV2, data = df1)
anova(lm2, lm3)

有人知道如何进行II型anova和对比函数来获得线性和二次效应的p值吗?

我将非常感谢你的帮助。

最佳彼得

EN

回答 1

Stack Overflow用户

发布于 2012-12-06 20:29:08

我找到了一个部分的解决办法,但它可能需要进一步的纠正。stats包中函数drop1()的文档表明,该函数生成第二类平方和(尽管本页:http://www.statmethods.net/stats/anova.html )声明drop1()生成第三类平方和,而且我没有花太多时间仔细研究它(http://afni.nimh.nih.gov/sscc/gangc/SS.html)来交叉检查平方计算的和。你可以用它来手工计算所有的东西,但我怀疑你是在问这个问题,因为如果有人已经解决了这个问题,那就太好了。

无论如何,我向名为Observation2的虚拟数据中添加了第二个向量,并将其设置为线性对比(在给定时间,您只能为给定的向量指定一组对比):

代码语言:javascript
复制
df1[,"Observation2"]<-df1$Observation
contrasts(df1$Observation2, how.many=1)<-contr.poly

然后建立了第三个线性模型:

代码语言:javascript
复制
lm3<-lm(log(Variable)~Observation2+COV1+COV2, data=df1)

并用drop1进行F检验,比较两种模型lm2的F统计量,其中既包含线性项,也包含二次项:

代码语言:javascript
复制
drop1(lm2, test="F")

lm3,它只包含线性对比:

代码语言:javascript
复制
drop1(lm3, test="F")

这并不包括模型之间的直接比较,尽管线性模型的F统计量较高(且p值相应较低),这将导致依赖它而不是二次模型。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11363610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档