あなたが提供した最初のリンクには、実際にこれがどのように機能するかの理論に関する明確な説明と、素敵な例があります. (これをありがとう、それは私が自分の仕事で使用する素晴らしいリソースです。)
関数を使用するには、curve
いくつかの関数を引数として渡す必要があります。*weibull
関数のファミリが とは異なるワイブルのパラメーター化を使用することは事実ですがsurvreg
、最初のリンクで説明したように、簡単に変換できます。また、 のドキュメントからsurvreg
:
ワイブル分布をパラメータ化する方法は複数あります。survreg 関数は、rweibull 関数とは異なるパラメーター化である一般的な位置スケール ファミリにそれを組み込み、しばしば混乱を招きます。
survreg's scale = 1/(rweibull shape)
survreg's intercept = log(rweibull scale)
その単純な変換の実装を次に示します。
# The parameters
intercept<-4.0961
scale<-1.15
par(mfrow=c(1,2),mar=c(5.1,5.1,4.1,2.1)) # Make room for the hat.
# S(t), the survival function
curve(pweibull(x, scale=exp(intercept), shape=1/scale, lower.tail=FALSE),
from=0, to=100, col='red', lwd=2, ylab=expression(hat(S)(t)), xlab='t',bty='n',ylim=c(0,1))
# h(t), the hazard function
curve(dweibull(x, scale=exp(intercept), shape=1/scale)
/pweibull(x, scale=exp(intercept), shape=1/scale, lower.tail=FALSE),
from=0, to=100, col='blue', lwd=2, ylab=expression(hat(h)(t)), xlab='t',bty='n')
par(mfrow=c(1,1),mar=c(5.1,4.1,4.1,2.1))
回答でpweibull
関数を使用したくないとおっしゃったことは理解していますが、別のパラメーター化を使用しているため、使用したくないと推測しています。それ以外の場合は、そのパラメーター化pweibull
を使用する独自のバージョンを単純に作成できます。survreg
my.weibull.surv<-function(x,intercept,scale) pweibull(x,scale=exp(intercept),shape=1/scale,lower.tail=FALSE)
my.weibull.haz<-function(x,intercept,scale) dweibull(x, scale=exp(intercept), shape=1/scale) / pweibull(x,scale=exp(intercept),shape=1/scale,lower.tail=FALSE)
curve(my.weibull.surv(x,intercept,scale),1,100,lwd=2,col='red',ylim=c(0,1),bty='n')
curve(my.weibull.haz(x,intercept,scale),1,100,lwd=2,col='blue',bty='n')
コメントで述べたように、なぜこれを行うのかわかりませんが (これが宿題でない限り)、必要pweibull
に応じてハンドコーディングできdweibull
ます。
my.dweibull <- function(x,shape,scale) (shape/scale) * (x/scale)^(shape-1) * exp(- (x/scale)^shape)
my.pweibull <- function(x,shape,scale) exp(- (x/scale)^shape)
これらの定義は からそのまま出てき?dweibull
ます。直接ラップする代わりにpweibull
、遅くてテストされていない関数をラップするだけです。dweibull