Найти линейную модель латинского квадратного дизайна

Я хочу получить уравнение линейной модели для следующего эксперимента 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

2 ответа

Решение

Я мог бы рекомендовать использовать смешанный модельный подход к этому.

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 потому что это будет более легко предоставить вам (приблизительные) р-значения

По умолчанию 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

Меня немного удивляет, что lm а также lmerTest ответы здесь так далеко друг от друга - я бы подумал, что это был пример, где был хорошо сформулированный "классический" ответ - но я не уверен. Может быть стоит следить за CrossValidated или Google.

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 это взаимодействие. Так что нет никаких степеней свободы, оставленных для ошибки.

Другие вопросы по тегам