Error survreg: Density function returned an invalid matrix

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Error survreg: Density function returned an invalid matrix

Israel Ortiz
Hi, I want to perform a survival analysis using survreg procedure from
survival library in R for a pareto distribution for a time variable, so I
set the new distribution using the following sintax:

    library(foreign)
    library(survival)
    library(VGAM)

    mypareto <- list(name='Pareto',
                 init= function(x, weights,parms){
                   alpha <-
length(x)/(sum(log(x))-length(x)*log(min(x)))#this is a MLE for alpha
                   c(media <-(alpha*min(x)/(alpha-1)),varianza <-
((min(x)/alpha)^2)*(alpha/(alpha-2)))},
                 density= function(x,weights) {
                   alpha <- length(x)/(sum(log(x))-length(x)*log(min(x)))
                   cdf1 <- function(x, alpha) ifelse(x > min(x) , 1 -
(min(x)/x)**alpha, 0 )
                         cdf2 <- function(x, alpha) ifelse(x > min(x),
(min(x)/x)**alpha ,0)
                         distribution <- function(x, alpha) ifelse(x >
min(x) , alpha*min(x)**alpha/(x**(alpha+1)), 0)
                         firstdev <- function(x, alpha) ifelse(x > min(x),
-(alpha+x)/x, 0)
                         seconddev <- function(x, alpha) ifelse(x > min(x),
(alpha+1)*(alpha+2)/x^2,0)
                   cbind(cdf1(x,alpha),cdf2(x, alpha),
distribution(x,alpha),firstdev(x,alpha),seconddev(x,alpha))},
                 deviance=function(x) {stop('deviance residuals not
defined')},
                 quantile= function(p, alpha) ifelse(p < 0 | p > 1, NaN,
min(x)*(1-p)**(-1/alpha)))

I tested new distribution using survregDtest and it was successful:

    survregDtest(mypareto, TRUE)
    #TRUE

But I get the following error when I use it:

    set.seed(1)
    a <- rpareto(100, 1, 6)
    b <- rnorm(100,5,1)
    c <- rep(1,100)
    base <- cbind.data.frame(a,b,c)

    mod1<-survreg(Surv(a, c) ~ b, base, dist = mypareto)

    Error in survreg.fit(X, Y, weights, offset, init = init,
    controlvals =   control,  :  Density function returned an invalid matrix

Why this happened even when the test was successful? and how can I solve
that?

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.