Respondendo à sua pergunta "Gostaria de saber como tirar o ATE do modelo 2" nos comentários:
Primeiro, no seu modelo 2, nem todos são identificáveis, o que leva ao problema de deficiência de classificação na matriz de design. É necessário diminuir um nível, por exemplo, assumindo para . Ou seja, usando a codificação de contraste e assumindo que o efeito do tratamento no período 1 é 0. Em R, ele codificará o termo de interação com efeito de tratamento no período 1 como o nível de referência, e é também por isso que tem a interpretação do efeito do tratamento no período 1. No SAS, ele codifica o efeito do tratamento no período como o nível de referência, então tem a interpretação do efeito do tratamento no períodoγ j = 0 j = 1 ˜ β m ˜ β mγjγj=0j=1β~mβ~m, não período 1 mais.
Supondo que o contraste seja criado da maneira R, os coeficientes estimados para cada termo de interação (ainda o por , embora não seja exatamente o que você definiu em seu modelo) tenham a interpretação da diferença do efeito do tratamento entre o período de tempo e período 1. Indique ATE em cada período , então para . Portanto, um estimador para é . (ignorando a diferença de notação entre o parâmetro verdadeiro e o próprio estimador, porque a preguiça)γjjATEjγj=ATEj−ATE1j=2,…,mATEjβ~+γjATE=β=1m∑mj=1ATEj=β~+(β~+γ2)+⋯+(β~+γm)m=β~+1m(γ2+⋯+γm) .
Fiz uma simulação simples em R para verificar isso:
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)
E os resultados confirmam isso:
ATE.m1 ATE.m2
3.549213 3.549213
Não sei como alterar diretamente a codificação de contraste no modelo 2 acima, para ilustrar como é possível usar diretamente uma função linear dos termos de interação, bem como obter o erro padrão, usei o pacote 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)
E aqui está a saída:
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)
Penso que o erro padrão é obtido por com sendo a forma de combinação linear acima e a matriz estimada de variância-covariância dos coeficientes do modelo 3. WVwV^wT−−−−−√wV
Codificação de desvio
Outra maneira de fazer com que tenha a interpretação direta de é usar a codificação de desvio , para que as covariáveis posteriores representem a comparação : ATEATEj-ATEβ~ATEATEj−ATE
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)
Resultado:
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