Menjawab pertanyaan Anda "Saya ingin tahu cara mengeluarkan ATE dari model 2" di komentar:
Pertama-tama, dalam model 2 Anda, tidak semua dapat diidentifikasi yang mengarah ke masalah kekurangan peringkat dalam matriks desain. Kita perlu menjatuhkan satu level, misalnya dengan asumsi untuk . Artinya, menggunakan pengkodean kontras dan menganggap efek pengobatan pada periode 1 adalah 0. Dalam R, itu akan mengkode istilah interaksi dengan efek pengobatan pada periode 1 sebagai tingkat referensi, dan itu juga alasan mengapa memiliki interpretasi efek pengobatan pada periode 1. Dalam SAS, ia akan mengkode efek pengobatan pada periode sebagai level referensi, kemudian memiliki interpretasi efek pengobatan pada periodeγjγj=0j=1β~mβ~m, bukan periode 1 lagi.
Dengan asumsi kontras dibuat dengan cara R, maka koefisien diperkirakan untuk setiap istilah interaksi (saya masih akan menyatakan ini dengan , meskipun tidak persis apa yang Anda tetapkan dalam model Anda) memiliki interpretasi perbedaan efek pengobatan antara periode waktu dan periode waktu 1. Nyatakan ATE pada setiap periode , lalu untuk . Karenanya estimator untuk adalah . (Mengabaikan perbedaan notasi antara true parameter dan estimator itu sendiri karena kemalasan) Dan tentu saja AndaγjjATEjγj=ATEj−ATE1j=2,…,mATEjβ~+γjATE=β=1m∑mj=1ATEj=β~+(β~+γ2)+⋯+(β~+γm)m=β~+1m(γ2+⋯+γm) .
Saya melakukan simulasi sederhana dalam R untuk memverifikasi ini:
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)
Dan hasilnya memverifikasi ini:
ATE.m1 ATE.m2
3.549213 3.549213
Saya tidak tahu bagaimana cara langsung mengubah pengkodean kontras dalam model 2 di atas, jadi untuk menggambarkan bagaimana seseorang dapat langsung menggunakan fungsi linear dari istilah interaksi, serta cara mendapatkan kesalahan standar, saya menggunakan paket 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)
Dan inilah hasilnya:
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)
Saya pikir kesalahan standar diperoleh oleh dengan menjadi bentuk kombinasi linear di atas dan estimasi varians-kovarians matriks dari koefisien dari model 3. wVwV^wT−−−−−√wV
Pengodean deviasi
Cara lain untuk membuat memiliki interpretasi langsung dari adalah dengan menggunakan pengkodean deviasi , sehingga kovariat selanjutnya mewakili perbandingan : 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)
Keluaran:
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