วิธีที่ดีที่สุดในการประเมินผลการรักษาโดยเฉลี่ยในการศึกษาระยะยาวคืออะไร?


9

ในการศึกษาระยะยาวผลลัพธ์ของหน่วยที่ถูกวัดซ้ำ ๆ ณ จุดเวลาโดยมีโอกาสในการวัดคงที่ทั้งหมด (คงที่ = วัดที่หน่วยในเวลาเดียวกัน)Yผมเสื้อผมเสื้อม.

หน่วยที่ได้รับมอบหมายสุ่มทั้งการรักษา,หรือกลุ่มควบคุม, 0 ฉันต้องการประเมินและทดสอบผลการรักษาโดยเฉลี่ยเช่นที่ความคาดหวังนั้นเกิดขึ้นข้ามเวลาและส่วนบุคคล ฉันพิจารณาใช้แบบจำลองหลายระดับ (เอฟเฟกต์ผสม) ในโอกาสคงที่เพื่อวัตถุประสงค์นี้G=1G=0

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

Yผมเสื้อ=α+βGผม+ยู0ผม+อีผมเสื้อ

ด้วย the intercept the ,จะถูกสกัดกั้นแบบสุ่มทั่วทั้งหน่วยและส่วนที่เหลือαβATEยูอี

ตอนนี้ฉันกำลังพิจารณารูปแบบทางเลือก

Yผมเสื้อ=β~Gผม+ΣJ=1ม.κJdผมJ+ΣJ=1ม.γJdผมJGผม+ยู~0ผม+อี~ผมเสื้อ

ซึ่งมีเอฟเฟกต์คงที่สำหรับแต่ละโอกาสโดยที่ dummyถ้าและอื่น นอกจากนี้ในรุ่นนี้มีการปฏิสัมพันธ์ระหว่างการรักษาและเวลาที่มีพารามิเตอร์\ดังนั้นโมเดลนี้คำนึงถึงผลกระทบของอาจแตกต่างกันตามเวลา นี่เป็นข้อมูลในตัวมันเอง แต่ฉันเชื่อว่ามันควรเพิ่มความแม่นยำในการประมาณค่าพารามิเตอร์ด้วยเนื่องจากความต่างกันในนั้นถูกนำมาพิจารณาκJเสื้อdเสื้อ=1J=เสื้อ0γGY

อย่างไรก็ตามในโมเดลนี้สัมประสิทธิ์ไม่ได้ดูเหมือนที่เท่ากันอีกต่อไป แต่จะแทน ATE ในโอกาสแรก ( ) ดังนั้นการประมาณอาจมีประสิทธิภาพมากกว่าแต่ไม่ได้เป็นตัวแทนของอีกต่อไปβ~ATEเสื้อ=1β~βATE

คำถามของฉันคือ :

  • วิธีที่ดีที่สุดในการประเมินผลการรักษาในการออกแบบการศึกษาระยะยาวนี้คืออะไร?
  • ฉันต้องใช้รุ่น 1 หรือมีวิธีใช้ (อาจมีประสิทธิภาพมากกว่า) รุ่น 2 หรือไม่
  • มีวิธีที่จะให้มีการตีความของและเฉพาะส่วนเบี่ยงเบนโอกาส (เช่นการใช้การเข้ารหัสผล)?β~ATEγ

ในรุ่น 2 ATE ไม่เท่ากับบวกค่าเฉลี่ยของหรือไม่ β~γJ
jujae

หากจุดประสงค์ของคุณประเมิน ATE เพียงอย่างเดียวโมเดล 1 จะพอเพียงเพราะมันจะไม่เอนเอียง การเพิ่มระยะเวลาหรือการโต้ตอบในโมเดลจะช่วยลดความแปรปรวนของการประมาณที่คุณเชื่อ และฉันคิดว่าคุณอาจต้องการลองใช้รหัสเป็นรหัสเบี่ยงเบน (ส่วนเบี่ยงเบนจากค่าเฉลี่ย) หรือไม่ γ
jujae

@jujae เหตุผลหลักสำหรับรุ่น 2 คือการลดความแปรปรวนใช่ แต่ฉันสงสัยว่าจะเอา ATE ออกจากโมเดล 2 ได้อย่างไรความคิดเห็นแรกของคุณน่าจะเป็นตัวชี้ คุณสามารถแสดงสิ่งนี้หรืออธิบายอย่างละเอียดได้ไหม? แล้วนี่จะเป็นคำตอบสำหรับคำถามของฉัน!
tomka

เมื่อคุณพอดีกับรุ่น 2 β~มีการแปลความหมายของ ATE ในช่วงเวลา 1 ค่าสัมประสิทธิ์ของคำศัพท์สำหรับการพิจารณาความเป็นตัวตนจะถูกเข้ารหัสด้วย ATE ณ วันที่ 1 เป็นระดับอ้างอิง ดังนั้นγJ ที่จริงแล้วความแตกต่างระหว่างการรักษาในช่วงเวลานั้น Jและการรักษา ณ วันที่ 1 จากการส่งออกซอฟต์แวร์ ดังนั้นในแต่ละช่วงเวลาJATE คือ β~+γJ และเมื่อเฉลี่ย ATE เฉพาะช่วงเวลามันจะนำไปสู่ ​​ATE เฉลี่ยที่ยิ่งใหญ่ซึ่งก็คือ βในแบบจำลองของคุณ 1.
jujae

คำตอบ:


2

ตอบคำถามของคุณ "ฉันสงสัยว่าจะได้รับ ATE จากรุ่น 2" ในความคิดเห็น:

ประการแรกในแบบจำลองของคุณ 2 ไม่ใช่ทั้งหมด γJสามารถระบุได้ซึ่งนำไปสู่ปัญหาการขาดอันดับในเมทริกซ์การออกแบบ มีความจำเป็นต้องลดระดับหนึ่งเช่นสมมติว่าγJ=0 สำหรับ J=1. นั่นคือการใช้การเข้ารหัสความคมชัดและถือว่าผลการรักษาในระยะที่ 1 คือ 0 ใน R มันจะเขียนโค้ดคำศัพท์การโต้ตอบกับผลการรักษาที่ระยะ 1 เป็นระดับอ้างอิงและนั่นก็เป็นเหตุผลว่าทำไมβ~ มีการตีความผลการรักษาในระยะที่ 1 ใน SAS มันจะใช้รหัสผลการรักษาในช่วงเวลา ม. เป็นระดับอ้างอิงแล้ว β~ มีการตีความผลการรักษาในช่วงเวลา ม.ไม่ใช่ระยะเวลา 1 อีกต่อไป

สมมติว่าความแตกต่างถูกสร้างขึ้นในวิธี R จากนั้นค่าสัมประสิทธิ์ที่ประมาณไว้สำหรับแต่ละคำการโต้ตอบ (ฉันจะยังคงแสดงสิ่งนี้โดย γJแม้ว่ามันจะไม่ได้เป็นสิ่งที่คุณกำหนดไว้ในแบบจำลองของคุณ) มีการตีความผลการรักษาที่แตกต่างระหว่างช่วงเวลา J และช่วงเวลา 1. แสดง ATE ในแต่ละช่วงเวลา ATEJจากนั้น γJ=ATEJ-ATE1 สำหรับ J=2,...,ม.. ดังนั้นตัวประมาณสำหรับATEJ คือ β~+γJ. (ไม่สนใจความแตกต่างของสัญกรณ์ระหว่างพารามิเตอร์ที่แท้จริงและตัวประมาณเพราะความเกียจคร้าน) และตามธรรมชาติของคุณATE=β=1ม.ΣJ=1ม.ATEJ=β~+(β~+γ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)

ฉันคิดว่าข้อผิดพลาดมาตรฐานนั้นได้มาจาก WV^WT กับ W เป็นรูปแบบการผสมเชิงเส้นข้างต้นและ V การประมาณค่าความแปรปรวนร่วม - ความแปรปรวนร่วมของสัมประสิทธิ์จากแบบจำลอง 3

ส่วนเบี่ยงเบนการเข้ารหัส

อีกวิธีในการทำ β~ มีการตีความโดยตรงของ ATEคือการใช้การเข้ารหัสเบี่ยงเบนเพื่อเป็นตัวแทนของ covariates ในภายหลังATEJ-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

ดี - แต่จะได้รับการประมาณการข้อผิดพลาดมาตรฐานได้อย่างไร และไม่ควรที่จะใช้การเข้ารหัสของเอฟเฟกต์การโต้ตอบ / ช่วงเวลาในแบบที่β~(ของคุณbeta_t) ATE โดยตรง (จากนั้นด้วยการประมาณ SE)
tomka

@ Tomka, เป็นไปได้, ฉันไม่รู้ว่าจะเปลี่ยนเมทริกซ์ความคมชัดของคำศัพท์ปฏิสัมพันธ์ใน model2 โดยตรงได้อย่างไร, จะทำการวิจัยและกลับมาใหม่ในภายหลัง
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.