După postarea despre valorile exacte Shapley pentru explicabilitatea seriilor temporale, această postare ilustrează un exemplu de utilizare a analizei de sensibilitate pentru a explica previziunile seriilor temporale, pe baza ahead::dynrmf model şi regresori externi. Ce este analiza de sensibilitate in acest context? Este vorba despre evaluarea impactului modificărilor regresorilor externi asupra prognozei serii de timp.
Postarea folosește ahead::dynrmf_sensi funcția pentru a calcula sensibilitățile și ahead::plot_dynrmf_sensitivity funcția de reprezentare grafică a rezultatelor.
Mai întâi, instalați pachetul:
devtools::install_github("Techtonique/ahead")
Apoi, rulați următorul cod:
# devtools::install_github("Techtonique/ahead")
# install.packages(c("fpp2", "e1071", "patchwork"))
library(ahead)
library(fpp2)
library(patchwork)
library(e1071)
#' # Example 1: US Consumption vs Income
sensitivity_results_auto <- ahead::dynrmf_sensi(
y = fpp2::uschange(, "Consumption"),
xreg = fpp2::uschange(, "Income"),
h = 10
)
plot1 <- ahead::plot_dynrmf_sensitivity(sensitivity_results_auto,
title = "Sensitivity of Consumption to Income (Ridge)",
y_label = "Effect (ΔConsumption / ΔIncome)")
#' # Example 1: US Consumption vs Income
sensitivity_results_auto_svm <- ahead::dynrmf_sensi(
y = fpp2::uschange(, "Consumption"),
xreg = fpp2::uschange(, "Income"),
h = 10,
fit_func = e1071::svm # additional parameter passed to ahead::dynrmf
)
plot2 <- ahead::plot_dynrmf_sensitivity(sensitivity_results_auto_svm,
title = "Sensitivity of Consumption to Income (SVM)",
y_label = "Effect (ΔConsumption / ΔIncome)")
# Example 2: TV Advertising vs Insurance Quotes
sensitivity_results_tv <- ahead::dynrmf_sensi(
y = fpp2::insurance(, "Quotes"),
xreg = fpp2::insurance(, "TV.advert"),
h = 8
)
plot3 <- ahead::plot_dynrmf_sensitivity(sensitivity_results_tv,
title = "Sensitivity of Insurance Quotes to TV Advertising (Ridge)",
y_label = "Effect (ΔQuotes / ΔTV.advert)")
sensitivity_results_tv_svm <- ahead::dynrmf_sensi(
y = fpp2::insurance(, "Quotes"),
xreg = fpp2::insurance(, "TV.advert"),
h = 8,
fit_func = e1071::svm # additional parameter passed to ahead::dynrmf
)
plot4 <- ahead::plot_dynrmf_sensitivity(sensitivity_results_tv_svm,
title = "Sensitivity of Insurance Quotes to TV Advertising (SVM)",
y_label = "Effect (ΔQuotes / ΔTV.advert)")
(plot1+plot2)
(plot3+plot4)



