Trả lời câu hỏi của bạn "Tôi tự hỏi làm thế nào để đưa ATE ra khỏi mô hình 2" trong các bình luận:
Trước hết, trong mô hình 2 của bạn, không phải tất cả đều có thể nhận dạng được dẫn đến vấn đề thiếu thứ hạng trong ma trận thiết kế. Cần phải giảm một cấp, ví dụ giả sử cho . Nghĩa là, sử dụng mã hóa tương phản và giả sử hiệu quả xử lý ở giai đoạn 1 là 0. Trong R, nó sẽ mã hóa thuật ngữ tương tác với hiệu quả điều trị ở giai đoạn 1 làm mức tham chiếu và đó cũng là lý do tại sao có giải thích về hiệu quả điều trị ở giai đoạn 1. Trong SAS, nó sẽ mã hóa hiệu quả điều trị ở giai đoạn là mức tham chiếu, sau đó có giải thích về hiệu quả điều trị ở giai đoạnγ j = 0 j = 1 ˜ β m ˜ β mγjγj= 0j = 1β~mβ~m, không phải kỳ 1 nữa.
Giả sử độ tương phản được tạo theo cách R, thì các hệ số ước tính cho mỗi thuật ngữ tương tác (tôi vẫn sẽ biểu thị điều này bằng , mặc dù đó không phải là chính xác những gì bạn xác định trong mô hình của mình) có sự giải thích về sự khác biệt hiệu quả điều trị giữa các khoảng thời gian và khoảng thời gian 1. Suy ra ATE ở mỗi thời kỳ , sau đó cho . Do đó, công cụ ước tính cho là . (bỏ qua sự khác biệt ký hiệu giữa tham số thực và chính công cụ ước tính vì sự lười biếng) Và tự nhiênγjjATEjγj=ATEj−ATE1j=2,…,mATEjβ~+γjATE=β=1m∑mj=1ATEj=β~+(β~+γ2)+⋯+(β~+γm)m=β~+1m(γ2+⋯+γm) .
Tôi đã thực hiện một mô phỏng đơn giản trong R để xác minh điều này:
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)
Và kết quả xác minh điều này:
ATE.m1 ATE.m2
3.549213 3.549213
Tôi không biết cách thay đổi trực tiếp mã hóa tương phản trong mô hình 2 ở trên, để minh họa cách người ta có thể sử dụng trực tiếp hàm tuyến tính của các thuật ngữ tương tác, cũng như cách nhận được lỗi tiêu chuẩn, tôi đã sử dụng gói 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)
Và đây là đầu ra:
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)
Tôi nghĩ rằng lỗi tiêu chuẩn có được bởi với là dạng kết hợp tuyến tính ở trên và là ma trận phương sai hiệp phương sai ước tính của các hệ số từ mô hình 3. wVwV^wT−−−−−√wV
Mã hóa sai lệch
Một cách khác để làm cho có cách giải thích trực tiếp là sử dụng mã hóa sai lệch , để sau đó các hiệp phương sai đại diện cho so sánh: 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)
Đầu ra:
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