预测警告-----新数据行<>变量行

时间:2016-10-12 19:24:35

标签: 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 个答案:

答案 0 :(得分:2)

当你将矩阵作为自变量传递时,R看起来很混乱,但是预测函数需要一个数据框(这是一个列表)。

您可以通过在数据框上运行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)