我是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))
答案 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)