2017-03-17 203 views
0

提取从glmnet对象

基线风险函数H0(t)的我想知道在时刻t >> H风险函数(T,X)= H 0(t)的EXP [Σβ1 *Ⅺ]。如何从R中的glmnet对象中提取基线危险函数h0(t)?如何从R中的glmnet对象中提取基线危险函数h0(t)?

我知道的是,Survival Packages中的函数“basehaz()”只能从coxph对象中提取基线危险函数。

我还发现了一个功能,glmnet.basesurv(time, event, lp, times.eval = NULL, centered = FALSE)。但是,当我尝试使用此功能时,出现错误。

Error: could not find function "glmnet.basesurv"

下面是我的代码,使用glmnet来拟合cox模型并获得所选变量的系数。是否有可能从这个glmnet对象中获得基线危险函数h0(t)?

代码

# Split data into training data and testing data 
    set.seed(101) 
    train_ratio = 2/3 
    sample <- sample.int(nrow(x), floor(train_ratio*nrow(x)), replace = F) 
    x.train <- x[sample, ] 
    x.test <- x[-sample, ] 
    y.train <- y[sample, ] 
    y.test <- y[-sample, ] 

    surv_obj <- Surv(y.train[,1],y.train[,2]) 

    # 
    my_alpha = 0.5 

    fit = glmnet(x = x.train, y = surv_obj, family = "cox",alpha = my_alpha) # fit the model with elastic net method 
    plot(fit,xvar="lambda", main="cox model coefficient paths(glmnet.fit)\n\n") # Plot the paths for the fit 
    fit 

    # cross validation to find out best lambda 
    cv_fit = cv.glmnet(x = x.train,y = surv_obj , family = "cox",nfolds = 10,alpha = my_alpha) 

    tencrossfit <- cv_fit$glmnet.fit 
    plot(cv_fit, main="Cross-validated Deviance(10 folds cv.glmnet.fit)\n\n") 

    plot(tencrossfit, main="cox model coefficient paths(10 folds cv.glmnet.fit)\n\n") 

    max(cv_fit$cvm) 
    summary(cv_fit$cvm) 
    cv_fit$lambda.min 
    cv_fit$lambda.1se 

    coef.min = coef(cv_fit, s = "lambda.1se") 

    pred_min_value2 <- predict(cv_fit, s=cv_fit$lambda.min, newx=x.test,type="link") 

我真的很感激任何帮助,您可以提供。

回答

0

glmnet.basesurv函数是hdnom程序包(可在CRAN上获得)的一部分,而不是glmnet本身。所以安装它,然后调用它。

+0

谢谢。我安装了hdnom软件包,但仍然无法正常工作。 glmnet.basesurv(time,event,pred_min_value2,times.eval = 30,居中= FALSE) 错误:无法找到函数“glmnet.basesurv” 我需要安装任何其他软件包? 奇怪的是,我可以从这个网页找到函数glmnet.basesurv(https://www.rdocumentation.org/packages/hdnom/versions/4.6)。 –