167 lines
5.1 KiB
Plaintext
Raw Normal View History

2025-01-12 00:52:51 +08:00
R version 3.4.1 (2017-06-30) -- "Single Candle"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> options(na.action=na.exclude) # preserve missings
> options(contrasts=c('contr.treatment', 'contr.poly')) #ensure constrast type
> library(survival)
>
> aeq <- function(x,y, ...) all.equal(as.vector(x), as.vector(y), ...)
>
> lfit2 <- survreg(Surv(time, status) ~ age + ph.ecog + strata(sex), lung)
> lfit3 <- survreg(Surv(time, status) ~ sex + (age+ph.ecog)*strata(sex), lung)
>
> lfit4 <- survreg(Surv(time, status) ~ age + ph.ecog , lung,
+ subset=(sex==1))
> lfit5 <- survreg(Surv(time, status) ~ age + ph.ecog , lung,
+ subset=(sex==2))
>
> if (exists('censorReg')) {
+ lfit1 <- censorReg(censor(time, status) ~ age + ph.ecog + strata(sex),lung)
+ aeq(lfit4$coef, lfit1[[1]]$coef)
+ aeq(lfit4$scale, lfit1[[1]]$scale)
+ aeq(c(lfit4$scale, lfit5$scale), sapply(lfit1, function(x) x$scale))
+ }
> aeq(c(lfit4$scale, lfit5$scale), lfit3$scale )
[1] TRUE
>
> #
> # Test out ridge regression and splines
> #
> lfit0 <- survreg(Surv(time, status) ~1, lung)
> lfit1 <- survreg(Surv(time, status) ~ age + ridge(ph.ecog, theta=5), lung)
> lfit2 <- survreg(Surv(time, status) ~ sex + ridge(age, ph.ecog, theta=1), lung)
> lfit3 <- survreg(Surv(time, status) ~ sex + age + ph.ecog, lung)
>
> lfit0
Call:
survreg(formula = Surv(time, status) ~ 1, data = lung)
Coefficients:
(Intercept)
6.034904
Scale= 0.7593936
Loglik(model)= -1153.9 Loglik(intercept only)= -1153.9
n= 228
> lfit1
Call:
survreg(formula = Surv(time, status) ~ age + ridge(ph.ecog, theta = 5),
data = lung)
coef se(coef) se2 Chisq DF p
(Intercept) 6.83082 0.42860 0.42860 254.0 1 3.5e-57
age -0.00783 0.00687 0.00687 1.3 1 2.5e-01
ridge(ph.ecog) -0.32032 0.08484 0.08405 14.2 1 1.6e-04
Scale= 0.738
Iterations: 1 outer, 5 Newton-Raphson
Degrees of freedom for terms= 1 1 1 1
Likelihood ratio test=18.6 on 2 df, p=9e-05
n=227 (1 observation deleted due to missingness)
> lfit2
Call:
survreg(formula = Surv(time, status) ~ sex + ridge(age, ph.ecog,
theta = 1), data = lung)
coef se(coef) se2 Chisq DF p
(Intercept) 6.27163 0.45280 0.45210 191.84 1 1.3e-43
sex 0.40096 0.12371 0.12371 10.50 1 1.2e-03
ridge(age) -0.00746 0.00675 0.00674 1.22 1 2.7e-01
ridge(ph.ecog) -0.33848 0.08329 0.08314 16.51 1 4.8e-05
Scale= 0.731
Iterations: 1 outer, 6 Newton-Raphson
Degrees of freedom for terms= 1 1 2 1
Likelihood ratio test=30 on 3 df, p=1e-06
n=227 (1 observation deleted due to missingness)
> lfit3
Call:
survreg(formula = Surv(time, status) ~ sex + age + ph.ecog, data = lung)
Coefficients:
(Intercept) sex age ph.ecog
6.273435252 0.401090541 -0.007475439 -0.339638098
Scale= 0.731109
Loglik(model)= -1132.4 Loglik(intercept only)= -1147.4
Chisq= 29.98 on 3 degrees of freedom, p= 1.39e-06
n=227 (1 observation deleted due to missingness)
>
>
> xx <- pspline(lung$age, nterm=3, theta=.3)
> xx <- matrix(unclass(xx), ncol=ncol(xx)) # the raw matrix
> lfit4 <- survreg(Surv(time, status) ~xx, lung)
> lfit5 <- survreg(Surv(time, status) ~age, lung)
>
> lfit6 <- survreg(Surv(time, status)~pspline(age, df=2), lung)
>
> lfit7 <- survreg(Surv(time, status) ~ offset(lfit6$lin), lung)
>
> lfit4
Call:
survreg(formula = Surv(time, status) ~ xx, data = lung)
Coefficients:
(Intercept) xx1 xx2 xx3 xx4 xx5
13.551290 -7.615741 -7.424565 -7.533378 -7.571272 -14.527489
Scale= 0.755741
Loglik(model)= -1150.1 Loglik(intercept only)= -1153.9
Chisq= 7.52 on 5 degrees of freedom, p= 0.185
n= 228
> lfit5
Call:
survreg(formula = Surv(time, status) ~ age, data = lung)
Coefficients:
(Intercept) age
6.88712062 -0.01360829
Scale= 0.7587515
Loglik(model)= -1151.9 Loglik(intercept only)= -1153.9
Chisq= 3.91 on 1 degrees of freedom, p= 0.0479
n= 228
> lfit6
Call:
survreg(formula = Surv(time, status) ~ pspline(age, df = 2),
data = lung)
coef se(coef) se2 Chisq DF p
(Intercept) 6.5918 0.63681 0.41853 107.15 1.00 4.1e-25
pspline(age, df = 2), lin -0.0136 0.00687 0.00687 3.94 1.00 4.7e-02
pspline(age, df = 2), non 0.78 1.06 4.0e-01
Scale= 0.756
Iterations: 4 outer, 12 Newton-Raphson
Theta= 0.926
Degrees of freedom for terms= 0.4 2.1 1.0
Likelihood ratio test=5.2 on 1.5 df, p=0.04 n= 228
> signif(lfit7$coef,6)
(Intercept)
1.47899e-09
>
> proc.time()
user system elapsed
1.959 0.081 2.236