Mixed-Model

在縱向研究中估計平均治療效果的最佳方法是什麼?

  • February 10, 2017

在一項縱向研究中,結果單位在時間點重複測量共有固定測量場合(固定 = 對單位進行測量同時進行)。

單位被隨機分配到治療中,,或對照組,. 我想估計和測試治療的平均效果,即

跨越時間和個人的期望。為此,我考慮使用固定場合多級(混合效果)模型:

和攔截,這,跨單位的隨機截距,以及殘差。

現在我正在考慮替代模型

其中包含固定效果每個場合假人在哪裡如果和別的。此外,該模型包含治療和時間與參數之間的相互作用. 所以這個模型考慮到了可能因時間而異。這本身就提供了豐富的信息,但我相信它也應該提高參數估計的精度,因為被考慮在內。

然而,在這個模型中係數似乎不等於了。相反,它在第一次代表 ATE ()。所以估計可能比但這並不代表了。

我的問題是

  • 在這個縱向研究設計中估計治療效果的最佳方法是什麼?
  • 我必須使用模型 1 還是有辦法使用(可能更有效)模型 2?
  • 有沒有辦法有解釋和特定場合的偏差(例如使用效果編碼)?

在評論中解決您的問題“我想知道如何將 ATE 從模型 2 中取出”:

首先,在您的模型 2 中,並非全部是可識別的,這導致設計矩陣中的秩不足問題。有必要降低一級,例如假設為了. 即使用對比編碼,假設第1期的治療效果為0。在R中,將第1期治療效果的交互項編碼為參考水平,這也是為什麼具有時期1的治療效果的解釋。在SAS中,它將編碼時期的治療效果作為參考電平,則有期治療效果的解釋,不再是第 1 期。

假設對比度是以 R 方式創建的,那麼為每個交互項估計的係數(我仍然將其表示為,儘管它不完全是您在模型中定義的內容)解釋了時間段之間的治療效果差異和時間段 1. 表示每個時間段的 ATE, 然後為了. 因此,估計器為是. (忽略真實參數和估計器本身之間的符號差異,因為懶惰)自然而然你的.

我在 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 中係數的估計方差 - 協方差矩陣。

偏差編碼

另一種製作方法直接解釋就是使用偏差編碼,這樣後面的協變量就代表比較:

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

引用自:https://stats.stackexchange.com/questions/261112

comments powered by Disqus