コメントで「モデル2からATEを取得する方法を知りたい」という質問に対処します。
まず、モデル2では、すべてのが識別可能ではないため、設計行列のランクが不足するという問題が発生します。たとえば、に対してと仮定すると、1つのレベルをドロップする必要があります。つまり、コントラストコーディングを使用し、期間1の治療効果が0であると想定します。Rでは、期間1の治療効果を参照レベルとして交互作用項をコード化します。これが、は、期間1の治療効果の解釈を持っています。SASでは、期間治療効果を参照レベルとしてコード化し、は期間治療効果を解釈しますγjγj=0j=1β~mβ~m、期間1ではなくなりました。
コントラストがRの方法で作成されると仮定すると、各相互作用項に対して推定された係数(これはで示しますが、モデルで定義したものではありません)は、期間間の治療効果の違いを解釈しますと期間1.各期間でのATEを示します、次に for。したがって、推定量はです。(遅延のため、真のパラメーターと推定器自体の表記の違いは無視します)そして当然のことながらγjjATEjγj=ATEj−ATE1j=2,…,mATEjβ~+γjATE=β=1m∑mj=1ATEj=β~+(β~+γ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^wT−−−−−√wV
偏差コーディング
にを直接解釈させる別の方法は、偏差コーディングを使用して、後で共変量が比較をすることです。β~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)
出力:
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