基于R语言ARIMA模型的年度数值预测技术问询
用R语言ARIMA模型预测钱德勒市2017-2022年数值
我来帮你搞定这个预测任务,先理清楚你的需求和现有代码里的小问题,再给出完整可运行的方案:
一、历史样本数据
你提供的钱德勒市2012-2016年的数值如下:
| City_Name | Year | Values |
|---|---|---|
| Chandler City | 2012 | 19939 |
| Chandler City | 2013 | 19251 |
| Chandler City | 2014 | 19672 |
| Chandler City | 2015 | 19824 |
| Chandler City | 2016 | 19326 |
二、你尝试的代码片段
你写的代码还没完成,先贴出你提供的部分:
Age_Incomedata_1 = ts(city_aggregated[,3],start = c(2012),end = c(2016),frequency = 1000) plot(Age_Incomedata_1, xlab='Years', ylab = 'Values') library(forecast) ARIMAfit = auto.arima(log10(A...
三、完整可运行的解决方案代码
这里修正了代码里的错误,补全了预测步骤:
# 1. 构造历史数据框(如果你的city_aggregated已经存在,直接跳过这步) city_aggregated <- data.frame( City_Name = rep("Chandler City", 5), Year = 2012:2016, Values = c(19939, 19251, 19672, 19824, 19326) ) # 2. 创建时间序列对象:年度数据frequency必须设为1(你之前的1000是错误的) Age_Incomedata_1 <- ts(city_aggregated[,3], start = 2012, end = 2016, frequency = 1) # 3. 可视化原始时间序列,观察数据趋势 plot(Age_Incomedata_1, xlab='Years', ylab = 'Values', main = "Chandler City 2012-2016 Values") # 4. 加载forecast包并自动选择最优ARIMA模型 library(forecast) # 沿用你用对数转换的思路,减少数据波动 ARIMAfit <- auto.arima(log10(Age_Incomedata_1)) # 可以查看模型的详细参数信息 summary(ARIMAfit) # 5. 预测2017-2022年共6个年份的数值 forecast_result <- forecast(ARIMAfit, h = 6) # 将对数转换的预测结果还原回原始数值尺度 forecast_values <- 10^forecast_result$mean # 6. 可视化预测结果,同时展示置信区间 plot(forecast_result, xlab='Years', ylab = 'Values', main = "Chandler City Values Forecast 2017-2022") # 打印格式化的预测结果表格 cat("2017-2022年预测值(四舍五入后):\n") print(data.frame(Year = 2017:2022, Predicted_Values = round(forecast_values)))
四、关键细节解释
- 时间序列参数修正:你之前把
frequency设为1000是错误的,年度数据的frequency必须是1,否则时间序列的时间轴会完全混乱,无法正确识别年份。 - 对数转换的作用:用
log10转换数据是为了降低序列的波动幅度,让数据更平稳,帮助ARIMA模型更好地捕捉趋势。预测后一定要用10^还原,才能得到有实际意义的数值。 - 预测长度设置:2017到2022是6个年份,所以
forecast函数的h参数要设为6,确保覆盖所有需要预测的年份。
内容的提问来源于stack exchange,提问作者venkat
相关产品推荐
相关产品推荐

