我正在尝试使用 fabletools 包提取预测残差。我知道我可以使用该augment()
函数提取拟合模型残差,但我不知道它对预测值是如何工作的,并且我得到与拟合模型残差相同的结果。这是一个例子:
library(fable)
library(tsibble)
lung_deaths <- as_tsibble(cbind(mdeaths, fdeaths))
## fitted model residuals
lung_deaths %>%
dplyr::filter(index < yearmonth("1979 Jan")) %>%
model(
ets = ETS(value ~ error("M") + trend("A") + season("A"))) %>%
augment()
# A tsibble: 120 x 7 [1M]
# Key: key, .model [2]
key .model index value .fitted .resid .innov
<chr> <chr> <mth> <dbl> <dbl> <dbl> <dbl>
1 fdeaths ets 1974 Jan 901 837. 64.0 0.0765
2 fdeaths ets 1974 Feb 689 877. -188. -0.214
3 fdeaths ets 1974 Mar 827 795. 31.7 0.0399
4 fdeaths ets 1974 Apr 677 624. 53.2 0.0852
5 fdeaths ets 1974 May 522 515. 7.38 0.0144
6 fdeaths ets 1974 Jun 406 453. -47.0 -0.104
7 fdeaths ets 1974 Jul 441 431. 9.60 0.0223
8 fdeaths ets 1974 Aug 393 388. 4.96 0.0128
9 fdeaths ets 1974 Sep 387 384. 2.57 0.00668
10 fdeaths ets 1974 Oct 582 480. 102. 0.212
# ... with 110 more rows
## forecast residuals
test <- lung_deaths %>%
dplyr::filter(index < yearmonth("1979 Jan")) %>%
model(
ets = ETS(value ~ error("M") + trend("A") + season("A"))) %>%
forecast(h = "1 year")
## defining newdata
Data <- lung_deaths %>%
dplyr::filter(index >= yearmonth("1979 Jan"))
augment(test, newdata = Data, type.predict='response')
# A tsibble: 120 x 7 [1M]
# Key: key, .model [2]
key .model index value .fitted .resid .innov
<chr> <chr> <mth> <dbl> <dbl> <dbl> <dbl>
1 fdeaths ets 1974 Jan 901 837. 64.0 0.0765
2 fdeaths ets 1974 Feb 689 877. -188. -0.214
3 fdeaths ets 1974 Mar 827 795. 31.7 0.0399
4 fdeaths ets 1974 Apr 677 624. 53.2 0.0852
5 fdeaths ets 1974 May 522 515. 7.38 0.0144
6 fdeaths ets 1974 Jun 406 453. -47.0 -0.104
7 fdeaths ets 1974 Jul 441 431. 9.60 0.0223
8 fdeaths ets 1974 Aug 393 388. 4.96 0.0128
9 fdeaths ets 1974 Sep 387 384. 2.57 0.00668
10 fdeaths ets 1974 Oct 582 480. 102. 0.212
# ... with 110 more rows
任何建议将不胜感激。