前回の記事「R 言語による複雑なサンプリング設計の Cox 回帰生存曲線 (Kaplan-Meier) の描画」で、jskm パッケージの svykm 関数を使用して複素サンプリング設計データの Cox 回帰生存曲線 (Kaplan-Meier) を描画する方法を紹介しました。データ」ですが、ファンの方からはまだ詳しくない、もっと詳しく知りたいという方もいらっしゃいます。今日は引き続き紹介していきます。
まず、R パッケージとデータをインポートします
library(jskm)
library(survey)
library(jskm)
pbc<-read.csv("E:/r/test/pbc.csv",sep=',',header=TRUE)
これは原発性胆汁性胆管炎のデータです。公式アカウントの返信: 胆管炎データ、データは入手可能です。データは
後で使用するいくつかの変数について説明します。年齢: 年齢、trt: 治療計画: 1D ペネム、2 プラセボ、浮腫: 浮腫、状態: 結果変数 0/1/2 は再検討、移植、死亡を意味します。
最初に小さな操作を実行して、予測値を生成し、次の操作を待ちます。気に入らない場合は、この部分をスキップしても問題ありません。後続の操作には影響しません。
pbc$randomized <- with(pbc, !is.na(trt) & trt>0)
biasmodel <- glm(randomized~age*edema,data=pbc)
pbc$randprob <- fitted(biasmodel)
予測値 randprob を生成したら、それを正式に分析できます。まず、調査データを生成します。
dpbc <- svydesign(id=~1, prob=~randprob, strata=~edema, data=subset(pbc,randomized))
svykm 関数を直接使用して予測値を生成します。ここでも信頼区間を存続する必要があります。
s1 <- svykm(Surv(time,status>0)~sex, design=dpbc,se=T)
ここで、描画に svyjskm 関数を直接使用します。
svyjskm(s1)
X 軸、Y 軸のラベルとタイトルを変更する
svyjskm(s1,xlabs = "时间",ylabs = "生存率",main = "时间与生存率关系图")
凡例を変更する
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",ystratalabs=c("男","女"))
X 軸の範囲を制限し、Y 軸も同様に制限します
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),xlims=c(0,3000))
Y 軸をパーセンテージで表示するように変更します。
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),surv.scale="percent")
表示される時間軸ポイントの数を変更します。デフォルトは 7 ポイントです。
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700)
プロットで P 値を生成する
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T)
テキスト内の P 値の位置とフォント サイズを調整する
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,pval.coord=c(1000,0.4),pval.size=8)
P 値の後にログランクを追加します
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T)
凡例の位置を調整する
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,legendposition=c(0.6,0.8))
凡例を表示しない
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,legendposition=c(0.6,0.8),legend=F)
カラースタイルを変更します。デフォルトは Set1 です。
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,linecols="Set2")
破線は破線を設定します。1 本の線しか設定できないようです
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,linecols="Set2",dashed=T)
累積発生率関数を表示する
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,linecols="Set2",cumhaz=T)
ggpubr::ggarrange 関数を呼び出してテーブルを作成することで、多くのインスピレーションが得られました。
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,linecols="Set2",table=T)
表の下の字幕名を変更します
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=,
linecols="Set2",table=T,label.nrisk="生存人数")
リスクのある数字のフォント サイズを設定します。デフォルトは 10 です。
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,
linecols="Set2",table=T,label.nrisk="生存人数",size.label.nrisk=12)
曲線にパーセンテージ表示を追加する
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,
linecols="Set2",table=T,label.nrisk="生存人数",size.label.nrisk=12,showpercent = T)
Cut.landmark は新しいランドマークを設定することです
svyjskm(s1,xlabs = "时间",ylabs = "生存率",ystrataname = "性别",
ystratalabs=c("男","女"),timeby=700,pval=T,
pval.coord=c(1000,0.4),pval.testname=T,
linecols="Set2",table=T,label.nrisk="生存人数",size.label.nrisk=12,showpercent = T,cut.landmark=2100)