使用ggplot绘制线性回归预测值时出现‘object 'predicted' not found’错误求助
使用ggplot绘制线性回归预测值时出现‘object 'predicted' not found’错误求助
嘿,我看到你在用ggplot结合线性回归画预测值的时候碰到了这个报错,别慌,这问题其实很好解决,咱一步步来捋清楚:
问题根源
你写的ggplot代码里用到了predicted这个变量,但你的train_data数据集里根本没这个列呀!你虽然训练了线性回归模型,但还没把模型生成的预测值计算出来并加到数据集里,R自然找不到它啦。
解决步骤
1. 先给训练数据集添加预测值列
以你训练的linear_reg1(以relative_humidity为预测因子的模型)为例,用predict()函数生成预测值,然后通过dplyr的mutate()把它加到train_data里:
# 计算linear_reg1的预测值并添加到训练集 train_data <- train_data %>% mutate(predicted = predict(linear_reg1, newdata = train_data))
要是你想用其他模型(比如linear_reg2),记得把代码里的linear_reg1换成对应的模型对象就行。
2. 修正后的ggplot代码
现在数据集里已经有predicted列了,直接用你原来的ggplot代码就能正常运行啦:
ggplot(train_data, aes(x= relative_humidity, y= precip))+ geom_smooth(method='lm', se=FALSE, color='red')+ geom_segment(aes(xend= relative_humidity, yend = predicted), alpha=.2)+ geom_point()+ geom_point(aes(y = predicted), shape=1)+ theme_bw()
额外小提醒
- 你代码里有个小疏漏:
install.packages('ggplot')应该改成install.packages('ggplot2'),不过你后面也加载了正确的ggplot2包,这个不影响运行,但最好统一起来哦。 - 还有一行
str(subset_data1)是在subset_data1定义之前写的,会报“对象未找到”的警告,要么删掉这行,要么把它移到subset_data1 <- setNames(...)之后。 - 如果之后要画多个模型的预测图,建议给每个模型的预测值列起不同的名字,比如
predicted_rh、predicted_temp,避免混淆。
备注:内容来源于stack exchange,提问作者HAJ
相关产品推荐
相关产品推荐

