R中的aov()错误术语:bw Error(id)和Error(id/timevar)规范有何区别? [英] aov() error term in R: what's the difference bw Error(id) and Error(id/timevar) specification?

查看:379
本文介绍了R中的aov()错误术语:bw Error(id)和Error(id/timevar)规范有何区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

aov(depvar~timevar+Error(id))aov(depvar~timevar+Error(id/timevar))公式规范之间有什么区别?这两种变体产生的结果略有不同.

What is the difference between the aov(depvar~timevar+Error(id)) and the aov(depvar~timevar+Error(id/timevar)) formula specifications? These two variants produce slightly different results.

曾经在这里问过同样的问题:

The same question was once asked here: https://stats.stackexchange.com/questions/60108/how-to-write-the-error-term-in-repeated-measures-anova-in-r However, I'd like to repeat it with a more appropriate example.

这是我创建的一个示例:

Here is an example that I created:

var=rep(NA,180)
id=rep(1:20,each=180/20)
group=rep(rep(1:2,each=9),180/(9*2))
time1=rep(rep(1:3,each=3),180/(3*3))
time2=rep(c(8,15,20),180/3)

var[group==1&time1==1&time2==8]=runif(10,105,115)
var[group==2&time1==1&time2==8]=runif(10,105,115)
var[group==1&time1==1&time2==15]=runif(10,95,105)
var[group==2&time1==1&time2==15]=runif(10,95,105)
var[group==1&time1==1&time2==20]=runif(10,85,95)
var[group==2&time1==1&time2==20]=runif(10,85,95)

var[group==1&time1==2&time2==8]=runif(10,95,105)
var[group==2&time1==2&time2==8]=runif(10,95,105)
var[group==1&time1==2&time2==15]=runif(10,85,95)
var[group==2&time1==2&time2==15]=runif(10,75,85)
var[group==1&time1==2&time2==20]=runif(10,75,85)
var[group==2&time1==2&time2==20]=runif(10,65,75)

var[group==1&time1==3&time2==8]=runif(10,95,105)
var[group==2&time1==3&time2==8]=runif(10,95,105)
var[group==1&time1==3&time2==15]=runif(10,85,95)
var[group==2&time1==3&time2==15]=runif(10,75,85)
var[group==1&time1==3&time2==20]=runif(10,75,85)
var[group==2&time1==3&time2==20]=runif(10,65,75)

df=data.frame(id,var,group,time1,time2)
df$id=factor(df$id)
df$group=factor(df$group)
df$time1=factor(df$time1)
df$time2=factor(df$time2)

根据Error()术语规范,对此执行aov()会得到略有不同的结果:

Performing aov() on this gets slightly different results depending on Error() term specification:

只是一个期限:

> summary(aov(var~time1+Error(id),data=df))
Error: id
      Df Sum Sq Mean Sq F value Pr(>F)
      Residuals 19  958.4   50.44               
Error: Within
       Df Sum Sq Mean Sq F value   Pr(>F)    
       time1       2   7538    3769   30.41 6.72e-12 ***
       Residuals 158  19584     124         

> summary(aov(var~time1+Error(id/time1),data=df))
Error: id
      Df Sum Sq Mean Sq F value Pr(>F)
      Residuals 19  958.4   50.44               
Error: id:time1
      Df Sum Sq Mean Sq F value Pr(>F)    
      time1      2   7538    3769   211.5 <2e-16 ***
      Residuals 38    677      18                   
      ---
     Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Error: Within
       Df Sum Sq Mean Sq F value Pr(>F)
       Residuals 120  18907   157.6    

或者对于两个时间项(为了节省空间,请不要在此处键入输出,您可以自己检查):

Or for both time terms (don't type output here for the sake of space, your may check it on your own):

summary(aov(var~group*time1*time2+Error(id/(group*time1*time2)),data=df)) 
summary(aov(var~group*time1*time2+Error(id),data=df)) 

为什么会发生?哪个变体是正确的?

Why does it happen? Which variant is correct?

推荐答案

这是一篇博客文章,可帮助您分解古典方差分析中的随机效应"部分中的含义.

Here's a blog post that'll help break down what each means under the "Random Effects in Classical ANOVA" section.

在博客中,这是Error术语中除法"含义的摘要.

From the blog, here's a summary for what "dividing" in the Error term means.

aov(Y ~ Error(A), data=d)               # Lone random effect
aov(Y ~ B + Error(A/B), data=d)         # A random, B fixed, B nested within A
aov(Y ~ (B*X) + Error(A/(B*X)), data=d) # B and X interact within levels of A

因此,从您的问题开始,

So from your question,

aov(depvar~timevar+Error(id/timevar))

表示您从id获得随机效果,但随后将timevar嵌套在id

means you have a random effect from id but then fix timevar with timevar nested within id levels versus

aov(depvar~timevar+Error(id))

这只是将id作为随机效应,而对其他变量没有任何约束.

which is just taking id as the random effects with no constraint on other variables.

来源: http://conjugateprior.org/2013/01/formulae -in-r-anova/

可能也很有用,这是一些代码进行方差分析,对学习方差分析有一些建议.

This might prove useful as well, which is some code going over analysis of variance that has some recommendations on learning ANOVA.

这篇关于R中的aov()错误术语:bw Error(id)和Error(id/timevar)规范有何区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆