[R] Error survreg: Density function returned an an invalid matrix

Therneau, Terry M., Ph.D. therneau at mayo.edu
Wed Nov 4 14:52:35 CET 2015

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

The survreg routine fits location-scale distributions such that (t(y) - Xb)/s ~ F, where t 
is an optional transformation, F is some fixed distribution and X is a matrix of 
covariates.  For any distribution the questions to ask before trying to add the 
distribution to survreg are
   - can it be written in a location-scale form?
   - if so, how do the parameters of the distribution map to the location (Xb) and scale (s).

In fitting data we normally have per-subject location (X b) but an intercept-only model is 
of course possible.

If y is Weibull then log(y) fits into the framework, which is how survreg fits it.  The 
transformation of parameters location and scale parameters for log(y) back to the usual 
Weibull parameterization for y often trips people up (see comments in the Examples section 
of ?survreg).

The log of a Pareto can be written in this form (I think?).  The two parameters are the 
scale a and lower limit b, with survival function of S(x)= (b/x)^a, for x >= b.  If y = 
log(x) the survival function for y is
S(y) = (b/exp(y))^a = exp[-(y - log(b))/(1/a)], which has location log(b) and scale 1/a. 
But even if I am correct the discontinuity at b will cause the underlying Newton-Raphson 
method to fail.

  Terry Therneau

More information about the R-help mailing list