HIVの抗レトロウイルス療法、透析の開始時期、抗凝固薬の継続など、治療が途中で変更され、その判断が検査値に基づいて行われる研究があります。
このような構造では、検査値を通常の共変量として扱うだけでは、治療効果を適切に評価できないことがあります。共変量に入れると、それ以前の治療が検査値を介して及ぼした効果まで調整してしまう一方、入れなければ、検査値による時間依存性交絡が残ります。
時変共変量と因果推論で「専用の手法が要る」と書いた場面が、これにあたります。
調整しても調整しなくても外れる

L1を共変量に入れると、A1とアウトカムの間の交絡は調整できます。しかし同時に、A0がL1を経由してYに及ぼす効果も遮断されます。治療によって検査値が改善し、その改善を介して予後がよくなるのであれば、その経路まで調整してしまうことになります。
一方、L1を入れなければ、A1の交絡が残ります。検査値の悪い患者ほど治療を受ける状況では、治療を受けた患者の予後が悪いことを、治療そのものの効果と区別できません。結果として、実際には有効な治療が有害に見えることもあります。
6000例、5期間の架空データで確かめます。真の設定は、治療がその期のハザードを0.75倍にし、次の期の検査値も改善するというものです。反実仮想として全員を治療した場合と、全員を治療しなかった場合を計算すると、5期間後の生存割合は0.736と0.541で、その差は0.195でした。


ちなみに、検査値を入れずに解析すると、この設定ではハザード比が1.31になりました。治療が有害に見える結果です。検査値を無視することも、時間依存性交絡がある状況では適切な解決策になりません。
調整せずに重みで揃える
周辺構造モデルの基本的な発想は、検査値を通常の共変量としてアウトカムモデルに入れないことです。その代わりに、検査値によって治療の受けやすさが異なることを、重み付けによって調整します。
各時点で、その患者が実際に受けた治療を受ける確率を推定します。重みは、その治療を受ける確率の逆数を基本として作ります。これを時点ごとに掛け合わせ、治療歴全体に対する重みを作ります。
$$w_i(k) = \prod_{j=1}^{k} \frac{P(A_j = a_{ij} \mid \bar{A}_{j-1})}{P(A_j = a_{ij} \mid \bar{A}_{j-1}, \bar{L}_j)} \tag{1}$$
式(1)の分母は、過去の治療歴と検査値を考慮した実際の治療確率です。分子は検査値を含めない治療確率です。分子を置くことで重みのばらつきを抑え、安定させることができます。このため、式(1)は安定化重みと呼ばれます。分子を1とする重みでも推定の一致性は得られますが、極端な値が生じやすくなります。
この重み付けによって、検査値と治療選択の関係を調整した仮想的な集団を作ります。そこで治療群と非治療群の背景を揃えることで、検査値をアウトカムモデルに直接入れなくても交絡を調整できます。重要なのは、検査値をアウトカムモデルから外すことで、治療が検査値を介して及ぼす効果まで遮断しないことです。
den <- glm(A ~ L + Aprev, family = binomial, data = d) # 検査値を含む
num <- glm(A ~ Aprev, family = binomial, data = d) # 含まない
d$w <- ifelse(d$A == 1, fitted(num)/fitted(den),
(1-fitted(num))/(1-fitted(den)))
d$sw <- ave(d$w, d$id, FUN = cumprod) # 時点をまたいで累積
coxph(Surv(start, stop, event) ~ A + cluster(id), data = d, weights = sw)
ここでもcluster(id)が要ります。重み付けした解析では、通常の分散推定では不確実性を十分に捉えられないことがあるため、ロバスト分散を使います。多施設データで扱った処理と同じ考え方です。
推定するのは治療戦略の効果
周辺構造モデルが答えるのは、個々の時点における治療の効果ではなく、あらかじめ定めた治療戦略の効果です。たとえば、「5期間にわたって治療を続ける方針」と「5期間にわたって治療しない方針」を比較する形になります。
この違いは、結果の報告方法にも表れます。ハザード比を1つ示すだけでなく、図2のように治療戦略ごとの生存曲線を示すほうが、何を比較しているのかが伝わりやすくなります。「常に治療した場合の5期間後の生存割合」と「治療しなかった場合の生存割合」を並べれば、臨床的な意味も理解しやすくなります。
実際の患者は、どちらか一方の治療戦略に完全に従っているわけではありません。ある時期には治療を受け、別の時期には治療を受けないことがあります。重み付けでは、こうした実際の治療経過を利用して、仮想的な治療戦略のもとでの結果を推定します。
データをどう並べるか
解析には、時点ごとに1行を持つロング形式のデータが必要です。1人の患者が5時点まで観察されていれば、基本的には5行になります。各行に、その時点の治療、その時点までの検査値、直前の治療、そしてその区間でイベントが起きたかどうかを持たせます。
時点の刻み方は解析者が決めます。月ごと、3か月ごと、あるいは受診のたびという設定が考えられます。細かくすれば治療の変更を捉えやすくなりますが、データの行数が増え、重みの累積によって分散も大きくなりやすくなります。粗くすると、区間内の治療変更を十分に反映できなくなります。
実務では、治療方針が見直される間隔に合わせるのが自然です。3か月ごとに外来で判断しているなら3か月刻み、入院中の日々の判断が対象なら日単位、といった考え方です。刻み方を変えたときに結果がどの程度変化するかを感度分析で確認することも有用です。
データの時間的な順序も重要です。各区間では、まず検査値が観測され、それをもとに治療が決まり、その後にイベントが起きるという順序を保つ必要があります。この順序が崩れると、治療の後に測定された検査値を使って治療確率を推定してしまいます。データ抽出の段階で日付を保持しておかないと、後からこの順序を正確に復元できないことがあります。
打ち切りの重みも掛ける
治療の重みだけでは十分でない場合があります。たとえば、脱落が患者の予後や治療状況と関連している場合です。
治療を続けている患者ほど通院が続き、治療を中止した患者ほど追跡から離脱するような構造があると、治療の重みで交絡を調整しても、打ち切りによる偏りが残ります。
この場合は、打ち切りについても同じ考え方で重みを作ります。各時点で追跡が継続する確率を共変量から推定し、その逆数を治療の重みに掛けます。治療の重みと打ち切りの重みの積が、最終的な重みになります。
この処理を加えると、重みの分散はさらに大きくなる可能性があります。治療の重みだけで最大54.8だったものが、打ち切りの重みを掛けると3桁に届くこともあります。重みの分布を確認することがいっそう重要になり、必要に応じて切り詰めの扱いも検討します。
重みが暴れる
この例では重みの平均が0.99、最大が54.8でした。これは、1人の患者が約54人分の重みを持っていることを意味します。
重みが大きくなるのは、その患者が実際に受けた治療が、それまでの検査値などから考えると起こりにくかった場合です。たとえば、検査値が非常に悪いのに治療を受けなかった、あるいはその逆といったケースです。こうした患者は、重み付けされた集団の中で大きな比重を持つことになります。
推定が少数の患者に強く依存すると、結果が不安定になります。わずかなデータの違いによって推定値が大きく変わる可能性があるためです。
確認すべき点は明確で、まず重みの平均を確認します。安定化重みであれば、平均は概ね1に近いことが期待され、大きく外れていれば治療モデルの設定を疑います。最大値や分布も確認します。上位1%を切り詰めるなどの処理が使われることもありますが、切り詰めによって偏りが入る可能性があるため、切り詰めた場合と切り詰めない場合の結果を比較しておくことが重要です。
時点が増えるほど重みは累積されるため、分散が大きくなりやすくなります。10時点、20時点と追跡を続けると、極端な重みを持つ患者が増え、実質的に情報を担っている患者が限られることもあります。時点を適切にまとめる、治療の定義を単純化するといった対応が必要になる場合があります。
正値性が崩れていないか
各時点で、同じような検査値や治療歴を持つ患者の中に、治療を受ける人と受けない人の両方が存在する必要があります。検査値がある閾値を超えたら必ず治療するという診療規範があると、この条件が崩れます。
この条件が崩れている領域では、治療群と非治療群を比較するための情報がありません。重みが極端に大きくなるのは、その兆候の一つで、治療確率の推定値の分布を確認し、0や1に近い値がどの程度存在するかを調べます。
診療ガイドラインが確立している領域では、この問題が起こりやすくなります。たとえば、「Hb 7未満なら輸血する」という判断がほぼ徹底されていれば、Hb 6の患者で輸血しなかった人はほとんどいません。この場合、その領域で輸血の効果をデータから推定することは困難です。重なりのある範囲に対象を限定するか、その領域では効果を推定できないことを明記する必要があります。
私が相談を受けたときは、まず治療がどのように決まっているかを確認します。登録時に治療を決め、その後変更しないのであれば、この枠組みは基本的には必要ありません。検査値を見て、その都度治療を変更しているのであれば、時間依存性交絡を疑います。その中間、たとえば有害事象が出たときだけ治療を変更するような運用では、変更の頻度や判断基準によって必要な解析方法が変わります。
報告の仕方
まず、治療モデルに入れた変数を明記します。各時点で何を使って治療確率を推定したのか、時間依存の変数と時点によらない変数を分けて記述します。
次に、重みの要約を示します。平均、標準偏差、最小値、最大値、上位パーセンタイルなどを示し、安定化の有無や、切り詰めを行った場合にはその閾値も記載します。これらが示されていないと、読者は重み付けによる推定がどの程度安定しているのかを判断できません。
推定対象も明確にします。どの治療戦略とどの治療戦略を比較したのかを記載します。「常に治療」と「一度も治療しない」以外にも、「検査値が一定の閾値を超えたら治療する」といった動的な治療戦略を定義できますが、その場合には戦略を具体的に定義する必要があります。
そして、標準的な解析の結果も併記します。図3のように結果に大きな差が出るのであれば、周辺構造モデルを用いた理由が明確になります。一方、両者にほとんど差がなければ、このデータでは時間依存性交絡による影響が大きくなかった可能性があります。
次に確かめること
時変共変量の基本的な扱いは時変共変量、重み付けによる因果効果の推定は因果推論と傾向スコアマッチングで扱いました。
脱落が予後と関連する場合の重み付けは情報的打ち切りにあり、治療の重みと打ち切りの重みを組み合わせて使う考え方もここにつながります。
検査値の閾値によって治療を決めるような動的な治療戦略の評価については、稿を改めて扱います。また、比較したい試験の姿を先に書き出してからデータを開く枠組みは、ターゲット試験エミュレーションで扱っています。
時間依存性交絡が存在するか、周辺構造モデルまで踏み込む必要があるかは、治療が実際にどのように決定されているかと、データをどの粒度で取得できるかによって決まります。Dr.データサイエンスでは、こうした解析設計のご相談を承っています。
参考文献
Robins JM, Hernan MA, Brumback B. Marginal structural models and causal inference in epidemiology. Epidemiology. 2000;11(5):550-560.
Hernan MA, Brumback B, Robins JM. Marginal structural models to estimate the causal effect of zidovudine on the survival of HIV-positive men. Epidemiology. 2000;11(5):561-570.
Cole SR, Hernan MA. Constructing inverse probability weights for marginal structural models. American Journal of Epidemiology. 2008;168(6):656-664.
Daniel RM, Cousens SN, De Stavola BL, Kenward MG, Sterne JA. Methods for dealing with time-dependent confounding. Statistics in Medicine. 2013;32(9):1584-1618.
Hernan MA, Robins JM. Causal Inference: What If. Chapman and Hall/CRC; 2020.


