0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで学ぶ生存時間解析3 -生存関数の比較

Last updated at Posted at 2025-06-15

前回の記事はこちら
Pythonで学ぶ生存時間解析2 -Kaplan-Meier推定量
https://qiita.com/Goriwaku/items/767cdc2640e29fddf7cc

生存関数比較の意義

 試験における全体の生存状況を記述した後、それぞれの部分集団における生存関数の比較を行うことになります。この部分集団とは、生存状況に関連していると思われる共変量(説明変数)によって標本を分割したものとなります。このとき、この変数によって分割した2群の生存状況を比較することで、治療効果や性別の死亡率への影響などを考えることが可能になります。これは、通常の統計学において、2標本t検定やノンパラメトリック順位和検、一元配置分散分析などが持つ意義と同等の意義を持ちます。生存時間データが打ち切りを含まない場合、これらの手法をそのまま適用することができる場合もありますが、一般には生存時間データに適応した検定方法が用いられることが多いです。

2群生存時間のプロット

 イメージを持ちやすくするために、検定について話す前にwhasデータセットのKaplan-Meier推定量を性別ごとにプロットしてみましょう。whasデータセットについては私の以前の記事(https://qiita.com/Goriwaku/items/8d00696d853da73505bd )を参考にしてください。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import lifelines as ll
from lifelines import KaplanMeierFitter


whas = pd.read_csv('whas500.csv')
whas_men = whas[whas.GENDER==0]
whas_women = whas[whas.GENDER==1]
kmf = KaplanMeierFitter()
kmf.fit(whas_men.LENFOL, event_observed=whas_men.FSTAT)
ax = kmf.plot(label='men')
kmf.fit(whas_women.LENFOL, event_observed=whas_women.FSTAT)
ax = kmf.plot(ax=ax, label='women')
plt.show()

pythonのpandasにおいてあるグループ(今回でいうと性別)を取り出したいときには、df[df['共変量']=='グループ']という書き方で取り出すことが可能です。plot()の引数labelを指定することで、出力された図がわかりやすくなるようにしています。このスクリプトで出力された図が以下になります。男性のほうが生存率が良いように見えます。
km_2groups.png
生存時間における2群比較の検定は、この2つの曲線の差が統計的に有意であるかどうかを検証するために行います。次節からは、実際に生存時間データに対して行われる検定手法について見ていきます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?