I found the flexsurv
package which implements a generalized gamma distribution.
For Weibull distribution the estimates from survreg
and flexsurvreg
are similar (but note the different parametrization:
require(survival)
summary(survreg(Surv(log(time), status) ~ ph.ecog + sex, data = lung, dist='weibull'))
Call:
survreg(formula = Surv(log(time), status) ~ ph.ecog + sex, data = lung,
dist = "weibull")
Value Std. Error z p
(Intercept) 1.7504 0.0364 48.13 0.00e+00
ph.ecog -0.0660 0.0158 -4.17 3.10e-05
sex 0.0763 0.0237 3.22 1.27e-03
Log(scale) -1.9670 0.0639 -30.77 6.36e-208
Scale= 0.14
Weibull distribution
Loglik(model)= -270.5 Loglik(intercept only)= -284.3
Chisq= 27.62 on 2 degrees of freedom, p= 1e-06
Number of Newton-Raphson Iterations: 6
n=227 (1 observation deleted due to missingness)
require(flexsurv)
flexsurvreg(Surv(log(time), status) ~ ph.ecog + sex, data = lung, dist='weibull')
Call:
flexsurvreg(formula = Surv(log(time), status) ~ ph.ecog + sex, data = lung, dist = "weibull")
Maximum likelihood estimates:
est L95% U95%
shape 7.1500 6.3100 8.1000
scale 5.7600 5.3600 6.1800
ph.ecog -0.0660 -0.0970 -0.0349
sex 0.0763 0.0299 0.1230
N = 227, Events: 164, Censored: 63
Total time at risk: 1232.1
Log-likelihood = -270.5, df = 4
AIC = 549
With flexsurvreg we can fit a generalized gamma distribution to this data:
flexsurvreg(Surv(log(time), status) ~ ph.ecog + sex, data = lung, dist='gengamma')
Call:
flexsurvreg(formula = Surv(log(time), status) ~ ph.ecog + sex, data = lung, dist = "gengamma")
Maximum likelihood estimates:
est L95% U95%
mu 1.7800 1.7100 1.8600
sigma 0.1180 0.0971 0.1440
Q 1.4600 1.0200 1.9100
ph.ecog -0.0559 -0.0853 -0.0266
sex 0.0621 0.0178 0.1060
N = 227, Events: 164, Censored: 63
Total time at risk: 1232.1
Log-likelihood = -267.57, df = 5
AIC = 545.15
The loglogistic distribution is (in contrast to survreg
) not build in, but can be easily custumized (see examples of flexsurvreg
).
I haven't tested it too much, but flexsurv
seems to be a good alternative to survival
.