在评论中解决您的问题“我想知道如何使ATE脱离模型2”:
首先,在你的模型2,并非所有的是识别导致秩亏的设计矩阵的问题。有必要降一层,例如假设γ Ĵ = 0为Ĵ = 1。也就是说,利用对比度编码并在周期1假设治疗效果是0。在R,将在周期1作为基准电平码的治疗效果的相互作用项,这也是为什么原因〜β具有解释在周期1,处理效果在SAS,它会在编码期间的治疗效果米作为基准电平,然后〜βγjγj=0j=1β~mβ~解释了在期而不是1 期的治疗效果。m
假设对比度在R方式创建的话,估计每个交互项(我仍然会表示这个系数,虽然它不是你在你的模型中定义正是)具有治疗效果差的时间段之间的解释Ĵ和时间段1表示ATE在每个周期甲Ť é Ĵ,则γ Ĵ = 甲Ť ë Ĵ - 甲Ť ë 1为Ĵ = 2 ,... ,米。因此,A T E j的估计量γjjATEjγj=ATEj−ATE1j=2,…,mATEj是。(由于懒惰而忽略了真实参数和估计量本身之间的符号差异),自然地,您的A T E = β = 1β〜+ γĴ。A T E =β= 1米∑米j = 1一个牛逼èĴ= β〜+ (β〜+ γ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的系数的从模型3所估计的方差-协方差矩阵。w ^ V^wŤ-----√wV
偏差编码
β~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)
输出:
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