生存曲線の作成が大変簡単なパッケージの紹介です。Log-rank検定の結果や生存数のテーブルなどの同時プロットが可能です。非常に簡単で見栄えの良いグラフが作成可能です。
パッケージバージョンは0.4.9。実行コマンドはwindows 11のR version 4.1.2で動作を確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("survminer")
コマンドの紹介
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み library("survminer") ###データ例の作成##### #Status:0=alive,1=deadを示す #自身のデータも生存、死亡を数字に変換してください n <- 150 set.seed(1234) TestData <- data.frame(ID = 1:n, Group = rep(c("A", "B"), length = n), Day = sample(0:20, n, replace = TRUE), Status = sample(0:1, n, replace = TRUE)) #survivalパッケージのSurv,survfitコマンドで生存計算 library("survival") ServResult <- survfit(Surv(Day, Status) ~ Group, data = TestData) ######## #生存曲線の作成:ggsurvplotコマンド #Surv,survfitコマンドの結果を指定:fitオプション #Log-rank検定結果を表示:pvalオプション #生存時間(x軸)の分割数を設定:break.time.byオプション #信頼区間を表示:conf.intオプション #信頼区間の表示設定:conf.int.styleオプション;"ribbon"or"step" #打切り数を棒グラフで表示:ncensor.plotオプション #50%生存の補助線を表示:surv.median.lineオプション: #"none","hv"(水平垂直に追加),"h"(水平に追加),"v"(垂直に追加) ggsurvplot(fit = ServResult, data = TestData, #Kaplan-Meier PLOTの表示内容を指定 palette = c("#bfe6d5", "#df6d68"), pval = TRUE, break.time.by = 3, pval.method = TRUE, risk.table = TRUE, conf.int = TRUE, conf.int.style = "step", ncensor.plot = TRUE, size = 1.5, linetype = c(1, 3), surv.median.line = "h", #Kaplan-Meier PLOT部分の体裁を調整 title = "TEST PLOT", subtitle = "Kaplan-Meier PLOT", caption = "KARADA-GOOD", legend.title = "Group", font.title = c(15, "bold", "#426617"), font.subtitle = c(13, "plain", "#df6d68"), font.caption = c(10, "italic", "#f6adad"), font.x = c(13, "bold.italic", "red"), font.y = c(13, "bold.italic", "green"), font.tickslab = c(15, "plain", "#7a430e"), legend = c(0.9, 1), font.legend = c(13, "plain", "#7a430e"), pval.size = 7, #"1","n","sqrtN","S1","S2","FH"が選択可能 ###それぞれの内容##### #1;log-rank, n;Gehan-Breslow (generalized Wilcoxon) #sqrtN;Tarone-Ware, S1;Peto-Peto's modified survival estimate #S2;modified Peto-Peto (by Andersen), FH ;Fleming-Harrington(p=1, q=1) ######## log.rank.weights = "1", #risk.table部分の体裁を調整 risk.table.title = "risk.table.title", risk.table.y.text.col = TRUE, risk.table.y.text = FALSE, fontsize = 7)
出力例
少しでも、あなたの解析が楽になりますように!!