群馬大学 | 医学部 | サイトトップ | 医学情報処理演習

医学情報処理演習:2010年度第14回課題解答例

課題

生存時間解析がこれまで説明した他の分析に比べ優れている点について考察せよ。


解答例

amlデータで,維持療法の有無によって再発までの時間が異なるかどうかを,先週までに説明した方法で分析しようとすると,どのやり方でもバイアスが大きいことがわかる。

もっとも単純に考えると,観察打ち切り例は再発していないことから,維持療法の有無と再発の有無のクロス集計をして,フィッシャーの直接確率を使うのはどうだろうかと思いつく。コードは次の通り。

library(survival)
fisher.test(xtabs(~x+status, data=aml))

しかし,すべての個体について観察時間が同じならそれでいいのだが,打ち切り例だけみても,異なる週数で観察打ち切りになった人が含まれているので,明らかに個人ごとに観察時間は異なっている。観察時間が短ければ再発はしにくくなるので,このクロス集計ではバイアスがかかってダメである。また,せっかく再発までの週数という情報があるのに(維持化学療法に再発予防効果があるなら,維持群の方が再発までの週数は長くなるであろうと考えられるのに),その情報を捨ててしまうのはもったいない。(カプラン=マイヤ法でもログランク検定でも,実は再発までの週数そのものではなく,週数の順序の情報しか使っていないけれども,)時間のデータを分析できるのは生存時間解析の特長の1つであり,再発の有無というカテゴリ情報しか使わない場合に比べ,通常,サンプルサイズが小さくても済む。

次に,打ち切り情報を無視して,維持療法の有無を示す2群間で週数の平均値の差のt検定をしたらどうだろうかと考えてみる。コードは次の通り。

library(survival)
t.test(time ~ x, data=aml)

しかし,打ち切りデータも,観察が打ち切られた時点までは再発していないことはわかっているが,それ以降いつまで再発しないかは不明である。13週で観察打ち切りになった人は,もしかすると100週まで再発しないかもしれない。従ってこのやり方は明らかに観察打ち切り事例の再発までの時間を過小評価することになって不都合である。

では,観察打ち切りになった人を分析から除いて,再発した人だけの再発までの週数を比べたらどうだろうか。コードは下記。

library(survival)
t.test(time ~ x, data=subset(aml,status==1))

しかし,観察打ち切りになった人の中には,転居などの他に,他の人に比べて長い間再発せずにいるので,再発イベントが研究期間内に観察されなかったという人も含まれる。つまり,観察打ち切りになるのは,相対的に長い間再発せずにいる人が多いので,その人たちをデータから除いてしまうと,平均的な再発までの時間を短く見積もり過ぎることになる。これでもバイアスがかかる。そこで,観察打ち切りになった人の情報を,イベント発生者と同等に扱うのでもなく,分析から除去するのでもなく,正当に分析できる方法が必要になる。生存時間解析の最大の特長は,観察打ち切りデータを正当に分析できる点にある。

質問・コメントへの回答

今回は回答を要する質問・コメントはありませんでした。


リンクと引用について