63
ににににににににににに 11 にににに @doradora09

Survival analysis0702

Embed Size (px)

DESCRIPTION

Survival analysis

Citation preview

Page 1: Survival analysis0702

Rによるデータサイエンス第11章生存分析@doradora09

Page 2: Survival analysis0702

outline自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 3: Survival analysis0702

outline自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 4: Survival analysis0702

自己紹介

名前:大城信晃 職業:Webエンジニア(バックエンド) Twitter: akiaki5516 ( doradora09 ) TokyoRでは懇親会の運営 趣味:最近カクテル作り始めました

Page 5: Survival analysis0702

カクテルソルティドッグ

Page 6: Survival analysis0702

カクテルソルティドッグ

ジョンコリンズ

Page 7: Survival analysis0702

カクテルソルティドッグ

ジョンコリンズ

ミュータントタートル

Page 8: Survival analysis0702

【速報】BARドラドラがOpenしました!

30種類以上のお酒であなたをおもてなし皆様のご来店お待ちしています!

Page 9: Survival analysis0702

では本題へ

Page 10: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 11: Survival analysis0702

テキスト紹介毎回恒例のテキスト枠Rによるデータサイエンス

http://bit.ly/jgtnBD

第11章 生存分析 pp183 – 199

Page 12: Survival analysis0702

テキストの無い方は HTML版

Web上で公開されています http://www1.doshisha.ac.jp/~mjin/R/36/36.html

Page 13: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 14: Survival analysis0702

本スライドの目的生存分析とは何かわかるようになる生存分析のグラフが読めるようになるRを使って生存分析のグラフが作成できる

※数式はわからない時間の都合上省略しているので、気になる方はテキストの方を参考にしてください。

Page 15: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 16: Survival analysis0702

基本概念生存時間分析とは

生存時間分析とは、イベントが起きるまでの時間とイベントの間の関係に焦点を当てる分析方法イベント:死亡、故障、解約、倒産、破壊など

分析例新薬の効果を分析機械システムや製品の故障LTV(顧客収益価値)の分析

例:プリペイド携帯電話の顧客がいつ離れるか

Page 17: Survival analysis0702

例:新薬の効果を分析 6-MPという薬を投与した場合とそうでない場合の白血病患者の生存時間のグラフ 縦軸が生存率 横軸が時間 新薬を投与した方が生存確率が高い

Page 18: Survival analysis0702

例:プリペイド携帯電話の顧客がいつ離れるか プリペイド携帯電話の解約と時間の関係 施策前と施策後の変化を比較する

引用:顧客収益価値の測定方法

施策後は生存確率が上がった( =解約率が減った)

Page 19: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 20: Survival analysis0702

用語説明死亡

故障、破壊、倒産、死亡などのイベントの生起のことを広義の死亡と呼ぶことにする打ち切り

治療の中止や転院により試験・観察の途中で脱落する場合がある。このような場合を打ち切りが生じたという。 必ずしも最後まで観察データを取れるわけではない

( ・・あまり縁起のよくない用語が多い )

Page 21: Survival analysis0702

打ち切りを含むデータ縦軸が被験者番号、横軸が生存時間を表す ×:死亡のケース △:打ち切り1は研究の途中で何らかの理由で観察が継続できなかったケース ○:打ち切り2は研究終了まで生存していたケース

Page 22: Survival analysis0702

生存関数とハザード関数 生存関数S (t)

累積確率分布関数 F(t) で表すと、イベントがある時点tまで生起していない生存関数S (t) は

   S(t) = Pr(T > t) = 1 - Pr(t T) = 1 – F(t)≦ で表される。

ハザード関数 イベントがある時点 t までに生起していないという条

件の下で、次の瞬間にイベントが生起する瞬間死亡率

危険度とも呼ばれている。 生存関数とハザード関数は、どちらか片方が分

かればもう片方も分かる関係。( 数式の詳細は p185 参照 )

Page 23: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 24: Survival analysis0702

生存時間分析の分類生存時間に影響を与える時間以外の共変量(複数の要因、説明変数)が

パラメータとして作成するモデルに導入されているか否か生存時間の分布系に特定の確率分布を仮定するか否か によって次の3種類に分類できる

Page 25: Survival analysis0702

生存時間分析の分類共変量の導入 分布の仮定

ノンパラメトリックモデル × ×

セミノンパラメトリックモデル

○ ×パラメトリックモデル ○ ○

Page 26: Survival analysis0702

補足:パラメトリックとノンパラメトリック パラメトリックな手法

母集団の特性を規定する母数についてある仮説を設けるもので,平均値の差の検定( t 検定と略称されることが多い)や分散分析( F 検定と略称されることがある)などがこれに該当する。これらの検定手法では,母集団の正規性や等分散性が仮定される。 ノンパラメトリックな手法

母集団の分布型(母数)について一切の仮定を設けない。 このため,分布によらない手法 と呼ばれることもある。 特に,標本サイズが小さい場合には,それから求められた統計量の分布型は不正確なことが多く,パラメトリックな手法を適用することは不適切になりやすい。 しかし,ノンパラメトリックな手法は常に適用可能である。

Page 27: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 28: Survival analysis0702

ノンパラメトリックモデル 確率分布を仮定せずに生存時間を推定する方法 特徴

共変量を導入しない分布の仮定をしない

推定法 経験分布による推定法

カプラン - マイヤー推定法が有名 ハザード関数による推定法

ネルソン -アーラン推定量 フレミング - ハリントン推定量

Page 29: Survival analysis0702

Rを使って生存解析 生存分析パッケージ survival を利用する

データは MASS パッケージの gehan データを用いる

白血病患者に対する薬の効果を調べるために被験者42名に対して行った臨床試験データ

解析には Surv 関数と survfit 関数を用いる

Page 30: Survival analysis0702

gehanデータの中身 library(survival);library(MASS); data(gehan);dim(gehan);[1] 42 4

gehan[1:6,] pair time cens treat   1 1 1 1 control   2 1 10 1 6-MP   3 2 22 1 control   4 2 7 1 6-MP   5 3 3 1 control   6 3 32 0 6-MP

pair :投薬と比較対象のペア time:生存時間 cens:打ち切りか否か (1が打ち切り ) treat:6-PM( 抑癌薬 )の投与か否か

Page 31: Survival analysis0702

解析: Surv, survfit 関数 Surv(time, event)

time: 生存時間 event: イベント

survfit(formula, data, type=“ “, …) formula : Surv オブジェクト形式の目的変数と説明変数をセットす

る data : 解析対象のデータ type : 推定方法。デフォルトはカプラン - マイヤー推定法。他に

フレミング - ハリントン推定法、 fh2 推定法がある

メモ: R からヘルプを出す場合はパッケージ名も指定する ?survival::Surv ?survival::survfit

Page 32: Survival analysis0702

解析結果 ge.sf <- survfit(Surv(time,cens)~treat, data=gehan); ge.sf;Call: survfit(formula = Surv(time, cens) ~ treat, data =gehan)

records n.max n.start events median 0.95LCL 0.95UCLtreat=6-MP 21 21 21 9 23 16 NAtreat=control 21 21 21 21 8 4 12

records: 対照郡 , n.max: レコード数 n.start: 開始時の数 , median: 中央値 0.95LCL,0.95UCL : 95% 信頼区間の上下限値

6-MP を投与したグループは生存期間の中央値が 23 と大幅に増えている

Page 33: Survival analysis0702

summary(ge.sf)

treat=6-MP time n.risk n.event survival std.err lower 95% CI upper 95% CI 6   21 3   0.857 0.0764 0.720 1.000 7   17 1   0.807 0.0869 0.653 0.996 10 15 1   0.753 0.0963 0.586 0.968 13 12 1   0.690 0.1068 0.510 0.935 16 11 1   0.627 0.1141 0.439 0.896 22 7 1   0.538 0.1282 0.337 0.858 23 6 1   0.448 0.1346 0.249 0.807

解析結果詳細

• 項目左から• 生存時間、リスクセット、イベントの数、推定された生存確率、• 標準誤差、 95%信頼区間の上下限値

• 時間が経つにつれ、推定された生存確率が下がっていく

Page 34: Survival analysis0702

解析結果をプロット plot(ge.sf) legend(locator(1), c("6-MP 投与郡 ", " 対照郡 "), lty=c(1,2));

図からも6-PM投与郡のほうが生存期間が長いことがわかる

Page 35: Survival analysis0702

投薬郡に対する 90%信頼区間

信頼区間に納まっている

ge2<-subset(gehan, treat=="6-MP"); ge2.s <- survfit(Surv(time, cens)~treat, conf.int=.9, data=ge2); plot(ge2.s, mark.t=F); legend(locator(1), lty=c(1,2), legend=c(" 生存曲線 ", "90% 信頼区間 "))

Page 36: Survival analysis0702

信頼区間の推定法 servfit 関数は conf.type パラメータで信頼

区間の推定法を変更することができる種類は以下の通り

plain log log-log

conf.int パラメータで信頼区間を設定可能デフォルトは conf.int=.95 (95% の信頼区間 )

コードはテキスト p189 参照

Page 37: Survival analysis0702

推定法の変更 servfit 関数は conf パラメータで生存期間

の推定法を変更することができる種類は以下の通り

デフォルト ( カプラン - マイヤー ) fh ( フレミング - ハリントン ) fh2

コードはテキスト p189 参照

Page 38: Survival analysis0702

検定: servdiff 関数 2郡以上の観測値が得られた場合、その

優位性の検定が必要する場合がある survdiff(…)

引数 rho=0 でログ ランク検定 ・ ( デフォルト )引数 rho=1 でゲーハン - ウィルコソン検定

Page 39: Survival analysis0702

検定: servdiff 関数 実行結果

survdiff(Surv(time)~treat, data=gehan)Call:survdiff(formula = Surv(time) ~ treat, data = gehan)

N Observed Expected (O-E)^2/E (O-E)^2/Vtreat=6-MP 21 21 29.2 2.31 8.97treat=control 21 21 12.8 5.27 8.97

Chisq= 9 on 1 degrees of freedom, p= 0.00275

ログ ランク検定の・ p 値は約 0.003 なので、有意水準5% とすると

両群の生存曲線には優位な差が認められる。

Page 40: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 41: Survival analysis0702

セミノンパラメトリックモデル共変量の導入 分布の仮定

ノンパラメトリックモデル × ×

セミノンパラメトリックモデル

○ ×パラメトリックモデル ○ ○

Page 42: Survival analysis0702

セミノンパラメトリックモデル 特徴

共変量を導入する分布の仮定をしない

イベントに影響を及ぼす複数の因子(共変量)の影響を解析することを前提としたノンパラメトリックモデルのこと 共変量としては、年齢や血圧のような連続変数、性別や結婚の有無のようなカテゴリカル変数、これらの交差項などを含む変数ベクトル

モデル コックス比例ハザードモデルが良く用いられる

(数式はテキスト p191)

Page 43: Survival analysis0702

コックス比例ハザードモデル• パラメータの推定

• 直接法• ブレスロー (Breslow) の近似法• エフロン (Efron) の近似法

• イベントの数が増えると近似法のほうが計算が簡単であるが、同時に起こるイベントの数が多くなった場合妥当性を失うといわれている

• Survival パッケージには関数 coxph がある

Page 44: Survival analysis0702

推定: Coxph 関数 coxph(formula, data, method, … )

formula: 共変量など data: データ method : 以下の3種類。デフォルトは’ efro

n’ efron breslow exact

Page 45: Survival analysis0702

データ: kidney ポータブル透析装置の使用と腎臓患者の生存時間に関して、 38ペア (使用と不使用)に対する実験データ

parent: ID time: 時間 status:打ち切りは 0, その他は 1 age: 年齢 sex: 男性 =1, 女性 =2 disease: 病気の種類 (GN, AN, PKD, Other) frail: オリジナル論文からのフレイルティの推定値

Page 46: Survival analysis0702

解析例:コックスハザードモデル 性別 (sex)と病気の種類 (disease)を説明変数とした解析例 data(kidney) kidney.cox<-coxph( Surv(time, status)~sex+disease, data=kidney) summary(kidney.cox);

Call:coxph(formula = Surv(time, status) ~ sex + disease, data = kidney)

n= 76

coef exp(coef) se(coef) z Pr(>|z|) sex -1.4774 0.2282 0.3569 -4.140 3.48e-05 ***diseaseGN 0.1392 1.1494 0.3635 0.383 0.7017 diseaseAN 0.4132 1.5116 0.3360 1.230 0.2188 diseasePKD -1.3671 0.2549 0.5889 -2.321 0.0203 * ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Page 47: Survival analysis0702

解析例:コックスハザードモデル exp(coef) exp(-coef) lower .95 upper .95sex 0.2282 4.3815 0.11339 0.4594diseaseGN 1.1494 0.8700 0.56368 2.3437diseaseAN 1.5116 0.6616 0.78245 2.9202diseasePKD 0.2549 3.9238 0.08035 0.8084

Rsquare= 0.206 (max possible= 0.993 )Likelihood ratio test= 17.56 on 4 df, p=0.001501Wald test = 19.77 on 4 df, p=0.0005533Score (logrank) test = 19.97 on 4 df, p=0.0005069

3種類の検定統計量を返す 尤度比の検定、ワルド検定、スコア検定

Page 48: Survival analysis0702

生存時間の推定: survfit 構築したモデルによる生存時間の当ては

めは、関数 survfit を用いると便利

kidney.fit<-survfit(kidney.cox); summary(kidney.fit);Call: survfit(formula = kidney.cox)

time n.risk n.event survival std.err lower 95% CI upper 95% CI 2 76 1 0.99018 0.00985 0.971059 1.000 7 71 2 0.96856 0.01831 0.933335 1.000  ・・・ 536 2 1 0.01224 0.01383 0.001336 0.112 562 1 1 0.00318 0.00613 0.000073 0.139

Page 49: Survival analysis0702

プロット plot(kidney.fit);

• survfit で推定された生存曲線および信頼区間

• 信頼区間内に納まっている

Page 50: Survival analysis0702

残差分析 打ち切りデータがあるため、残差分析が少々複雑

になる 提案されている残差 ( カッコ内は指定パラメータ )

マルチンゲール残差 ( デフォルト ) 良く使われている シェーンフィールド残差 (type=“schoen-feld”) スコア残差 (type=“score”) デヴィアンス残差 (type=“deviance”)

関数 coxph のモデルの残差は residuals.coxph( 略して residuals) 関数で呼び出す パラメータ type を変えることで残差の種類を切り替え

られる

Page 51: Survival analysis0702

マルチンゲール残差プロット scatter.smooth(residuals(kidney.cox)); abline(h=0,lty=3,col=2);

• 1が上限で下限値は無し

• 明らかに変化パターンがなければOK

• これを標準化したのが次のデヴィアンス残差

Page 52: Survival analysis0702

デヴィアンス残差プロットscatter.smooth(residuals(kidney.cox, type="deviance"));abline(h=0,lty=3,col=2);

標準化されている

Page 53: Survival analysis0702

ハザードの比例性の分析 コックス比例ハザードモデルは、ハザー

ド比が時間によらず一定であることを前提としているため、その仮定を吟味する必要がある。

関数 cox.zph を用いるデフォルトは Kaplan-Meier 推定量

Page 54: Survival analysis0702

比例性の分析: cox.zph kidney.zph<- cox.zph(kidney.cox); kidney.zph rho chisq psex 0.18839 2.60676 0.106diseaseGN -0.01392 0.01123 0.916diseaseAN 0.06162 0.20036 0.654diseasePKD 0.00701 0.00438 0.947GLOBAL NA 4.20781 0.379

Page 55: Survival analysis0702

比例性の診断プロット op<- par(mfrow=c(2,2), mar=c(4.5,4,1,1)); plot(kidney.zph,df=2); par(op);

スプライン平滑化曲線に、時間に伴う明らかな変化パターンが無ければ比例ハザードの仮定には問題がないといわれている。

Page 56: Survival analysis0702

交互作用と変数の選択 コックス比例ハザードモデルの場合でも、

説明変数の交互作用を取りれたも出るの構築 可能。ガ

詳細はテキスト参照。

Page 57: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 58: Survival analysis0702

パラメトリックモデル共変量の導入 分布の仮定

ノンパラメトリックモデル × ×

セミノンパラメトリックモデル

○ ×パラメトリックモデル ○ ○

Page 59: Survival analysis0702

パラメトリックモデル 特徴

共変量を導入する 分布の仮定をする コックス比例ハザードモデルに比べると計算速度が速い ただし、制約のため応用範囲が限定される

生存時間が確率分布に従うという仮定の下で構築したモデル

survreg(formula=formula(data), dist=“weibull”, …) 分布

指数分布 (dist=exponential) ワイブル (dist= デフォルト ) 対数正規 (dist=log-normal) ロジスティック (dist=logistic) 対数ロジスティック (dist=log-logistic)

( 数式はテキスト p198 参照 )

Page 60: Survival analysis0702

解析: survreg 関数 survreg(Surv(time, status)~ sex+disease, kidney, dist="lognormal");Call:survreg(formula = Surv(time, status) ~ sex + disease, data = kidney, dist = "lognormal")

Coefficients:(Intercept) sex diseaseGN diseaseAN diseasePKD 1.7923643 1.5062960 -0.3334601 -0.5321264 0.6810495

Scale= 1.129394

Loglik(model)= -329.1 Loglik(intercept only)= -340 Chisq= 21.8 on 4 degrees of freedom, p= 0.00022 n= 76

Page 61: Survival analysis0702

自己紹介テキスト紹介本スライドの目的基本概念用語説明生存時間分析の分類

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

まとめ

Page 62: Survival analysis0702

まとめ生存分析はイベントが起きるまでの時間を分析する手法打ち切りが発生する大きく3種類のモデルがある。

ノンパラメトリックモデルセミノンパラメトリックモデルパラメトリックモデル

Rではそれぞれに対応した関数とデータが用意されている

Page 63: Survival analysis0702

ご清聴ありがとうございました。