每次处理具有不同观察次数的ANOVA表R

时间:2019-02-08 20:57:21

标签: r anova

我正在尝试在R中创建一个Anova表,其中的数据中每个治疗的观察次数不同,但是我只知道如何在所有治疗中使用相同数量的观察来做到这一点。任何帮助,将不胜感激。

设置数据集后,我尝试使用:

> tmA=tm = gl(k, 1, nA*k, factor("A")) 
> tmB=tm = gl(k, 1, nB*k, factor("B")) 
> tmC=tm = gl(k, 1, nC*k, factor("C")) 
#nA, nB, nC represent number of observations per treatment for treatments A, B, C respectively 
tm=c(tmA, tmB, tmC, tmD, tmE)
av=aov(r ~ tm)

但是我得到一个错误,因为tm的可变长度不同

> tmA=tm = gl(k, 1, nA*k, factor("A")) 
> tmB=tm = gl(k, 1, nB*k, factor("B")) 
> tmC=tm = gl(k, 1, nC*k, factor("C")) 
#nA, nB, nC represent number of observations per treatment for                  
treatments A, B, C respectively 
tm=c(tmA, tmB, tmC, tmD, tmE)
av=aov(r ~ tm)
Error in model.frame.default(formula = r ~ tm, drop.unused.levels =      
TRUE) : 
variable lengths differ (found for 'tm')

1 个答案:

答案 0 :(得分:0)

对于这个答案,我们假设rArBrC是三个向量。 rA包含对治疗A的观察,rB包含对治疗B的观察,rC包含对治疗C的观察。

因此,您可以执行以下操作:

Data <- data.frame(
   Y=c(rA, rB, rC),
   treatment = factor(rep(c("treatA", "treatB", "treatC"), 
   times=c(length(rA), length(rB), length(rC))))
)

然后,您可以使用此新数据框执行ANOVA。

anv <- aov(Y~treatment, data=Data)
anova(anv)