Отвечая на ваш вопрос «Интересно, как вывести ATE из модели 2» в комментариях:
Прежде всего, в вашей модели 2 не все идентифицируемы, что приводит к проблеме дефицита ранга в матрице проектирования. Необходимо отбросить один уровень, например, предполагая, что γ j = 0 для j = 1 . То есть, используя контрастное кодирование и предполагая, что эффект лечения в период 1 равен 0. В R он будет кодировать термин взаимодействия с эффектом лечения в период 1 в качестве контрольного уровня, и это также является причиной, по которой ˜ β интерпретирует эффекта лечения в период 1. В SAS он будет кодировать эффект лечения в период m в качестве контрольного уровня, затем ˜ βγJγJ= 0J = 1β~мβ~имеет интерпретацию эффекта лечения в период , а не период 1 больше.м
Если предположить, что контраст создается способом R, то коэффициенты, оцененные для каждого члена взаимодействия (я все равно буду обозначать это как , хотя это не совсем то, что вы определили в вашей модели), интерпретируют разницу эффекта лечения между периодами времени. j и период времени 1. Обозначим ATE в каждом периоде A T E j , тогда γ j = A T E j - A T E 1 для j = 2γJJA T EJγJ= A T EJ- А Т Е1 . Следовательно, оценка для A T E jj = 2 , … , мA T EJявляется . (игнорируя разницу в обозначениях между истинным параметром и самим оценщиком из-за лени) И, естественно, ваш A T E = β = 1β~+ γJA T E =β= 1мΣмJ = 1A T EJ= β~+ ( β~+ γ2) + ⋯ + ( β~+ γм)м= β~+ 1м( γ2+ ⋯ + γм) .
Я сделал простое моделирование в R, чтобы проверить это:
set.seed(1234)
time <- 4
n <-2000
trt.period <- c(2,3,4,5) #ATE=3.5
kj <- c(1,2,3,4)
intercept <- rep(rnorm(n, 1, 1), each=time)
eij <- rnorm(n*time, 0, 1.5)
trt <- rep(c(rep(0,n/2),rep(1,n/2)), each=time)
y <- intercept + trt*(rep(trt.period, n))+rep(kj,n)+eij
sim.data <- data.frame(id=rep(1:n, each=time), period=factor(rep(1:time, n)), y=y, trt=factor(trt))
library(lme4)
fit.model1 <- lmer(y~trt+(1|id), data=sim.data)
beta <- getME(fit.model1, "fixef")["trt1"]
fit.model2 <- lmer(y~trt*period + (1|id), data=sim.data)
beta_t <- getME(fit.model2, "fixef")["trt1"]
gamma_j <- getME(fit.model2, "fixef")[c("trt1:period2","trt1:period3","trt1:period4")]
results <-c(beta, beta_t+sum(gamma_j)/time)
names(results)<-c("ATE.m1", "ATE.m2")
print(results)
И результаты подтверждают это:
ATE.m1 ATE.m2
3.549213 3.549213
Я не знаю, как напрямую изменить контрастное кодирование в модели 2 выше, поэтому, чтобы проиллюстрировать, как можно напрямую использовать линейную функцию членов взаимодействия, а также как получить стандартную ошибку, я использовал пакет multcomp:
sim.data$tp <- interaction(sim.data$trt, sim.data$period)
fit.model3 <- lmer(y~tp+ (1|id), data=sim.data)
library(multcomp)
# w= tp.1.1 + (tp.2.1-tp.2.0)+(tp.3.1-tp.3.0)+(tp.4.1-tp.4.0)
# tp.x.y=interaction effect of period x and treatment y
w <- matrix(c(0, 1,-1,1,-1,1,-1,1)/time,nrow=1)
names(w)<- names(getME(fit.model3,"fixef"))
xx <- glht(fit.model3, linfct=w)
summary(xx)
И вот вывод:
Simultaneous Tests for General Linear Hypotheses
Fit: lmer(formula = y ~ tp + (1 | id), data = sim.data)
Linear Hypotheses:
Estimate Std. Error z value Pr(>|z|)
1 == 0 3.54921 0.05589 63.51 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)
Я думаю, что стандартная ошибка получается сшбыть выше линейной формы комбинированной иVш V^весT-----√весВ предполагаемой ковариационной матрицы коэффициентов из модели 3.
Кодирование отклонения
β~A T EA T EJ- А Т Е
sim.data$p2vsmean <- 0
sim.data$p3vsmean <- 0
sim.data$p4vsmean <- 0
sim.data$p2vsmean[sim.data$period==2 & sim.data$trt==1] <- 1
sim.data$p3vsmean[sim.data$period==3 & sim.data$trt==1] <- 1
sim.data$p4vsmean[sim.data$period==4 & sim.data$trt==1] <- 1
sim.data$p2vsmean[sim.data$period==1 & sim.data$trt==1] <- -1
sim.data$p3vsmean[sim.data$period==1 & sim.data$trt==1] <- -1
sim.data$p4vsmean[sim.data$period==1 & sim.data$trt==1] <- -1
fit.model4 <- lmer(y~trt+p2vsmean+p3vsmean+p4vsmean+ (1|id), data=sim.data)
Вывод:
Fixed effects:
Estimate Std. Error t value
(Intercept) 3.48308 0.03952 88.14
trt1 3.54921 0.05589 63.51
p2vsmean -1.14774 0.04720 -24.32
p3vsmean 1.11729 0.04720 23.67
p4vsmean 3.01025 0.04720 63.77