Conformalized Forecasting using Machine Leaning models 2

(res2 <- ahead::mlf(AirPassengers, h=25L, lags=15L, 
type_pi="kde", B=250L))
##          Point Forecast    Lo 95    Hi 95
## Jan 1961       460.2157 385.1324 570.6067
## Feb 1961       423.2877 346.7835 513.9668
## Mar 1961       448.7656 376.4624 556.3026
## Apr 1961       493.9682 419.8559 613.2063
## May 1961       529.5625 455.0006 626.5372
## Jun 1961       584.2230 504.3983 694.1163
## Jul 1961       681.5042 614.2395 792.7455
## Aug 1961       658.4954 585.7598 761.6206
## Sep 1961       561.1623 479.9491 675.5470
## Oct 1961       502.7355 428.7241 604.7186
## Nov 1961       430.8452 360.5704 536.2181
## Dec 1961       469.5734 384.0792 575.6052
## Jan 1962       494.5805 418.0330 597.7645
## Feb 1962       453.7158 378.8465 558.7620
## Mar 1962       476.5171 397.5826 562.2505
## Apr 1962       531.2383 463.2526 627.2389
## May 1962       572.0854 499.1660 663.0207
## Jun 1962       637.5260 565.4585 756.0907
## Jul 1962       742.6750 673.1668 831.4791
## Aug 1962       715.1415 638.6169 806.6096
## Sep 1962       616.7858 538.2935 725.0534
## Oct 1962       538.8315 466.9625 641.0818
## Nov 1962       473.2208 404.3596 583.5686
## Dec 1962       500.7060 436.4639 622.1696
## Jan 1963       529.7078 451.1332 639.8503
(res3 <- ahead::mlf(fdeaths, h=25L, lags=15L, 
type_pi="kde", B=250L))
##          Point Forecast    Lo 95     Hi 95
## Jan 1980       738.3803 483.7579  972.2429
## Feb 1980       768.1488 490.0596 1042.3561
## Mar 1980       689.2663 429.2867  939.5061
## Apr 1980       594.7102 364.3839  853.5802
## May 1980       512.1141 261.3169  771.2413
## Jun 1980       450.9838 181.8641  707.9208
## Jul 1980       411.5862 168.8262  666.4668
## Aug 1980       418.3016 171.3724  660.5458
## Sep 1980       405.2975 112.8757  668.1534
## Oct 1980       433.0452 192.5523  677.9280
## Nov 1980       500.3941 243.2378  738.3525
## Dec 1980       605.3976 347.5227  882.5821
## Jan 1981       680.0974 446.8777  952.9346
## Feb 1981       725.2946 470.9961  989.1541
## Mar 1981       673.6532 420.7839  972.2387
## Apr 1981       602.6292 360.7824  862.0861
## May 1981       510.0039 272.9706  756.4047
## Jun 1981       479.3524 208.7614  743.0630
## Jul 1981       428.7199 178.0314  688.9748
## Aug 1981       413.2095 163.8202  694.0200
## Sep 1981       424.7080 190.7713  677.4749
## Oct 1981       450.2358 161.2617  724.0660
## Nov 1981       538.1649 276.3705  798.1206
## Dec 1981       586.5090 362.7278  844.2893
## Jan 1982       650.1907 417.8179  910.6355
par(mfrow=c(1, 2))
plot(res2)
plot(res3)

fit_func <- function(x, y, ...)
{
  df <- data.frame(y=y, x) # naming of columns is mandatory for `predict`
  colnames(df) <- c("y", paste0("X", seq_len(ncol(x))))
  ranger::ranger(y ~ ., data=df, ...)
}

predict_func <- function(obj, newx)
{
  colnames(newx) <- paste0("X", seq_len(ncol(newx))) # mandatory, linked to df in fit_func
  predict(object=obj, data=newx)$predictions # only accepts a named newx
}

(res2 <- ahead::mlf(AirPassengers, h=25L, lags=15L, fit_func=fit_func, predict_func=predict_func, type_pi="kde", B=250L))
##          Point Forecast    Lo 95    Hi 95
## Jan 1961       456.3789 318.5626 666.9887
## Feb 1961       461.7948 333.2885 647.5682
## Mar 1961       463.5282 342.0107 677.1755
## Apr 1961       500.1423 367.7418 722.6364
## May 1961       542.4850 407.8611 738.2748
## Jun 1961       557.2213 417.5466 758.8596
## Jul 1961       559.2849 435.9916 768.7281
## Aug 1961       543.9938 415.6735 741.2660
## Sep 1961       524.9379 386.7883 737.2095
## Oct 1961       506.2585 379.4496 711.6281
## Nov 1961       463.2249 332.9924 664.7892
## Dec 1961       457.5622 315.2344 660.7715
## Jan 1962       490.7141 356.9024 690.1009
## Feb 1962       508.9902 370.8140 713.6041
## Mar 1962       514.5357 380.0794 679.2279
## Apr 1962       532.3639 410.9114 709.3610
## May 1962       538.7488 425.0603 708.6190
## Jun 1962       536.3641 412.5097 746.1029
## Jul 1962       541.9387 424.3131 714.7611
## Aug 1962       530.6778 398.5910 704.5319
## Sep 1962       531.4149 394.9306 733.3889
## Oct 1962       521.6829 388.4511 703.1259
## Nov 1962       508.1580 390.2009 708.5920
## Dec 1962       501.9020 386.3162 730.0746
## Jan 1963       520.3460 383.0088 731.2567
(res3 <- ahead::mlf(fdeaths, h=25L, lags=15L, fit_func=fit_func, predict_func=predict_func, type_pi="kde", B=250L))
##          Point Forecast    Lo 95    Hi 95
## Jan 1980       699.5128 513.9370 766.6191
## Feb 1980       706.7372 536.5223 778.5103
## Mar 1980       643.2606 462.0299 717.6746
## Apr 1980       566.5189 458.5590 637.2802
## May 1980       489.9280 346.3819 563.2270
## Jun 1980       439.2002 348.0748 517.4427
## Jul 1980       416.6216 240.4183 496.3519
## Aug 1980       409.8647 314.2224 491.4099
## Sep 1980       408.6902 221.3606 488.2713
## Oct 1980       427.2051 259.6464 511.6554
## Nov 1980       488.9813 318.0214 561.4720
## Dec 1980       611.0195 501.6107 684.8846
## Jan 1981       642.9757 526.5768 722.9290
## Feb 1981       652.4744 486.8568 736.3078
## Mar 1981       628.5840 534.8260 699.3343
## Apr 1981       550.1154 437.1427 630.3685
## May 1981       464.3170 360.5079 540.6060
## Jun 1981       443.7953 349.0024 509.9642
## Jul 1981       418.5928 268.9856 497.9665
## Aug 1981       411.8030 250.1095 490.1978
## Sep 1981       418.0032 247.7746 492.9707
## Oct 1981       435.1195 267.7688 527.7576
## Nov 1981       530.0899 429.4134 606.1159
## Dec 1981       610.5985 505.2038 690.9582
## Jan 1982       632.5582 524.3089 717.4256
par(mfrow=c(1, 2))
plot(res2)
plot(res3)