今天用glmnet进行lasso的cox回归分析,再运行过程中出现了这样的错误:
> options(stringAsFactors=F)
> x <- model.matrix( ~ KDM5B + ZNF469 + FOXQ1 + MEIS3 + TEAD1 - 1, sur_pdata)
> y <- Surv(sur_data2$OS.time, 1-(sur_data2$OS-1))
> fit=glmnet(x,y,family="cox", alpha=1)
Error in coxnet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs, :
negative event times encountered; not permitted for Cox family
我在各大网站上查找问题,仍然没有解决,在重新观察数据中我发现生存时间数据包含0值,这个是一个很异常的值,正常情况下不会出现生存时间为0的情况,而且在glmnet的内置函数coxnet中主要就是对生存时间的计算出了问题,所以这里将0值去掉。
sur_data<-data.frame(OS=as.numeric(sur_pdata$OS),OS.time=as.numeric(sur_pdata$OS.time))
#expr1为离散的表达高低,exr2为连续的表达值
#去掉0
sur_data1<-sur_data[which(sur_data$OS.time!=0),]
sur_pdata<-sur_pdata[which(sur_data$OS.time!=0),]
x <- model.matrix( ~ KDM5B + ZNF469 + FOXQ1 + MEIS3 + TEAD1 - 1, sur_pdata)
y <- Surv(sur_data1$OS.time, 1-(sur_data1$OS-1))
fit=glmnet(as.matrix(x),y,family="cox")
结果很完美,没有报错。