R语言实现汽车车型年份平均油耗的未来时间序列平均值预测
错误根因
你的线性回归公式方向完全写反了。线性回归语法规则为 要预测的目标变量 ~ 用来预测的特征变量,你要实现的是根据年份预测平均油耗,但你写的公式是 Model ~ Highway_mpg + City_mpg,变成了用油耗预测年份,模型运行predict时自然要求输入油耗特征,找不到就会报错。
正确实现步骤
1. 计算历史年份的平均油耗
首先按车型年份聚合,计算每年的高速、城市平均油耗:
library(dplyr) # 按年份聚合求平均油耗 df_avg <- df %>% group_by(Model) %>% summarise( avg_highway = mean(Highway_mpg), avg_city = mean(City_mpg) )
如果你不想用dplyr,也可以用base R实现:
df_avg <- aggregate(cbind(Highway_mpg, City_mpg) ~ Model, data = df, FUN = mean) colnames(df_avg) <- c("Model", "avg_highway", "avg_city")
2. 拟合回归模型
分别拟合高速油耗、城市油耗和年份的线性回归模型:
# 高速油耗预测模型 highway_mod <- lm(avg_highway ~ Model, data = df_avg) # 城市油耗预测模型 city_mod <- lm(avg_city ~ Model, data = df_avg)
3. 预测2013-2016年的平均油耗
构造预测用的年份数据,调用predict得到预测值:
# 构造待预测的年份数据集 pred_df <- data.frame(Model = 2013:2016) # 预测平均油耗 pred_df$avg_highway <- predict(highway_mod, newdata = pred_df) pred_df$avg_city <- predict(city_mod, newdata = pred_df)
4. 合并历史数据和预测结果
得到最终完整的结果表:
final_result <- rbind(df_avg, pred_df)
输出的final_result就是你需要的包含历史平均和未来预测值的表格。
内容的提问来源于stack exchange,提问作者k3b
相关产品推荐
相关产品推荐

