Почему количество наблюдений уменьшается при использовании model.matrix в регрессии гребня?
Я использую пакет glmnet в R для регрессии гребня. Я примерил набор данных Hitters из пакета ISLR. Проблема в том, что когда я использую model.matrix для создания матрицы проекта, количество наблюдений уменьшается по неизвестной причине. Это код.
library(ISLR)
library(glmnet)
data("Hitters")
set.seed(1)
train=sample(1:nrow(Hitters), nrow(Hitters)/2)
test=(-train)
train.data = Hitters[train,]
test.data = Hitters[test,]
train.x=model.matrix(Salary~.,train.data)[,-1]
train.y=train.data$Salary
В коде я пытаюсь предсказать переменную зарплаты, используя все остальные переменные. Train.data имеет 161 наблюдений, в то время как train.x имеет 131. Я не понимаю, почему это произойдет, и буду признателен за любую помощь.
1 ответ
Решение
У тебя есть NA
значения в поле Зарплата.
Вы можете определить проблему следующим образом:
missing.players <- setdiff(rownames(train.data), rownames(train.x))
train.data[missing.players, ]