MENU

R で競合リスク分析 Gray 検定を行う方法

競合リスクとは何か?

Gray 検定の実行方法

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

競合リスクとは?

再発がエンドポイントであったが、再発する前に死亡してしまったので、観察できなかった。

脳梗塞の発現がエンドポイントだったが、先に肺炎でお亡くなりになり、観察できなかった。

このように、再発をエンドポイントにした場合の再発前の死亡、あるいは、脳梗塞の発生をエンドポイントにした場合のその他の原因による死亡、こんなふうなイベントが発生するリスクを競合リスクと呼ぶ。

生存時間解析において、競合リスクがある場合、どのように解析すればよいか?

競合リスク分析のサンプルデータの準備

競合リスクがある場合、生存確率が下がっていくカプランマイヤー曲線の代わりに、累積的にイベントが発現していく様を累積発現グラフに描く。

統計ソフトRの riskRegression パッケージの Melanoma データを用いる。

パッケージはcmprsk と riskRegression を事前にインストールしておく。

library(cmprsk)
library(riskRegression)
library(survival)
head(Melanoma)

Melanoma データのうち、以下の 3 つの変数を主に使う。

  1. イベントまでの時間変数 time
  2. 状態の変数 status (0が単なる研究終了の打ち切り、1がメラノーマによる死亡(研究したいエンドポイント)、2がメラノーマ以外による死亡(競合リスク))
  3. 浸潤 invasion (レベル0,1,2で、2が重症)
> head(Melanoma)
time status                    event invasion ici      epicel       ulcer thick
1   10      2       death.other.causes  level.1   2     present     present  6.76
2   30      2       death.other.causes  level.0   0 not present not present  0.65
3   35      0                 censored  level.1   2 not present not present  1.34
4   99      2       death.other.causes  level.0   2 not present not present  2.90
5  185      1 death.malignant.melanoma  level.2   2     present     present 12.08
6  204      1 death.malignant.melanoma  level.2   2 not present     present  4.84
sex age   logthick
1   Male  76  1.9110229
2   Male  56 -0.4307829
3   Male  41  0.2926696
4 Female  71  1.0647107
5   Male  52  2.4915512
6   Male  28  1.5769147

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

競合リスクの累積発現曲線を描いてみる

エンドポイント(status==1)と競合リスク(status==2)の累積発現曲線(Cumulative Incidence Curve)を描いてみる。

Surv()とsurvfit()の組み合わせでfun=”event”を使って簡易的に描くことはできるが、cmprsk パッケージのcuminc()を使うほうが適切。

cuminc()をより使いやすくしたCumIncidence()もある。

survfit0.1 <- survfit(Surv(time,status==1)~1,
data=Melanoma)
survfit0.2 <- survfit(Surv(time,status==2)~1,
data=Melanoma)
layout(matrix(1:4,nr=2))
plot(survfit0.1, fun="event", conf.int=FALSE)
plot(survfit0.2, fun="event", conf.int=FALSE, col=2)
cuminc0 <- cuminc(ftime=Melanoma$time,
fstatus=Melanoma$status)
plot(cuminc0)
source("http://www.stat.unipg.it/luca/misc/CumIncidence.R")
CumIncidence(ftime=Melanoma$time, fstatus=Melanoma$status)

左側の上下2つがSurv()とsurvfit()を使ったグラフ。

右上がcuminc()のデフォルトグラフ。右下がCumIncidence()のグラフ。

cuminc()は、statusの2つがline types (lty)で描き分けられている。

一方でCumIncidence()のグラフは、statusが黒と赤で塗り分けられている。

競合リスクの要因別累積発現

次に、invasionの3レベル別の累積発現と検定の結果。

累積発現グラフは、以下のスクリプトで書ける。

survfit1.1 <- survfit(Surv(time,status==1)~invasion,
data=Melanoma)
survfit1.2 <- survfit(Surv(time,status==2)~invasion,
data=Melanoma)
layout(matrix(1:4,nr=2))
plot(survfit1.1, fun="event", conf.int=FALSE, lty=1:3)
plot(survfit1.2, fun="event", conf.int=FALSE, lty=1:3,col=2)
cuminc1 <- cuminc(ftime=Melanoma$time,
fstatus=Melanoma$status, group=Melanoma$invasion)
plot(cuminc1)
(CumInc1 <- CumIncidence(ftime=Melanoma$time,
fstatus=Melanoma$status, group=Melanoma$invasion))

左の上下二つはSurv()とsurvfit()で描いたグラフ。

invasionの3レベルltyで描き分けている。

右上はcuminc()で描いたCumulative Incidenceのグラフ。

statusが2つとinvasionが3レベルの合計6本がltyで描き分けられている。

右下はCumIncidence()で描かれたもの。statusが黒と赤で分けられていて、それぞれltyでinvasionのレベルがわかるようになっている。

CumIncidence()が一番見やすい。

競合リスクの Gray 検定(ログランク検定との比較)

survdiff()の結果とcuminc()の結果を比べてみる。

survdiff1.1 <- survdiff(Surv(time,status==1)~invasion,
data=Melanoma)
survdiff1.2 <- survdiff(Surv(time,status==2)~invasion,
data=Melanoma)
survdiff1.1
survdiff1.2
cuminc1
CumInc1

以下の 4 つの出力の塊のうち、上二つがsurvdiff()の結果、つまりログランク検定の結果である。

エンドポイント(status==1)と競合リスク(status==2)を別々に解析している。

下の二つ cuminc1 及び CumInc1はともに同じ結果でこちらは Gray 検定の結果。

> survdiff1.1
Call:
survdiff(formula = Surv(time, status == 1) ~ invasion, data = Melanoma)
Chisq= 18.8  on 2 degrees of freedom, p= 8e-05
> survdiff1.2
Call:
survdiff(formula = Surv(time, status == 2) ~ invasion, data = Melanoma)
Chisq= 0.5  on 2 degrees of freedom, p= 0.8
> cuminc1
Tests:
stat           pv df
1 17.9441643 0.0001269037  2
2  0.8846449 0.6425424207  2
> CumInc1
$test
Statistic df   p-value
1 17.9441643  2 0.0001269
2  0.8846449  2 0.6425424

Gray 検定のほうが、エンドポイントの有意確率が若干高い程度でほとんど同じであったが、理屈の上では、Gray 検定を行うのが望ましい。

まとめ

エンドポイントを観察したくても、その前に観察できなくなる事象が起きることがあり、そういう事象を競合リスクと呼ぶ。

競合リスクを加味した累積発現でグラフを描き、グループ間の差を見る場合は Gray 検定を行う。

統計ソフトRの場合、survival パッケージに加え、cmprsk パッケージのインストールが必要となる。

解説動画:EZR で Gray 検定を行う方法

EZR公式マニュアル

EZRでやさしく学ぶ統計学 改訂3版 〜EBMの実践から臨床研究まで〜
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (2件)

コメントする

目次