2013-04-26 5 views
9

मैं निम्नलिखित survreg मॉडल है:प्लॉट अस्तित्व और का उपयोग कर survreg का खतरा समारोह वक्र()

Call: 
survreg(formula = Surv(time = (ev.time), event = ev) ~ age, 
    data = my.data, dist = "weib") 
      Value Std. Error z  p 
(Intercept) 4.0961  0.5566 7.36 1.86e-13 
age   0.0388  0.0133 2.91 3.60e-03 
Log(scale) 0.1421  0.1208 1.18 2.39e-01 
Scale= 1.15 

Weibull distribution 

मैं खतरा समारोह और अस्तित्व समारोह ऊपर अनुमान के आधार पर प्लॉट करने के लिए करना चाहते हैं।
मैं का उपयोग नहीं करना चाहते हैं predict() या pweibull() (के रूप में यहां प्रस्तुत Parametric Survival या यहाँ SO question

मैं curve() समारोह का उपयोग करें। कोई भी विचार मैं यह कैसे पूरा कर सकते हैं चाहते हैं? यह survreg की वेइबुल समारोह लगता है सामान्य से अधिक पैमाने पर और आकार के अन्य परिभाषाओं का उपयोग करती है (और अलग है कि उदाहरण के लिए rweibull)

अद्यतन:। मुझे लगता है कि क्या मैं वास्तव में अनुमान के एक समारोह के रूप में खतरा/अस्तित्व व्यक्त करने के लिए यह आवश्यकता Intercept, age (+ other potential covariates), Scale किसी भी तैयार किए गएका उपयोग किए बिनासमारोह।

उत्तर

8

आपका मानकों हैं:

अपने उदाहरण में scale=exp(Intercept+beta*x) और उम्र के लिए कहते हैं की सुविधा देता है = 40

scale=283.7 

अपने आकार पैरामीटर पैमाने के पारस्परिक है कि मॉडल आउटपुट

shape=1/1.15 

फिर खतरे है:

curve((shape/scale)*(x/scale)^(shape-1), from=0,to=12,ylab=expression(hat(h)(t)), col="darkblue",xlab="t", lwd=5) 

संचयी खतरा समारोह है:

curve((x/scale)^(shape), from=0,to=12,ylab=expression(hat(F)(t)), col="darkgreen",xlab="t", lwd=5) 

जीवन रक्षा समारोह 1-संचयी खतरा समारोह है, तो यह है:

curve(1-((x/scale)^(shape)), from=0,to=12,ylab=expression(hat(S)(t)), col="darkred",xlab="t", lwd=5, ylim=c(0,1)) 

इसके अलावा eha पैकेज, और समारोह की जाँच hweibull और Hweibull

Weibull Functions

8

first link you provided वास्तव में एक सुंदर उदाहरण के साथ, यह कैसे काम करता है इस सिद्धांत पर स्पष्ट स्पष्टीकरण है। (इसके लिए धन्यवाद, यह एक अच्छा संसाधन है जिसका उपयोग मैं अपने काम में करूँगा।)

curve फ़ंक्शन का उपयोग करने के लिए, आपको कुछ फ़ंक्शन को तर्क के रूप में पास करने की आवश्यकता होगी। यह सच है कि *weibull फ़ंक्शन का परिवार survreg से वेबुल के लिए एक अलग पैरामीटरकरण का उपयोग करता है, लेकिन इसे आपके पहले लिंक को समझाया गया है, लेकिन इसे आसानी से बदला जा सकता है। इसके अलावा, survreg में प्रलेखन से:

वीबुल वितरण को पैरामीटर करने के कई तरीके हैं। बचे हुए फ़ंक्शन इसे सामान्य स्थान-पैमाने पर पारिवारिक रूप में चित्रित करता है, जो कि रिवेबल फ़ंक्शन की तुलना में अलग पैरामीटरकरण है, और अक्सर भ्रम के लिए की ओर जाता है।

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)) 

Survival and hazard functions

मैं, समझते हैं कि आप अपने जवाब है कि आप pweibull फ़ंक्शन का उपयोग नहीं करना चाहता था में उल्लेख किया है, लेकिन मुझे लगता है कि आप इसका उपयोग नहीं करना चाहते थे क्योंकि यह एक अलग पैरामीटरकरण का उपयोग करता है। अन्यथा, आप बस pweibull का उपयोग करता है के अपने स्वयं के संस्करण लिख सकता है कि survreg के parameterization:

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 handcode सकता है अगर आप की तरह:

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 के बजाय बस उन, धीमे, अवांछित कार्यों को लपेटें।

+0

से अधिक आपके विस्तृत ईमेल के लिए केएस लेकिन मैं किसी भी * * Weibull' फ़ंक्शन का उपयोग नहीं करना चाहता हूं। क्या 'इंटरसेप्ट', 'आयु (+ अन्य कॉवरिएट्स)', और 'स्केल' के कार्य के रूप में खतरे को व्यक्त करना संभव है? –

+0

एचएम, शायद आप मेरे अंतिम पैराग्राफ को याद करते हैं, जहां मैं आपको एक फ़ंक्शन लिखने के लिए दिखाता हूं जो कि 'pweibull' का एक रैपर है। मुझे नहीं पता कि आप 'pweibull' को फिर से लिखना क्यों चाहते हैं, क्योंकि इसे सी में कोड किया गया है, और यह बहुत तेज और अच्छी तरह से परीक्षण किया गया है। जब तक यह सिर्फ होमवर्क नहीं है। वैसे भी, मैं आपको दिखाता हूं कि 'pweibull' और' dweibull' को कैसे संभालें। – nograpes

+0

मुझे लगता है कि ओपी आर आउटपुट और खतरे/अस्तित्व समारोह के बीच गणित कनेक्शन को याद करता है – ECII

संबंधित मुद्दे