[R] coxpath() in package glmpath

array chip arrayprofile at yahoo.com
Sun Mar 2 01:32:02 CET 2008


Hi,

I am new to model selection by coefficient shrinkage
method such as lasso. And I became particularly
interested in variable selection in Cox regression by
lasso. I became aware of the coxpath() in R package
glmpath does lasso on Cox model. I have tried the
sample script on the help page of coxpath(), but I
have difficult time understanding the output.
Therefore, I would greatly appreciate if anyone can
help me understand how to use the function.

> data(lung.data)
> attach(lung.data)
> fit.a <- coxpath(lung.data)
> print(fit.a)
Call:
coxpath(data = lung.data)
Step 1 :  karno
Step 2 :  celltype
Step 5 :  trt
Step 6 :  prior
Step 7 :  age
Step 8 :  diagtime

> summary(fit.a)
Call:
coxpath(data = lung.data)
       Df Log.p.lik       AIC       BIC
Step 1  0 -505.8840 1011.7679 1011.7679
Step 2  1 -486.0691  974.1382  977.0581
Step 5  2 -484.8520  973.7040  979.5440
Step 6  3 -483.4018  972.8036  981.5636
Step 7  4 -483.3801  974.7602  986.4401
Step 8  5 -483.2287  976.4573  991.0572
Step 9  6 -483.1112  978.2224  995.7423

first of all, why the number of steps between the
above 2 outputs are different? I confirmed with
coxph() that the numbers (log.p.lik, AIC, BIC) on the
1st row of summary(fit.a) are from a NULL Cox model,
i.e. a model with only an intercept. Then how Step 1
in
the output of summary(fit.a) is corresponding to "Step
1" in the output of print(fit.a) where it seems to
mean a model with the variable "karno"?

>predict(fit.a)
    trt celltype karno   diagtime     age       prior
1 0.0000 0.0000  0.0000 0.000e+00  0.000e+00 0.000e+00
2 0.0000 0.0076 -0.0256 0.000e+00  0.000e+00 0.000e+00
5 0.0000 0.0450 -0.0286 0.000e+00  0.000e+00 0.000e+00
6 0.1428 0.1033 -0.0330 0.000e+00  0.000e+00
-4.326e-05
7 0.1468 0.1048 -0.0332 0.000e+00 -1.043e-07
-3.506e-04
8 0.1755 0.1139 -0.0340 5.642e-06 -1.404e-03
-2.367e-03
attr(,"s")
[1] 1 2 5 6 7 8
attr(,"fraction")
[1] 0.000 0.125 0.500 0.625 0.750 0.875
attr(,"mode")
[1] "step"

Second, if we compare the output of print(fit.a) and
predict(fit.a), I can see some discrepancies. For
example, "Step 1" of print(fit.a) was variable
"karno", however, predict(fit.a) showed that the
coefficient of "karno" was still 0. The same went with
variable "trt" in "Step 5". What is the meaning of the
discrepancies? I think I probably misunderstand the
whole meaning of coefficient shrinkage in the first
place. So I would appreciate if anyone can shed some
lights.

I would also like to have any opinion on how I should
do variable selection from these output? Should I rely
on the table (log.p.lik, aic, bic) from summary fit.a)
, or should I rely on the coefficients table from
print(fit.a) to eliminate those variables with 0
coefficients at certain step?

Thank you very much for your time.



More information about the R-help mailing list