Ошибка с регрессией гребня в пакете выживания r - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь использовать пакет выживания в R для большого набора данных. Когда я пытаюсь ввести множество переменных в функцию ridge, я получаю сообщение об ошибке. Как ни странно, это зависит от длины имен переменных, но даже с очень короткими именами переменных (например, X1..X200) я не могу ввести более 100 переменных, пока не получу это странное сообщение об ошибке:

Ошибка в остановке if (any (ord> 1)) («Условия наказания не могут быть во взаимодействии»): пропущенное значение, где требуется ИСТИНА / ЛОЖЬ

Вот пример кода, который сгенерирует эту ошибку:

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

Есть какие-нибудь намеки на то, что я делаю не так? Важно отметить, что если имена переменных длиннее, в гребень можно ввести еще меньше переменных.

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...