書記が数学やるだけ#844 ログランク検定
ログランク検定について実際に手計算してみる。
問題
説明
ログランク検定は,2つの標本の生存分布を比較するノンパラメトリック検定であり,特に観測が打ち切られている場合に有効である。
解答
ログランク検定を行うにあたって,各時間について「新薬かプラセボか」「正常か発症か」の分割表を作成し,観測値と期待値を示しておく。
ここで手計算するにあたって,ログランク検定量は自由度1のカイ2乗分布に近似できることを利用して求める。
ログランク検定の実装を以下に示す。
#前回までの範囲
from lifelines.datasets import load_dd
from lifelines import KaplanMeierFitter
from matplotlib import pyplot as plt
data = load_dd()
T = data["duration"]
E = data["observed"]
kmf = KaplanMeierFitter()
今回は「民主主義か否か」が任期に与える影響を示す。2つのカプラン=マイヤー曲線を可視化すると,民主主義でない方が任期が長くなるように見える。
ax = plt.subplot(111)
dem = (data["democracy"] == "Democracy")
kmf.fit(T[dem], event_observed=E[dem], label="Democratic Regimes")kmf.plot_survival_function(ax=ax)
kmf.fit(T[~dem], event_observed=E[~dem], label="Non-democratic Regimes")
kmf.plot_survival_function(ax=ax)
plt.title("Lifespans of different global regimes");
ログランク検定を実施した結果,2つの曲線に有意差があることから,民主主義でない方が任期が長くなることが示せた。
from lifelines.statistics import logrank_test
results = logrank_test(T[dem], T[~dem], E[dem], E[~dem], alpha=.99)
results.print_summary()
本記事のもくじはこちら: