gpt4 book ai didi

r - R : what's the difference bw Error(id) and Error(id/timevar) specification? 中的 aov() 错误项

转载 作者:行者123 更新时间:2023-12-03 23:54:06 26 4
gpt4 key购买 nike

aov(depvar~timevar+Error(id))有什么区别和 aov(depvar~timevar+Error(id/timevar))配方规范?这两种变体产生的结果略有不同。

曾经在这里问过同样的问题:https://stats.stackexchange.com/questions/60108/how-to-write-the-error-term-in-repeated-measures-anova-in-r
不过,我想用一个更合适的例子来重复一遍。

这是我创建的一个示例:

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() 会得到略有不同的结果:

只为一个时期:
> 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

或者对于两个时间项(为了空间起见,不要在此处输入输出,您可以自行检查):
summary(aov(var~group*time1*time2+Error(id/(group*time1*time2)),data=df)) 
summary(aov(var~group*time1*time2+Error(id),data=df))

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

最佳答案

这是一篇博客文章,它将帮助分解“经典方差分析中的随机效应”部分下的每个含义。

从博客中,这里总结了 Error 中“划分”的内容。术语的意思。

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

所以从你的问题来看,
aov(depvar~timevar+Error(id/timevar))

意味着你有来自 id 的随机效应但随后修复 timevartimevar嵌套在 id水平与
aov(depvar~timevar+Error(id))

正在服用 id作为对其他变量没有约束的随机效应。

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

This也可能证明很有用,这是一些关于方差分析的代码,对学习方差分析有一些建议。

关于r - R : what's the difference bw Error(id) and Error(id/timevar) specification? 中的 aov() 错误项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37497948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com