差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
r:survival [2018/12/09 18:36] – watalu | r:survival [2018/12/11 19:42] (現在) – watalu | ||
---|---|---|---|
行 1: | 行 1: | ||
==== Rによる生存時間解析 ==== | ==== Rによる生存時間解析 ==== | ||
+ | |||
+ | [[r: | ||
+ | |||
+ | * [[r: | ||
+ | * [[r: | ||
+ | * [[r: | ||
+ | |||
+ | ただし、実験の内容を実施するためには、上の3つのページは読まずとも問題なく、下の説明に従って進めれば十分である。 | ||
=== データの書き方 === | === データの書き方 === | ||
行 89: | 行 97: | ||
< | < | ||
X$status | X$status | ||
+ | </ | ||
+ | |||
+ | === 信頼性データ図 === | ||
+ | |||
+ | 信頼性データを図示する関数draw.reliability.data.diagramを用意した。 | ||
+ | 上に与えたデータの図を描くには次の1行を実行する。 | ||
+ | |||
+ | < | ||
+ | plot.reliability.data.diagram(X) | ||
</ | </ | ||
行 99: | 行 116: | ||
</ | </ | ||
- | これを実行しておかないと、すぐ次のコマンドの実行時に赤い文字でエラーが表示される。 | + | これを実行しておかないと、すぐ次のコマンドの実行時に青い文字でエラーが表示されるかもしれない。 |
=== 生存曲線と故障率曲線のノンパラメトリック推定 === | === 生存曲線と故障率曲線のノンパラメトリック推定 === | ||
行 240: | 行 257: | ||
=== 関数 === | === 関数 === | ||
- | 完全データについて、これら三つの確率分布を推定し、ヒストグラムと比較するための関数を用意した。 | + | 完全データについて、これら三つの確率分布を推定し、ヒストグラムと比較するための関数compare.histgram.and.densitiesを用意した。 |
- | < | + | |
- | draw.histgram.and.densities <- function(X, | + | |
- | require(MASS) | + | |
- | est.weibull <- fitdistr(X$time, | + | |
- | est.lnorm <- fitdistr(X$time, | + | |
- | est.gamma <- fitdistr(X$time, | + | |
- | if(hist==TRUE) { | + | |
- | hist(X$time, | + | |
- | | + | |
- | plot(function(x){return(dlnorm(x, | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | } else { | + | |
- | plot(function(x){return(dlnorm(x, | + | |
- | | + | |
- | | + | |
- | | + | |
- | } | + | |
- | plot(function(x){return(dweibull(x, | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | plot(function(x){return(dgamma(x, | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | legend(" | + | |
- | | + | |
- | | + | |
- | | + | |
- | return(list(weibull=est.weibull, | + | |
- | } | + | |
- | </ | + | |
オプションのhistをhist=FALSEとすると、ヒストグラムは描かず、密度関数のみを描くようになる。 | オプションのhistをhist=FALSEとすると、ヒストグラムは描かず、密度関数のみを描くようになる。 | ||
- | またカプラン・マイヤー法で推定した生存関数と共に描くための関数も用意した。 | + | またカプラン・マイヤー法で推定した生存関数と共に描くための関数compare.KM.and.distributionsも用意した。 |
+ | これで、どの分布に最も近いかを検討できる。 | ||
< | < | ||
- | compare.KM.and.distributions <- function(fit, | + | X.fits <- compare.histgram.and.densities(X) |
- | require(survival) | + | compare.KM.and.distributions(X.fits,data=X) |
- | | + | |
- | if(!is.null(xlim)) { | + | |
- | plot(X.km, | + | |
- | | + | |
- | | + | |
- | plot(function(x) pweibull(x, | + | |
- | lower.tail=FALSE), | + | |
- | | + | |
- | plot(function(x) plnorm(x, | + | |
- | lower.tail=FALSE), | + | |
- | xlim=xlim, | + | |
- | plot(function(x) pgamma(x, | + | |
- | lower.tail=FALSE), | + | |
- | | + | |
- | } else { | + | |
- | plot(X.km, | + | |
- | | + | |
- | | + | |
- | plot(function(x) pweibull(x, | + | |
- | lower.tail=FALSE), | + | |
- | | + | |
- | plot(function(x) plnorm(x, | + | |
- | lower.tail=FALSE), | + | |
- | | + | |
- | plot(function(x) pgamma(x, | + | |
- | lower.tail=FALSE), | + | |
- | | + | |
- | } | + | |
- | legend(" | + | |
- | | + | |
- | paste(" | + | |
- | paste(" | + | |
- | paste(" | + | |
- | | + | |
- | } | + | |
</ | </ | ||
- | これで、どの分布に最も近いかを検討できる。 | ||
== 一部が打ち切られているデータ == | == 一部が打ち切られているデータ == | ||
行 330: | 行 277: | ||
</ | </ | ||
+ | 関数survregは、ワイブル分布weibull、対数正規分布lognormal、ロジスティック分布logistic、対数ロジスティック分布loglogisticの4種類の確率分布の最尤推定法を提供する。ガンマ分布には対応していない。 | ||
+ | そのため以下では、ワイブル分布と対数正規分布のみを対象として、話を進める。 | ||
+ | < | ||
+ | X.survreg.weibull <- survreg(Surv(time, | ||
+ | names(X.survreg.weibull) | ||
+ | c(1/ | ||
+ | summary(X.survreg.weibull) | ||
+ | X.fit.weibull$loglik | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | X.survreg.lognormal <- survreg(Surv(time, | ||
+ | names(X.survreg.lognormal) | ||
+ | c(X.survreg.lognormal$coefficients, | ||
+ | summary(X.survreg.lognormal) | ||
+ | X.fit.lognormal$loglik | ||
+ | </ | ||
+ | |||
+ | これらをカプラン・マイヤー曲線に重ねて描く関数compare.KM.and.distributions.2 も用意した。 | ||
+ | |||
+ | < | ||
+ | compare.KM.and.distributions.2(X) | ||
+ | </ |