종단 연구에서 평균 치료 효과를 추정하는 가장 좋은 방법은 무엇입니까?


9

종단 연구에서, 단위 의 결과 는 총 고정 측정 시점으로 고정 시점 에서 반복적으로 측정됩니다 (고정 = 단위에 대한 측정이 동시에 수행됨 ).Yititm

단위는 처리 또는 통제 그룹 무작위로 할당됩니다 . 치료의 평균 효과 예 : 를 추정하고 테스트하여 시간과 개인에 대한 기대치를 얻습니다. 이 목적을 위해 고정 상황 다단계 (혼합 효과) 모델을 사용하는 것이 좋습니다.G=1G=0

ATE=E(Y|G=1)E(Y|G=0),

Yit=α+βGi+u0i+eit

함께 절편, , 단위 걸쳐 랜덤 절편 및 잔류한다.αβATEue

이제 대안 모델을 고려하고 있습니다.

Yit=β~Gi+j=1mκjdij+j=1mγjdijGi+u~0i+e~it

여기에는 각 경우 대한 고정 효과 가 포함됩니다. 여기서 는 이면 이고 그렇지 않습니다. 또한이 모델에는 매개 변수를 사용한 처리와 시간 간의 상호 작용이 포함되어 있습니다 . 따라서이 모델은 의 효과가 시간에 따라 다를 수 있다는 점을 고려합니다 . 이것은 그 자체로 유익하지만, 의 이질성 이 고려 되기 때문에 매개 변수의 추정 정밀도를 높여야한다고 생각 합니다.κjtdt=1j=t0γGY

그러나이 모델에서 계수는 더 이상 와 같지 않습니다. 대신 첫 번째 경우 ATE를 나타냅니다 ( ). 의 추정 그래서 보다 더 효율적일 수 있습니다 하지만 표현하지 않습니다 더 이상.β~ATEt=1β~βATE

내 질문은 :

  • 이 종단 연구 설계에서 치료 효과를 추정하는 가장 좋은 방법은 무엇입니까?
  • 모델 1을 사용해야합니까, 아니면 더 효율적인 모델 2를 사용하는 방법이 있습니까?
  • 가 와 를 가끔 특정 편차로 해석 하도록하는 방법이 있습니까 (예 : 효과 코딩 사용)?β~ATEγ

모델 2에서 ATE는 에 평균 더한 것과 않습니까? β~γj
jujae

목적이 ATE를 독점적으로 추정하는 경우, 모델 1은 편향되지 않으므로 충분할 것입니다. 모형에 기간 또는 교호 작용을 추가하면 내가 믿는 추정의 분산이 줄어 듭니다. 그리고 를 편차 코딩 (평균 과의 편차)으로 코딩 하려고 할 수도 있다고 생각 합니까? γ
jujae

@jujae 모델 2의 주요 이유는 분산 감소입니다. 그러나 ATE를 모델 2에서 꺼내는 방법이 궁금합니다. 첫 번째 의견은 포인터입니다. 이것을 보여 주거나 정교하게 할 수 있습니까? 그렇다면 이것은 내 질문에 대한 대답에 가깝습니다!
tomka

모형 2에 적합하면 는 기간 1에서 ATE 해석을합니다. 식별 가능성을 고려하기 위해 교호 작용 항의 계수는 기간 1에서 ATE를 기준 수준으로 코딩합니다. 따라서 는 실제로 소프트웨어 출력 에서 기간 에서의 처리와 기간 1에서의 처리 의 차이 입니다. 따라서 각 기간 에서 ATE는 이며 기간별 ATE를 평균하면 모델 1에서 대 평균 ATE가됩니다 .β~γjjjβ~+γjβ
jujae

답변:


2

귀하의 질문에 대한 논평에서 "모델 2에서 ATE를 얻는 방법이 궁금합니다."

우선, 모델 2에서 모든 를 식별 할 수있는 것은 아니며, 이는 설계 행렬의 순위 부족 문제로 이어집니다. 예를 들어 대해 이라고 가정하면 한 수준을 삭제해야합니다 . 즉, 대비 코딩을 사용하고 기간 1의 처리 효과가 0이라고 가정합니다. R에서는 기간 1의 처리 효과와의 상호 작용 항을 참조 수준으로 코딩하므로 이유도 있습니다. 는 기간 1에서 치료 효과에 대한 해석을 갖습니다. SAS에서는 에서 치료 효과를 참조 수준으로 코딩 한 다음 가 치료 기간에 의 해석 효과를 해석합니다γjγj=0j=1β~mβ~m더 이상 기간 1이 아닙니다.

대비가 R 방식으로 생성되었다고 가정하면 각 상호 작용 항에 대해 추정 된 계수 ( 모델에서 정의한 것과 정확히 일치하지는 않지만 표시 )는 기간 간 치료 효과 차이의 해석을 갖습니다. 및 기간 1. 각 기간 에서 를 표시 한 다음 대해 을 나타 냅니다. 따라서 은 입니다. (게으름 때문에 실제 모수와 추정량 자체의 표기법 차이를 무시 함) 그리고 자연스럽게γjjATEjγj=ATEjATE1j=2,,mATEjβ~+γjATE=β=1mj=1mATEj=β~+(β~+γ2)++(β~+γm)m=β~+1m(γ2++γm) .

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의 계수에 대한 추정 분산 공분산 행렬에 의해 얻어 진다고 생각합니다 .wV^wTwV

편차 코딩

을 직접 해석 하는 를 만드는 또 다른 방법 은 편차 코딩 을 사용 하여 나중에 공변량이 비교를 나타내는 것입니다.β~ATEATEjATE

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

좋지만 표준 오류 추정치를 얻는 방법은 무엇입니까? (your )가 ATE (SE 추정값)와 직접적 으로 같은 방식으로 상호 작용 /주기 효과의 코딩을 사용할 수 없습니까? β~beta_t
tomka

@tomka, 가능합니다. 모델 2에서 상호 작용 항의 대비 행렬을 직접 변경하는 방법을 모르겠습니다. 나중에 조사하고 돌아올 것입니다.
jujae

당신의 대답에 대해 생각하면서, 나는 이것을 발견했습니다. 편차 코딩이 원하는 것을 수행한다고 생각합니다. 테스트하여 답변에 포함시킬 수 있습니다. ats.ucla.edu/stat/sas/webbooks/reg/chapter5/…
tomka

@tomka : 정확히 내 마음에 들어 있습니다. 편차 코딩을 언급 한 귀하의 질문에 대한 원래 의견을 참조하십시오 :), 이것을 구현하고 나중에 답변을 업데이트하려고 시도합니다. (코딩을 위해 더미 변수를 수동으로 만들지 않고 R 에서이 작업을 수행하는 데 어려움이 있지만 그렇게하는 유일한 방법 인 것처럼 보입니다).
jujae

@tomka : 지연 죄송합니다, 편차 코드 부분을 업데이트
jujae

0

첫 번째 질문의 경우, 제 이해는 "공상"방법은 치료가 잠재적 인 결과와 독립적이라는 것이 명백하지 않은 경우에만 필요하다는 것입니다. 이 경우 데이터의 일부 측면 에서 치료에 대한 무작위 할당 의 근사치 를 허용 하여 도구 변수, 회귀 불연속 등을 얻을 수 있다고 주장해야 합니다.

귀하의 경우, 단위 치료에 무작위로 할당되므로 치료는 잠재적 결과와 무관 한 것으로 보입니다. 그런 다음 일을 단순하게 유지할 수 있습니다. 보통 최소 제곱으로 모형 1을 추정하면 ATE를 일관되게 추정 할 수 있습니다. 단위는 치료에 무작위로 할당되기 때문에 무작위 효과 가정이 믿을 수있는 몇 안되는 경우 중 하나입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.