裂区方差分析:R 中的模型比较测试

机器算法验证 r 方差分析 多元分析 重复测量 裂区
2022-03-28 02:08:07

如何使用合适的模型比较来测试裂区方差分析中的效果,以便与 R 中的XM参数一起使用anova.mlm()我熟悉?anova.mlm和 Dalgaard (2007)[1]。不幸的是,它只刷了裂区设计。在具有两个受试者内因素的完全随机设计中执行此操作:

N  <- 20  # 20 subjects total
P  <- 3   # levels within-factor 1
Q  <- 3   # levels within-factor 2
DV <- matrix(rnorm(N* P*Q), ncol=P*Q)           # random data in wide format
id <- expand.grid(IVw1=gl(P, 1), IVw2=gl(Q, 1)) # intra-subjects layout of data matrix

library(car)        # for Anova()
fitA <- lm(DV ~ 1)  # between-subjects design: here no between factor
resA <- Anova(fitA, idata=id, idesign=~IVw1*IVw2)
summary(resA, multivariate=FALSE, univariate=TRUE)  # all tests ...

以下模型比较得出相同的结果。受限模型不包括相关效应,但所有其他相同或更低阶的效应,完整模型会添加相关效应。

anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitA, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                      X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

具有一个主体内和一个主体间因子的Split-Splot 设计:

idB  <- subset(id, IVw2==1, select="IVw1")          # use only first within factor
IVb  <- gl(2, 10, labels=c("A", "B"))               # between-subjects factor
fitB <- lm(DV[ , 1:P] ~ IVb)                        # between-subjects design
resB <- Anova(fitB, idata=idB, idesign=~IVw1)
summary(resB, multivariate=FALSE, univariate=TRUE)  # all tests ...

这些是anova()复制测试的命令,但我不知道它们为什么起作用。为什么以下模型比较的测试会导致相同的结果?

anova(fitB, idata=idB, X=~1, test="Spherical") # IVw1, IVw1:IVb
anova(fitB, idata=idB, M=~1, test="Spherical") # IVb

两个主体内因素和一个主体间因素:

fitC <- lm(DV ~ IVb)  # between-subjects design
resC <- Anova(fitC, idata=id, idesign=~IVw1*IVw2)
summary(resC, multivariate=FALSE, univariate=TRUE)  # all tests ...

如何使用相应的模型比较复制上面给出的结果,以便与 的XM参数一起使用anova.mlm()这些模型比较背后的逻辑是什么?

编辑:suncoolsu 指出,出于所有实际目的,应使用混合模型分析来自这些设计的数据。但是,我仍然想了解如何复制summary(Anova())with的结果anova.mlm(..., X=?, M=?)

[1]:Dalgaard, P. 2007。多变量分析的新函数。R 新闻,7(2),2-7。

2个回答

XM基本上指定了您要比较的两个模型,但仅在主体内效果方面X然后它显示所有主体间效应(包括截距)与在和之间变化的主体内效应的相互作用的结果M

如果我们为and添加默认值,您的示例fitB将更容易理解XM

anova(fitB, idata=idB, M=~1, X=~0, test="Spherical") # IVb
anova(fitB, idata=idB, M=diag(3), X=~1, test="Spherical") # IVw1, IVw1:IVb

第一个模型是从无对象内效应(均值相同)到每个均值不同的变化,因此我们添加了id随机效应,这是测试总体截距和总体对象间效应的正确方法在。

第二个模型广告id:IVw1交互,这是正确的测试IVw1IVw1:IVb条款。由于只有一个主体内效应(三个级别),diag(3)第二个模型中的默认值将解释它;相当于运行

anova(fitB, idata=idB, M=~IVw1, X=~1, test="Spherical") # IVw1, IVw1:IVb

对于您的fitC,我相信这些命令将重新创建Anova摘要。

anova(fitC, idata=id, M=~1, X=~0, test="Spherical") #IVb
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitC, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                  X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

现在,正如您所发现的,这些命令非常棘手。值得庆幸的是,没有太多理由再使用它们了。如果您愿意假设球形,您应该只使用aov,或者为了更简单的语法,只需lm自己使用和计算正确的 F 检验。如果您不愿意假设球形度,那么使用lme确实是可行的方法,因为您比使用 GG 和 HF 校正获得更多的灵活性。

例如,这是aovlmfitA. 您确实需要首先拥有长格式的数据;这是一种方法:

library(reshape)
d0 <- data.frame(id=1:nrow(DV), DV)
d0$IVb <- IVb
d0 <- melt(d0, id.vars=c(1,11), measure.vars=2:10)
id0 <- id
id0$variable <- factor(levels(d0$variable), levels=levels(d0$variable))
d <- merge(d0, id0)
d$id <- factor(d$id)

这是lm andaov 的代码:

anova(lm(value ~ IVw1*IVw2*id, data=d))
summary(aov(value ~ IVw1*IVw2 + Error(id/(IVw1*IVw2)), data=d))

裂区设计起源于农业,因此得名。但它们经常发生,我会说——大多数临床试验的主力军。主图用一个因素的水平处理,而其他一些因素的水平允许随着子图的变化而变化。该设计是由于对完全随机化的限制而产生的。例如:一个字段可以分为四个子图。可能可以在子地块中种植不同的品种,但整个田地只能使用一种灌溉方式。不是分裂和分裂的区别. 块是实验单元的特征,我们可以选择在实验设计中利用它们,因为我们知道它们在那里。另一方面,拆分对可能的因子分配施加了限制。他们对防止完全随机化的设计提出了要求。

它们在临床试验中被大量使用,其中一个因素很容易改变,而另一个因素需要更多时间才能改变。如果实验者必须连续对每个水平的难改变因子进行所有运行,则裂区设计将导致难改变因子代表整个地块因子。

这是一个例子:在农业田间试验中,目标是确定两种作物品种和四种不同灌溉方法的效果。有八个田地可用,但每个田地只能使用一种灌溉方式。这些领域可以分为两个部分,每个部分的种类不同。整个小区因素是灌溉,应随机分配到田间。在每个字段中,分配了品种。

这就是你如何做到这一点R

install.packages("faraway")
data(irrigation)
summary(irrigation)

library(lme4)

R> (lmer(yield ~ irrigation * variety + (1|field), data = irrigation))
Linear mixed model fit by REML 
Formula: yield ~ irrigation * variety + (1 | field) 
   Data: irrigation 
  AIC  BIC logLik deviance REMLdev
 65.4 73.1  -22.7     68.6    45.4
Random effects:
 Groups   Name        Variance Std.Dev.
 field    (Intercept) 16.20    4.02    
 Residual              2.11    1.45    
Number of obs: 16, groups: field, 8

Fixed effects:
                       Estimate Std. Error t value
(Intercept)               38.50       3.02   12.73
irrigationi2               1.20       4.28    0.28
irrigationi3               0.70       4.28    0.16
irrigationi4               3.50       4.28    0.82
varietyv2                  0.60       1.45    0.41
irrigationi2:varietyv2    -0.40       2.05   -0.19
irrigationi3:varietyv2    -0.20       2.05   -0.10
irrigationi4:varietyv2     1.20       2.05    0.58

Correlation of Fixed Effects:
            (Intr) irrgt2 irrgt3 irrgt4 vrtyv2 irr2:2 irr3:2
irrigation2 -0.707                                          
irrigation3 -0.707  0.500                                   
irrigation4 -0.707  0.500  0.500                            
varietyv2   -0.240  0.170  0.170  0.170                     
irrgtn2:vr2  0.170 -0.240 -0.120 -0.120 -0.707              
irrgtn3:vr2  0.170 -0.120 -0.240 -0.120 -0.707  0.500       
irrgtn4:vr2  0.170 -0.120 -0.120 -0.240 -0.707  0.500  0.500

基本上,这个模型所说的是,灌溉和品种是固定效应,品种嵌套在灌溉中。这些字段是随机效应,在图形上将类似于

I_1 | I_2 | I_3 | I_4

V_1 V_2 | V_1 V_2 | V_1 V_2 | V_1 V_2

但这是一个特殊的变体,具有固定的整区效应和子区效应。可以有其中一个或多个是随机的变体。可以有更复杂的设计,例如拆分 .. 情节设计。基本上,你可以疯狂和疯狂。但是考虑到底层结构和分布(即固定或随机,嵌套或交叉,..)被清楚地理解,almer-Ninja在建模时不会有任何麻烦。可能是解释会一团糟。

关于比较,假设你有lmer1and lmer2

anova(lmer1, lmer2)

将根据 自由度等于参数差异的卡方检验统计量为您提供适当的检验。

cf: Faraway, J.,用 R 扩展线性模型。

卡塞拉,G.,统计设计