Какой формат входов x и y ожидает R glmnet? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть набор данных, который выглядит следующим образом:

dataset

Меня интересует наилучшая возможная мультилинейная регрессия, поэтому я пытаюсь использовать этот метод LASSO.

R, которая обозначает доходность фондового рынка, должна быть зависимой переменной, тогда как все остальные (кроме D / Date и P / Price) являются независимыми переменными.

Вот что я попробовал:

library(Matrix)
library(foreach)
library(glmnet)

trainX <- spxdata[c(4:11)]
trainY <- spxdata[c(3)]

CV = cv.glmnet(x = trainX, y = trainY, alpha = 1, nlambda = 100)

и это дает мне следующее сообщение об ошибке:

Error in storage.mode(y) <- "double" : (list) object cannot be coerced to type 'double'

Я не привык к R и использую его редко, поэтому не знаю, как решить эту проблему. Я полагаю, это как-то связано с форматом моего подмножества trainX и trainY, но что именно я здесь сделал неправильно?

1 Ответ

0 голосов
/ 30 апреля 2018

Матрица предиктора должна быть матрицей , а не фреймом данных, который у вас есть. Точно так же ответом должен быть вектор, а не фрейм данных из одного столбца.

Вы можете получить их с

trainX <- as.matrix(spxdata[4:11])
trainY <- spxdata[[3]]                  # not [3]

Но в целом вы можете избежать этих и других проблем, используя мой пакет glmnetUtils , который реализует интерфейс формулы для glmnet. Это позволяет использовать его так же, как и glm или rpart или другие функции моделирования.

...