r生存软件包中的岭回归错误

问题描述 投票:0回答:1

我正在尝试在大型数据集上的R中使用生存包。当我尝试在ridge函数中输入很多变量时,出现错误。奇怪的是,这取决于变量名的长度,但是即使使用非常短的变量名(即X1..X200),在收到此奇怪的错误消息之前,输入的变量也不能超过100个:

if(any(ord> 1))stop(“惩罚性条款不能在互动中”的错误:):在需要TRUE / FALSE的地方缺少值

这里是一个代码示例,它将产生此错误:

library(survival)

# Create a test data frame with random data (200 predictors)
test.data <-data.frame(outcome=rbinom(1000,1,0.1),
                       time=runif(1000,0,1000),replicate(200,rnorm(1000)))

# Create a string with ridge regression formula for 100 predictors
ridge.formula.100 <- paste0("Surv(time,outcome) ~ ridge(",
                            paste(paste0("X",1:100),collapse=","),",theta=1)")

# Run ridge regression with 100 predictors
m1 <- coxph(as.formula(ridge.formula.100),data=test.data)
summary(m1) # Yay it works!

# Create a string with ridge regression formula for 200 predictors
ridge.formula.120 <- paste0("Surv(time,outcome) ~ ridge(",
                            paste(paste0("X",1:120),collapse=","),",theta=1)")

# Run ridge regression with 120 predictors
m2 <- coxph(as.formula(ridge.formula.120),data=test.data) # Gives error
# Fails with error above

关于我在做什么错的任何提示?重要的是,如果变量名较长,则可以在脊中输入更少的变量。]​​>

非常感谢!

我正在尝试在大型数据集上的R中使用生存包。当我尝试在ridge函数中输入很多变量时,出现错误。奇怪的是,这取决于...

r statistics survival-analysis
1个回答
0
投票

尝试将所有变量放入矩阵allvars <- as.matrix(test.data[,3:ncol(test.data)])中,然后在公式ridge.formula <- as.formula(paste("Surv(time,outcome) ~ ridge(allvars,theta=1)"))中使用它。现在,调用m2 = coxph(ridge.formula,data=test.data)不会给出该错误。

© www.soinside.com 2019 - 2024. All rights reserved.