我正在研究一些涉及预测未来值的问题。我需要在将来的某个时候得到一个汇总的总数。
我的问题是:预测未来价值的最佳方法是什么?
首先,我想提一下,有成千上万个不同的点,所以我打算使用 plyr 或 dplyr 包。
我有两种方法可以做到这一点:
- 时间序列预测
- 线性回归
此外,在任何人跳起来说“你不能用线性回归做外推!”之前 我理解这一点以及它成为问题的原因。但是,在下面的示例中,为什么会出现问题?
这是我制作的一些数据的示例,它模仿了一些数据。x 值是月份。
y=c(100,90,70,20,15,11,19,17,10,10,12,14,13,14,11,10,9,7,5,1,0,1,0,0)
x=1:length(y)
plot(y~x)
plot(cumsum(y)~x)
plot(forecast(csy.ts, h=60))
plot(forecast(y.ts, h=60))
plot(cumsum(y)~log(x))
y.ts=ts(y,f=12,s=1)
csy.ts=ts(cumsum(y),f=12,s=1)
# I arbitrarily chose 5 additional years for the forecasting
y.ts_fcast=forecast(y.ts,60)$mean
fcast_total=cumsum(c(y,y.ts_fcast))
max(fcast_total)
# Gives 459
csy.ts_fcast=forecast(csy.ts,60)$mean
csy.ts_fcast[60]
# Gives 457
fit=lm(cumsum(y)~log(x))
fit$coef[2]*log(84)+fit$coef[1]
# Gives 616
直观地说,459 应该是正确的数字。但是,为什么回归是“错误的”?对于上述外推是回归的问题,我的理解是这通常是一个问题,因为在训练集中未解释的外推范围内的数据可能会出现意外的“下降”。但是,cumsum(y) 数据看起来像一条非常好的对数曲线(它也一直在增加),所以我不担心任何“下降”(即使是尖峰似乎也很少见,即使它确实尖峰,也只是轻微的cumsum(y) 数据的百分比,并且看起来不像这样的异常值)。
在输入此内容时,我碰巧看到另一篇提到违反独立性的帖子,我觉得这很可能是这里的问题之一。我只是不确定为什么。