縦断的研究で平均治療効果を推定する最良の方法は何ですか?


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の主な理由は、分散の減少です。しかし、モデル2からATEを取得する方法については疑問です。最初のコメントはポインタのようです。これを示したり、詳しく説明したりできますか?それからこれは私の質問への答えに近いでしょう!
tomka

モデル2を適合させると、は期間1のATEの解釈を持ちます。識別可能性を考慮して、相互作用項の係数は、参照レベルとして期間1のATEでコード化されます。したがって、は実際には、ソフトウェア出力からの、期間での処理と期間1での処理の差です。したがって、各期間で、ATEですと平均期間固有のATEとき、それは壮大な平均がある、ATEにつながるモデル内の1β~γjjjβ~+γjβ
jujae

回答:


2

コメントで「モデル2からATEを取得する方法を知りたい」という質問に対処します。

まず、モデル2では、すべてのが識別可能ではないため、設計行列のランクが不足するという問題が発生します。たとえば、に対してと仮定すると、1つのレベルをドロップする必要があります。つまり、コントラストコーディングを使用し、期間1の治療効果が0であると想定します。Rでは、期間1の治療効果を参照レベルとして交互作用項をコード化します。これが、は、期間1の治療効果の解釈を持っています。SASでは、期間治療効果を参照レベルとしてコード化し、は期間治療効果を解釈しますγjγj=0j=1β~mβ~m、期間1ではなくなりました。

コントラストがRの方法で作成されると仮定すると、各相互作用項に対して推定された係数(これはで示しますが、モデルで定義したものではありません)は、期間間の治療効果の違いを解釈しますと期間1.各期間でのATEを示します、次に for。したがって、推定量はです。(遅延のため、真のパラメーターと推定器自体の表記の違いは無視します)そして当然のことながらγ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

良いですが、標準誤差の見積もりを取得するにはどうすればよいですか?そして、(あなたの)が直接ATE であるような方法で相互作用/周期効果のコーディングを使用することはできませんか?β~beta_t
tomka

@tomka、それは可能です。model2の相互作用項のコントラストマトリックスを直接変更する方法がわからないので、いくつかの調査を行い、後で戻ってきます。
jujae

あなたの答えを考えて、私はこれを見つけました。偏差コーディングは私がやりたいことをやっていると思います。テストして回答に含めることができます。ats.ucla.edu/stat/sas/webbooks/reg/chapter5/...
tomka

@tomka:まさに私の心の中にあります。偏差コーディングについて述べた質問への私の元のコメントを参照してください:)、これを実装して後で回答を更新します。(コーディングのためにダミー変数を手動で作成せずにRでそれを行うことでいくつかの問題がありますが、それがそうする唯一の方法であるように見えます)。
jujae

@tomka:遅れて申し訳ありません。偏差コードの部分を更新しました
jujae

0

最初の質問について、私の理解は、「ファンシー」な方法は、治療が潜在的な結果とは無関係であることがすぐに明らかでない場合にのみ必要であるということです。これらの場合、データの一部の側面により、処理のランダムな割り当ての近似が可能になることを主張する必要があります。これにより、計測変数、回帰の不連続性などが得られます。

あなたの場合、ユニット治療にランダムに割り当てられるので、治療は潜在的な結果とは無関係であると考えられます。そうすれば、物事を単純に保つことができます。通常の最小二乗でモデル1を推定すると、ATEの一貫した推定が得られます。単位は治療にランダムに割り当てられるため、これは変量効果の仮定が信頼できる数少ない事例の1つです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.