我想在拉丁方中得到以下实验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
答案 0 :(得分: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
是交互。因此,错误没有自由度。
答案 1 :(得分: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,表明您的模型没有意义(即使使用混合模型它&& #39; s过度参数化。)
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
令我感到惊讶的是lm
和lmerTest
答案在这里相距甚远 - 我原以为这是一个例子,其中有一个精心设计的经典&#34; #34;答案 - 但我不确定。可能值得跟进CrossValidated或Google。