ログランク検定、重み付きログランク検定たちについてのメモ。
【目次】
前回のKaplan-meier 法に続く内容。
cochineal19.hatenablog.com
計算式等
先に計算方法をまとめておく。
ログランク検定は生存時間解析において、2群間の生存時間の差を検定する手法。
時点 t ごとにイベントの観測度数と期待度数のズレを見ており、下のクロス表にまとめることができる。
(※クロス表の黄色セル部分を見ている。)
■ 時点 t ごとのイベント有無のクロス表
イベント | 合計 | |||
有 | 無 | |||
群 | A | |||
B | ||||
全体 |
■ ログランク検定(Log-Rank test)
この式はマンテル・ヘンツェルの統計量(CMH統計量)であり、ログランク検定はマンテル・ヘンツェルの方法を用いていることが分かる(Cox-Mantel検定、Mantel Log Rank検定とも呼ばれる)。
cochineal19.hatenablog.com
■ ログランク検定の重み
生存時間解析はイベント・打ち切りの発生により観察期間の後期になるほどN数が少なくなる特徴がある。
このため各時点に重みを与える方法がいくつか考案されている。
手法 | 重み | 補足 |
Log-Rank (Mantel) | 1 | 一定の重み。 |
Gehan's Wilcoxon | 初期に強い重み。 | |
Tarone-Ware | 初期に強い重み。 | |
Peto-Peto | 初期に少し重み。 | |
Harrington-Fleming (a, b) | 初期に少し重み。 |
重みを見ての通り、観察期間の前半に差が出やすいものは重み付きのログランク検定の方が有意差が出やすく、後半に差が出やすいものは重みなしのログランク検定の方が有意差が出やすい。
簡単な歴史
* Cox (1953) : 二群の差をF検定で示す方法を提案(指数分布に従う場合)。
* Mantel and Haenszel (1959), Mantel (1966) : Coxの手法を拡張して、ログランク検定(重みなし)を提案。
* Gehan (1965) : Gehan-Wilcoxon検定を提案。
* Peto and Peto (1972) : Peto-Peto検定を提案。
* Tarone and Ware (1977) : Tarone-Ware検定を提案。
* Fleming and Harrington (1981), Harrington and Fleming (1982) : Harrington-Fleming検定を提案。
ノート
今回はSAS中心で記事を書く。(Rの関数は調べれていない。。。)
サンプルデータ
前回のKaplan-meier法の記事と同じく、RのMASSパッケージにあるgehanデータ(Remission Times of Leukaemia Patients)を用いる。
まずは手計算してみる
ログランク検定をExcelで計算してみると下図の通りになる。
(累積生存率 S(t) の計算は前回のKaplan-meier法の記事を参照。)
Log-rank (Mantel)
Gehan's Wilcoxon
Peto-Peto
公式どおりなので特記はないが、1行目のデータ(時点t=1)について式を追ってみる。
イベント | 合計 | |||
有 | 無 | |||
群 | A | |||
B | ||||
全体 |
時点t=1は、A群:イベント=0例、B群:イベント=2例である。
よって、
ここに重みを与えれば各手法となる:
Log-rank (Mantel)
Gehan's Wilcoxon
Peto-Peto
以上の処理を時点分行ってカイ二乗統計量を算出する。
SASでの実行
LIFETESTプロシジャのSTRATAステートメントのTESTオプションで指定する。
proc lifetest data=ADTTE plots=s(cl atrisk maxlen=30 outside) alpha=0.5 conftype=loglog; time AVAL * CNSR(0); strata TRT01A / test=(LOGRANK WILCOXON TARONE PETO FH(0.5,0.5)); ods output SurvivalPlot = SP1; ods output Quartiles = QT1; run;
Rでの実行
Log-rank (Mantel) についてsurvivalパッケージのsurvdiff関数で実行できる。
(※他の手法は調べれていない)
> library(survival) > survdiff(Surv(time=AVAL, event=EVENT) ~ TRT01A, data=ADTTE) Call: survdiff(formula = Surv(time = AVAL, event = EVENT) ~ TRT01A, data = ADTTE) N Observed Expected (O-E)^2/E (O-E)^2/V TRT01A=6-MP 21 9 19.3 5.46 16.8 TRT01A=control 21 21 10.7 9.77 16.8 Chisq= 16.8 on 1 degrees of freedom, p= 4e-05
プログラムコード
R
library(survival) survdiff(Surv(time=AVAL, event=EVENT) ~ TRT01A, data=ADTTE)
proc lifetest data=ADTTE plots=s(cl atrisk maxlen=30 outside) alpha=0.5 conftype=loglog; time AVAL * CNSR(0); strata TRT01A / test=(LOGRANK WILCOXON TARONE PETO FH(0.5,0.5)); ods output SurvivalPlot = SP1; ods output Quartiles = QT1; run;
整備中
参考
統計学(出版:東京図書), 日本統計学会編
https://support.sas.com/documentation/onlinedoc/stat/142/lifetest.pdf
Pinar Gunel Karadeniz and Ilker Ercan, EXAMINING TESTS FOR COMPARING SURVIVAL CURVES WITH RIGHT CENSORED DATA, STATISTICS IN TRANSITION new series, June 2017, Vol. 18, No. 2, pp. 311–328
http://www.math.ucsd.edu/~rxu/math284/slect2.pdf
http://www.math.ucsd.edu/~rxu/math284/slect3.pdf
https://www.pharmasug.org/proceedings/2014/SP/PharmaSUG-2014-SP10.pdf
https://www.sas.com/content/dam/SAS/ja_jp/doc/event/sas-user-groups/usergroups11-a-02.pdf