首页 > 解决方案 > R 中的线性回归:警告:“newdata”有 1 行,但发现的变量有 392 行

问题描述

我试图预测 R 中的单个变量,我已经尝试了所有方法,但仍然没有结果。

我正在使用自动数据,我建立了一个这样的模型


my_acc<-auto_df$acceleration
my_horse<-auto_df$horsepower
mydata <- data.frame(my_acc, my_horse )
car_linear_regression <- lm(my_acc ~ my_horse, mydata )

然后我继续,我想预测以下内容:

与93.5acceleration相关的预测值是多少?horsepower相关的 99% 置信区间和预测区间是多少?

我使用以下代码并收到警告

警告:“newdata”有 1 行,但找到的变量有 392 行

但也打印出数据框中的所有行,而我应该只得到一个。

有人可以帮忙吗?


predict(car_linear_regression,newdata = data.frame(horsepower = 93.5))

标签: rregression

解决方案


这将有助于使示例可重现,但我做了一些工作并且能够重现错误:

library(ISLR)
auto_df = Auto

my_acc<-auto_df$acceleration
my_horse<-auto_df$horsepower
mydata <- data.frame(my_acc, my_horse )
car_linear_regression <- lm(my_acc ~ my_horse, mydata )

predict(car_linear_regression,newdata = data.frame(horsepower = 93.5))

问题在于您的模型中没有名为horsepower. 您调用了它my_horse,因此以下工作:

predict(car_linear_regression,newdata = data.frame(my_horse = 93.5))

作为旁注,我不会创建单独的变量,而是将回归模型称为:

car_linear_regression <- lm(acceleration ~ horsepower, data=auto_df )

那么你最初的预测就会奏效。


推荐阅读