귀하의 질문에 대한 논평에서 "모델 2에서 ATE를 얻는 방법이 궁금합니다."
우선, 모델 2에서 모든 를 식별 할 수있는 것은 아니며, 이는 설계 행렬의 순위 부족 문제로 이어집니다. 예를 들어 대해 이라고 가정하면 한 수준을 삭제해야합니다 . 즉, 대비 코딩을 사용하고 기간 1의 처리 효과가 0이라고 가정합니다. R에서는 기간 1의 처리 효과와의 상호 작용 항을 참조 수준으로 코딩하므로 이유도 있습니다. 는 기간 1에서 치료 효과에 대한 해석을 갖습니다. SAS에서는 에서 치료 효과를 참조 수준으로 코딩 한 다음 가 치료 기간에 의 해석 효과를 해석합니다γ제이γ제이= 0j = 1β~미디엄β~미디엄더 이상 기간 1이 아닙니다.
대비가 R 방식으로 생성되었다고 가정하면 각 상호 작용 항에 대해 추정 된 계수 ( 모델에서 정의한 것과 정확히 일치하지는 않지만 표시 )는 기간 간 치료 효과 차이의 해석을 갖습니다. 및 기간 1. 각 기간 에서 를 표시 한 다음 대해 을 나타 냅니다. 따라서 은 입니다. (게으름 때문에 실제 모수와 추정량 자체의 표기법 차이를 무시 함) 그리고 자연스럽게γ제이제이T E제이γ제이=T E제이−T E1j = 2 , … , mT E제이β~+γ제이A T E =β=1미디엄∑미디엄j = 1T E제이=β~+ (β~+γ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)
표준 오차는 에 의해 가 위의 선형 조합 형태이고 는 모형 3의 계수에 대한 추정 분산 공분산 행렬에 의해 얻어 진다고 생각합니다 .승V^승티−−−−−√승V
편차 코딩
을 직접 해석 하는 를 만드는 또 다른 방법 은 편차 코딩 을 사용 하여 나중에 공변량이 비교를 나타내는 것입니다.β~T ET E제이− A T E
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