Предупреждение о прогнозировании —— новые строки данных переменные строки

#r

#r

Вопрос:

Я новичок в R. Я попытался построить модель, используя часть выборок, и спрогнозировать ответ, используя остальные выборки. Но когда я использую predict(), я получил предупреждающее сообщение:

в ‘newdata’ было 152 строки, но найденные переменные имеют 354 строки

Я искал некоторые ответы, но я все еще не могу понять T.T. Пожалуйста, помогите

 library(MASS)
data(Boston)

n <- nrow(Boston)
n_train <- round(.70*n)
train_set <- sample(n,size=n_train,replace = FALSE)

x <- cbind(Boston$lstat,log(Boston$lstat))
y <- Boston$medv

x_train <- x[train_set,]
y_train <- y[train_set] 

x_test <- x[-train_set,]
y_test <- y[-train_set]

lm_temp <- lm(y_train~x_train)
y_test_hat <- predict(lm_temp,newdata=data.frame(x_test))
  

Ответ №1:

Похоже, что R запутывается, когда вы передаете матрицу в качестве независимых переменных, но тогда для функции predict требуется фрейм данных (который представляет собой список).

Вы можете решить проблему, запустив свой lm на фрейме данных

 library(MASS)
data(Boston)

n <- nrow(Boston)
n_train <- round(.70*n)
train_set <- sample(n,size=n_train,replace = FALSE)

data <- Boston[ , c('medv', 'lstat')]
data$loglstat <- log(data$lstat)

train <- data[train_set, ]
test <- data[-train_set,]

lm_temp <- lm(medv ~ ., data = train)
y_test_hat <- predict(lm_temp,newdata=test)