0

我想得到以下mat拉丁方实验的线性模型方程。

data <- c(12.5,11,13,11.4)
row <- factor(rep(1:2,2))
col <- factor(rep(1:2,each=2))
car <- c("B","A","A","B")
mat <- data.frame(row,col,car,data)
mat
# row col car data
# 1   1   1   B 12.5
# 2   2   1   A 11.0
# 3   1   2   A 13.0
# 4   2   2   B 11.4
4

2 回答 2

1

我可能会建议对此使用混合模型方法。

mat <- data.frame(data=c(12.5,11,13,11.4),
                  row=factor(rep(1:2,2)),
                  col=factor(rep(1:2,each=2)),
                  car=c("B","A","A","B"))

我使用它是lmerTest因为它可以更轻松地为您提供(近似)p 值

默认情况下anova()使用 Satterthwaite 近似,或者您可以告诉它使用更准确的 Kenward-Roger 近似。在任何一种情况下,您都可以看到分母 df 完全或接近于零,并且 p 值缺失或非常接近 1,这表明您的模型没有意义(即即使使用混合模型,它也被过度参数化了) .

library("lmerTest")
anova(m1 <- lmer(data~car+(1|row)+(1|col),data=mat))
anova(m1,ddf="Kenward-Roger")
##     Sum Sq Mean Sq NumDF      DenDF F.value Pr(>F)
## car 0.0025  0.0025     1 9.6578e-06  2.0019 0.9999

尝试更大的设计:

set.seed(101)
mat2 <- data.frame(data=rnorm(36),
                  row=gl(6,6),
                  col=gl(6,1,36),
                  car=sample(LETTERS[1:2],size=36,replace=TRUE))
m2A <- lm(data~car+row+col,data=mat2)
anova(m2A)
## (excerpt)
##           Df  Sum Sq Mean Sq F value Pr(>F)
## car        1  1.2571 1.25709  1.6515  0.211

m2B <- lmer(data~car+(1|row)+(1|col),data=mat2)
anova(m2B)
##     Sum Sq Mean Sq NumDF  DenDF F.value Pr(>F)
## car  1.178   1.178     1 17.098    1.56 0.2285
anova(m2B,ddf="Kenward-Roger")
##     Sum Sq Mean Sq NumDF  DenDF F.value Pr(>F)
## car  1.178   1.178     1 17.005  1.1029 0.3083

让我有点惊讶的是,这里的答案lmlmerTest答案相距甚远——我原以为这是一个例子,其中有一个精心制定的“经典”答案——但我不确定。可能值得关注CrossValidated或 Google。

于 2014-11-02T23:03:53.223 回答
1
fit <- lm(data~row+col+car,mat)
coef(fit)
# (Intercept)        row2        col2        carB 
#       12.55       -1.55        0.45       -0.05 

所以row因子的效果是-1.55,因子的效果col是0.45,因子的效果car是-0.05。截距项是所有data因子都在第一水平(row=1, col=1, car=A)时的期望值。

请注意,您的设计是过度指定的:您只有 4 条数据,这足以指定两个因素的影响及其交互作用,但您已将其设置car为交互作用。因此,没有为错误留下的自由度。

于 2014-11-01T19:06:06.620 回答