问题描述
我觉得这里有些奇怪。例如,以下代码为残差和创新提供了相同的值:
fit <- us_change %>%
model(ARIMA(Consumption ~ Income)) %>%
augment()
augment()
函数似乎只提取了创新值,并将其用于回归中的残差。当我们使用 residuals()
提取残差和创新时可以看到这一点:
bind_rows(
`Regression Errors` = as_tibble(residuals(fit,type = "regression")),`ARIMA Errors` = as_tibble(residuals(fit,type = "innovation")),.id = "type"
)
那么残差和创新应该是不同的。
解决方法
.resid
提供的 augment()
列包含响应残差,而不是回归残差。我已更新文档以澄清这一点:https://github.com/tidyverts/fabletools/commit/c0efd7166bca06450d7b18d3d0530fdeac67cce7
响应残差 (.resid
) 是对原始响应变量的反向转换预测的误差。创新残差 (.innov
) 是模型的误差(可能是不同的、转换的响应变量)。由于您的模型不转换数据,因此响应残差 (.resid
) 和创新残差 (.innov
) 相同。
目前无法使用 augment()
函数获得回归残差(执行回归后,应用 ARIMA 过程之前的残差)。这是将来会很高兴的事情。