Kaplan-Meierのきれいな描き方

今回はカプランマイヤーを綺麗に描くためのポイントを書いてみます.

以下のエレメントを順番に加えたときにどんなグラフになるかを見てみましょう.

  • Figure legendの位置を調節し、表記を自分好みにする
  • at-risk tableを追加する
  • P値をグラフの中に組み込む

1.Figure legendの調整

まずはカプランマイヤー曲線がデフォルトでどのように表示されるのかを確認しましょう.Stata自前のデータセットを使わせていただきます.

webuse drug2, clear
sts graph, by(drug)
sts test drug
Log-rank検定の結果はP = 0.000…

Legendの表記や位置が気にくわないし、検定結果もどうせなら中に入れてしまいたい! と思えてきます.

そこでまずはLegendから修正してみます.

sts graph, by(drug) legend(position(1) ring(0) col(1))
Legendが右上に配置された.

legend optionの中の positionは時計回りの位置関係ringはグラフエリア内か外かcol()は何列にするかをそれぞれ意味します.

position(1)とすれば時計の1時の位置に配置されますよ、ということになり、ring(0)とすればグラフエリア内になりますよ、となり、col(1)とすれば縦一列に並べます、ということになります.

drug = 0はプラセボ、drug = 1は実薬群らしいのですが、この表記を整える方法として、2つ知っておくとよいでしょう.

1) sts graph, by(drug) legend(order(2 “Drug” 1 “Placebo”) position(1) ring(0) col(1))
2) sts graph, by(drug) legend(label(1 Placebo) label(2 Drug) position(1) ring(0) col(1)) 

1)を推奨します.理由は簡単で、実薬群が上にくるほうが感覚的にしっくりくるからです.2)の方法も汎用性が高いので覚えておきましょう.

1)の方法だと実薬群がレジェンド内の上に来る
2)だと実薬群が下に来てしまう

2.at-risk table

カプランマイヤーの下にリスクテーブルをつけたり、打ち切りに対して「ひげ」をつけたりしておくことができます.

sts graph, by(drug) legend(order(2 "Drug" 1 "Placebo") position(1) ring(0) col(1)) risktab 
at-risk tableのラベルがうざい…
sts graph, by(drug) legend(order(2 "Drug" 1 "Placebo") position(1) ring(0) col(1))risktab( , title("") order(2 "Drug" 1 "Placebo"))

3.P 値をグラフ中に組み込む

これをするにはまずP値を取り出すことから始めなければなりません.残念ながらLog-rank検定のコードから直接P値を取り出すことはできず、計算しなければいけません.

.sts test

各コマンドのオンラインヘルプの一番下には、どんなスカラー値がとれるのかをまとめてくれています.そこで見てみると、

Scalars
r(df) degrees of freedom
r(df_tr) degrees of freedom, trend test
r(chi2) chi-squared
r(chi2_tr) chi-squared, trend test

つまりカイ二乗分布に基づいてP値を計算することになります.以前の記事にも記載しましたが、カイ二乗分布に基づいたP値の計算は、

1 – chi2(自由度, カイ二乗値)

で与えられるので、

1 – chi2(r(df), r(chi2))

となります.最終的には以下のようなプログラムになります.

sts test drug
local P: disp %4.3f 1 – chi2(r(df), r(chi2))
sts graph, by(drug) legend(order(2 "Drug" 1 "Placebo") position(1) ring(0) col(1))risktab( , title("") order(2 "Drug" 1 "Placebo")) censor(s) text(0.15 30 "Log-rank test" " " "P=`P'") xtitle(Observation Period)
textの位置は適当に数値をいじればずらせます.
text(y軸の値 x軸の値 載せたい値)

4.まとめ

Legendを自分好みにし、at-risk tableを付け、Log-rank検定の結果を組み込んだカプランマイヤーの描き方をまとめました.

誰かの参考になれば幸いです.

コメント

タイトルとURLをコピーしました