logo
生物科学研究所 井口研究室
Laboratory of Biology, Okaya, Nagano, Japan
Home

R バグ: Cox 比例ハザード Schoenfeld 検定 ggcoxzph グラフ

井口豊(生物科学研究所,長野県岡谷市)
最終更新: 2023 年 3 月 11 日

グラフの信頼区間のバグ

 生存時間解析 Cox 回帰モデルで,比例ハザードが成り立つかどうか検定する方法として, Schoenfeld 残差検定がある。統計ソフト R のパッケージ survminer にある ggcoxzph 関数によるグラフが利用されることも多い。しかし,この信頼区間(2 SE で近似)にはバグがあり, GitHub から修正プログラムが出ている。要するに,信頼区間が広すぎる,のである。

日本語で検索しても,このバグは話題になっていないようで,気づいていないようなサイトも見られる。例えば,以下のサイト。

利用したデータやスクリプトが丁寧に書かれてるので,修正プログラムで検証してみた。


#############
library(survival)
library(survminer)
library(ggplot2)
library(tidyverse)

d <- veteran %>% 
  mutate(age_cat = if_else((age<60), "under60", "over60"),
         age_cat = factor(age_cat),
         trt = factor(trt, labels=c("standard", "test")),
         prior = factor(prior, labels=c("N"," Y")))

fit <- coxph(
   Surv(time, status)~trt + celltype + age_cat + prior,
   data=d
)

fit_test <- cox.zph(fit)

# バグ修正前
g.unfix<- ggcoxzph(fit_test)
ggpar(g.unfix, subtitle = "Bug unfixed", theme(aspect.ratio = 1))

# バグ修正後
g.fix<- ggcoxzph(fit_test)
ggpar(g.fix, subtitle = "Bug fixed")

################

結果は,以下のように,バグ修正の前(Bug unfixed)と後(Bug fixed)で,それぞれ図 1,図 2 として示してある。

Schoenfeld の比例ハザード性検定(バグ修正前)

図 1. Schoenfeld の比例ハザード性検定(バグ修正前)

Schoenfeld の比例ハザード性検定(バグ修正後)

図 2. Schoenfeld の比例ハザード性検定(バグ修正後)

比例ハザード性の仮定が成立しているか検証する[R]Schoenfeld 検定グラフは,やはり未修正のプログラムを利用しているようであり,前述の図 1 と同じく,ほぼ全てのデータ点が信頼区間の中に入ってしまっている。

関連ページ

Home