Rによるデータ分析

Rによる生存時間分析

生存時間分析 のRによる実施例です。

下記は、コードのメモとして書いたもので、「分析」というほど、詳しくないです。

カプラン・マイヤー法

下記のコードで使っているデータは、「gehan」というRのサンプルデータをcsvファイルにして、ローカルPCに置いたものです。

変数名は下記になります。
time : 生存時間
cens : 1 = 完全データ、 0 = 打ち切りデータ
treat : 要因のカテゴリーデータ

分析対象が1つの時

setwd("C:/Rtest")
library(survival)
Data <- read.csv("Data.csv", header=T)
ge.sf<-survfit(Surv(time,cens)~1, data=Data) plot(ge.sf,xlab="Time", ylab="Overall Survivial")

survival
点線は、 信頼区間 です。

分析対象が2つで併記する時

setwd("C:/Rtest")
library(survival)
Data <- read.csv("Data.csv", header=T)
ge.sf<-survfit(Surv(time,cens)~treat, data=Data)
plot(ge.sf, col=2:3,xlab="Time", ylab="Overall Survivial")
legend("topright", paste(c("A","B")), lty=1, col=2:3)

survival

ワイブル解析

モデルの計算結果を見る

setwd("C:/Rtest")
library(survival)
Data <- read.csv("Data.csv", header=T)
summary(survreg(Surv(time,cens)~1,Data,dist="weibull"))

survival

この結果の見方ですが、「m」や「β」という記号で説明されることの多い形状パラメータは、「Scale」というところの数値の逆数です。 この例だと、0.73ですが、逆数は1.37(= 1 / 0.73)で、1より大きくなるので、摩耗故障期(バスタブ曲線の右側で、故障率がどんどん高くなっていく期間)と解釈できます。

分析対象が1つの時のグラフ

カプラン・マイヤー法で計算した結果と、ワイブル解析で計算した結果を重ね合わせたグラフを作ります。

Rでは、カプラン・マイヤー法のグラフを作るのは簡単です。 一方、ワイブル解析の方は、コードが複雑です。 いろいろと調べてみたところ、下記の参考文献の内容が一番シンプルでした。 この方法だと、カプラン・マイヤー法のグラフを作ってから、それに重ねることで簡単にしています。

setwd("C:/Rtest")
library(survival)
Data <- read.csv("Data.csv", header=T)
sr <- survreg(Surv(time,cens)~1,Data,dist="weibull")
sf <-survfit(Surv(time,cens)~1, Data)
plot(sf)
curve(1-pweibull(x,shape=1/sr$scale, scale=exp(coef(sr)[1])),add=TRUE)

survival

分析対象が2つの時のグラフ

setwd("C:/Rtest")
library(survival)
Data <- read.csv("Data.csv", header=T)
sr <- survreg(Surv(time,cens)~treat,Data,dist="weibull")
sf <- survfit(Surv(time,cens)~treat, Data)
plot(sf, col=2:3,xlab="Time", ylab="Overall Survivial")
legend("topright", paste(c("A","B")), lty=1, col=2:3)
curve(1-pweibull(x,shape=1/sr$scale, scale=exp(coef(sr)[1])),add=TRUE, col=2)
curve(1-pweibull(x,shape=1/sr$scale, scale=exp(coef(sr)[1]+coef(sr)[2])),add=TRUE, col=3)

survival

コックス回帰分析

setwd("C:/Rtest")
library(survival)
Data <- read.csv("Data.csv", header=T)
summary(coxph(Surv(time, cens) ~ treat, data=Data))

survival

上記の例だと、要因の変数がtreatの1個だけです。 例えば、treat2という変数もあって、それも要因に加えたい場合は、treat + treat2と書きます。



参考文献

Rと生存時間分析(1)
カプラン・マイヤー法がのっています。
https://www1.doshisha.ac.jp/~mjin/R/Chap_36/36.html


統計ソフトRを使ったグループごとのカプランマイヤー曲線の描き方
カプラン・マイヤー法がのっています。
https://toukeier.hatenablog.com/entry/2019/07/28/204607


Rと生存時間分析(2)
コックス回帰分析、ワイブル解析について詳しくのっています。
https://www1.doshisha.ac.jp/~mjin/R/Chap_37/37.html


survreg と weibreg
survregとweibregという、ワイブル解析ができる2つのライブラリを比較した記事です。 この中で、カプラン・マイヤー法とワイブル解析のグラフを併記する方法は、このページを参考にさせていただきました。
http://aaaaushisan.blogspot.com/2011/12/survreg-weibreg.html

survival
CRANにあるsurvivalのマニュアルです。
「survreg's scale = 1/(rweibull shape)
survreg's intercept = log(rweibull scale)」
とありますので、survregの結果は、逆数や指数にすると、一般に使っているワイブル分布の係数が計算できることが書かれています。 https://cran.r-project.org/web/packages/survival/survival.pdf


Tweet データサイエンス教室