Dự báo time serial qua machine learning
library(timetk)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(lubridate) # lấy hàm ymd()
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(recipes) # lấy hàm recipe()
##
## Attaching package: 'recipes'
## The following object is masked from 'package:stats':
##
## step
library(parsnip) # lấy hàm set_engine()
library(workflows)
library(yardstick) # lấy hàm metrics()
## For binary classification, the first factor level is assumed to be the event.
## Use the argument `event_level = "second"` to alter this as needed.
##
## Attaching package: 'yardstick'
## The following object is masked from 'package:forecast':
##
## accuracy
dulieu %>% select(Date, Close) %>% rename(Ngay = Date, GiaBCT = Close) ->dlBCT
#dlBCT <-ts(dlBCT, start=c(2015,01,01), frequency=365)
#dlBCT <-tibble(dlBCT)
head(dlBCT)
## Ngay GiaBCT
## 1 2015-01-01 314.249
## 2 2015-01-02 315.032
## 3 2015-01-03 281.082
## 4 2015-01-04 264.195
## 5 2015-01-05 274.474
## 6 2015-01-06 286.189
#dlBCT %>% plot_time_series(Ngay, GiaBCT, .interactive = interactive)
dltrain <-dlBCT %>% filter(Ngay <= ymd("2021-12-31"))
dltest <-dlBCT %>% filter(Ngay > ymd("2021-12-31"))
dim(dltrain)
## [1] 2557 2
head(dltrain)
## Ngay GiaBCT
## 1 2015-01-01 314.249
## 2 2015-01-02 315.032
## 3 2015-01-03 281.082
## 4 2015-01-04 264.195
## 5 2015-01-05 274.474
## 6 2015-01-06 286.189
dim(dltest)
## [1] 212 2
head(dltest)
## Ngay GiaBCT
## 1 2022-01-01 47686.81
## 2 2022-01-02 47345.22
## 3 2022-01-03 46458.12
## 4 2022-01-04 45897.57
## 5 2022-01-05 43569.00
## 6 2022-01-06 43160.93
# Đăng ký thời gian : Add time series signature
recipe_spec_timeseries <- recipe(GiaBCT ~ Ngay, data = dltrain) %>% step_timeseries_signature(Ngay)
#bake(prep(recipe_spec_timeseries), new_data = dltrain)
# Giải mã đăng ký
recipe_spec_final <- recipe_spec_timeseries %>%
step_rm(Ngay) %>%
step_rm(contains("iso"),
contains("second"), contains("minute"), contains("hour"),
contains("am.pm"), contains("xts")) %>%
step_normalize(contains("index.num"), Ngay_year) %>%
step_interact(~ Ngay_month.lbl * Ngay_day) %>%
step_interact(~ Ngay_month.lbl * Ngay_mweek) %>%
step_interact(~ Ngay_month.lbl * Ngay_wday.lbl * Ngay_yday) %>%
step_dummy(contains("lbl"), one_hot = TRUE)
#bake(prep(recipe_spec_final), new_data = dltrain)
# Tạo mô hình hồi quy
model_spec_glmnet <- linear_reg(mode = "regression", penalty = 10, mixture = 0.7) %>% set_engine("glmnet")
# Tạo quy trình làm việc
workflow_glmnet <- workflow() %>%
add_recipe(recipe_spec_final) %>%
add_model(model_spec_glmnet)
workflow_glmnet
## ══ Workflow ════════════════════════════════════════════════════════════════════
## Preprocessor: Recipe
## Model: linear_reg()
##
## ── Preprocessor ────────────────────────────────────────────────────────────────
## 8 Recipe Steps
##
## • step_timeseries_signature()
## • step_rm()
## • step_rm()
## • step_normalize()
## • step_interact()
## • step_interact()
## • step_interact()
## • step_dummy()
##
## ── Model ───────────────────────────────────────────────────────────────────────
## Linear Regression Model Specification (regression)
##
## Main Arguments:
## penalty = 10
## mixture = 0.7
##
## Computational engine: glmnet
# Chạy training
workflow_trained <- workflow_glmnet %>% fit(data = dltrain)
## Warning: `terms_select()` was deprecated in recipes 0.1.17.
## Please use `recipes_eval_select()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## Warning: Categorical variables used in `step_interact` should probably be avoided; This can lead to differences in dummy variable values that are produced by `step_dummy`. Please convert all involved variables to dummy variables first.
## Categorical variables used in `step_interact` should probably be avoided; This can lead to differences in dummy variable values that are produced by `step_dummy`. Please convert all involved variables to dummy variables first.
## Categorical variables used in `step_interact` should probably be avoided; This can lead to differences in dummy variable values that are produced by `step_dummy`. Please convert all involved variables to dummy variables first.
## Warning: The following variables are not factor vectors
## and will be ignored: `Ngay_month.lbl.L_x_Ngay_day`,
## `Ngay_month.lbl.Q_x_Ngay_day`, `Ngay_month.lbl.C_x_Ngay_day`,
## `Ngay_month.lbl^4_x_Ngay_day`, `Ngay_month.lbl^5_x_Ngay_day`,
## `Ngay_month.lbl^6_x_Ngay_day`, `Ngay_month.lbl^7_x_Ngay_day`,
## `Ngay_month.lbl^8_x_Ngay_day`, `Ngay_month.lbl^9_x_Ngay_day`,
## `Ngay_month.lbl^10_x_Ngay_day`, `Ngay_month.lbl^11_x_Ngay_day`,
## `Ngay_month.lbl.L_x_Ngay_mweek`, `Ngay_month.lbl.Q_x_Ngay_mweek`,
## `Ngay_month.lbl.C_x_Ngay_mweek`, `Ngay_month.lbl^4_x_Ngay_mweek`,
## `Ngay_month.lbl^5_x_Ngay_mweek`, `Ngay_month.lbl^6_x_Ngay_mweek`,
## `Ngay_month.lbl^7_x_Ngay_mweek`, `Ngay_month.lbl^8_x_Ngay_mweek`,
## `Ngay_month.lbl^9_x_Ngay_mweek`, `Ngay_month.lbl^10_x_Ngay_mweek`,
## `Ngay_month.lbl^11_x_Ngay_mweek`, `Ngay_month.lbl.L_x_Ngay_wday.lbl.L`,
## `Ngay_month.lbl.Q_x_Ngay_wday.lbl.L`, `Ngay_month.lbl.C_x_Ngay_wday.lbl.L`,
## `Ngay_month.lbl^4_x_Ngay_wday.lbl.L`, `Ngay_month.lbl^5_x_Ngay_wday.lbl.L`,
## `Ngay_month.lbl^6_x_Ngay_wday.lbl.L`, `Ngay_month.lbl^7_x_Ngay_wday.lbl.L`,
## `Ngay_month.lbl^8_x_Ngay_wday.lbl.L`, `Ngay_month.lbl^9_x_Ngay_wday.lbl.L`,
## `Ngay_month.lbl^10_x_Ngay_wday.lbl.L`, `Ngay_month.lbl^11_x_Ngay_wday.lbl.L`,
## `Ngay_month.lbl.L_x_Ngay_wday.lbl.Q`, `Ngay_month.lbl.Q_x_Ngay_wday.lbl.Q`,
## `Ngay_month.lbl.C_x_Ngay_wday.lbl.Q`, `Ngay_month.lbl^4_x_Ngay_wday.lbl.Q`,
## `Ngay_month.lbl^5_x_Ngay_wday.lbl.Q`, `Ngay_month.lbl^6_x_Ngay_wday.lbl.Q`,
## `Ngay_month.lbl^7_x_Ngay_wday.lbl.Q`, `Ngay_month.lbl^8_x_Ngay_wday.lbl.Q`,
## `Ngay_month.lbl^9_x_Ngay_wday.lbl.Q`, `Ngay_month.lbl^10_x_Ngay_wday.lbl.Q`,
## `Ngay_month.lbl^11_x_Ngay_wday.lbl.Q`, `Ngay_month.lbl.L_x_Ngay_wday.lbl.C`,
## `Ngay_month.lbl.Q_x_Ngay_wday.lbl.C`, `Ngay_month.lbl.C_x_Ngay_wday.lbl.C`,
## `Ngay_month.lbl^4_x_Ngay_wday.lbl.C`, `Ngay_month.lbl^5_x_Ngay_wday.lbl.C`,
## `Ngay_month.lbl^6_x_Ngay_wday.lbl.C`, `Ngay_month.lbl^7_x_Ngay_wday.lbl.C`,
## `Ngay_month.lbl^8_x_Ngay_wday.lbl.C`, `Ngay_month.lbl^9_x_Ngay_wday.lbl.C`,
## `Ngay_month.lbl^10_x_Ngay_wday.lbl.C`, `Ngay_month.lbl^11_x_Ngay_wday.lbl.C`,
## `Ngay_month.lbl.L_x_Ngay_wday.lbl^4`, `Ngay_month.lbl.Q_x_Ngay_wday.lbl^4`,
## `Ngay_month.lbl.C_x_Ngay_wday.lbl^4`, `Ngay_month.lbl^4_x_Ngay_wday.lbl^4`,
## `Ngay_month.lbl^5_x_Ngay_wday.lbl^4`, `Ngay_month.lbl^6_x_Ngay_wday.lbl^4`,
## `Ngay_month.lbl^7_x_Ngay_wday.lbl^4`, `Ngay_month.lbl^8_x_Ngay_wday.lbl^4`,
## `Ngay_month.lbl^9_x_Ngay_wday.lbl^4`, `Ngay_month.lbl^10_x_Ngay_wday.lbl^4`,
## `Ngay_month.lbl^11_x_Ngay_wday.lbl^4`, `Ngay_month.lbl.L_x_Ngay_wday.lbl^5`,
## `Ngay_month.lbl.Q_x_Ngay_wday.lbl^5`, `Ngay_month.lbl.C_x_Ngay_wday.lbl^5`,
## `Ngay_month.lbl^4_x_Ngay_wday.lbl^5`, `Ngay_month.lbl^5_x_Ngay_wday.lbl^5`,
## `Ngay_month.lbl^6_x_Ngay_wday.lbl^5`, `Ngay_month.lbl^7_x_Ngay_wday.lbl^5`,
## `Ngay_month.lbl^8_x_Ngay_wday.lbl^5`, `Ngay_month.lbl^9_x_Ngay_wday.lbl^5`,
## `Ngay_month.lbl^10_x_Ngay_wday.lbl^5`, `Ngay_month.lbl^11_x_Ngay_wday.lbl^5`,
## `Ngay_month.lbl.L_x_Ngay_wday.lbl^6`, `Ngay_month.lbl.Q_x_Ngay_wday.lbl^6`,
## `Ngay_month.lbl.C_x_Ngay_wday.lbl^6`, `Ngay_month.lbl^4_x_Ngay_wday.lbl^6`,
## `Ngay_month.lbl^5_x_Ngay_wday.lbl^6`, `Ngay_month.lbl^6_x_Ngay_wday.lbl^6`,
## `Ngay_month.lbl^7_x_Ngay_wday.lbl^6`, `Ngay_month.lbl^8_x_Ngay_wday.lbl^6`,
## `Ngay_month.lbl^9_x_Ngay_wday.lbl^6`, `Ngay_month.lbl^10_x_Ngay_wday.lbl^6`,
## `Ngay_month.lbl^11_x_Ngay_wday.lbl^6`, `Ngay_month.lbl.L_x_Ngay_yday`,
## `Ngay_month.lbl.Q_x_Ngay_yday`, `Ngay_month.lbl.C_x_Ngay_yday`,
## `Ngay_month.lbl^4_x_Ngay_yday`, `Ngay_month.lbl^5_x_Ngay_yday`,
## `Ngay_month.lbl^6_x_Ngay_yday`, `Ngay_month.lbl^7_x_Ngay_yday`,
## `Ngay_month.lbl^8_x_Ngay_yday`, `Ngay_month.lbl^9_x_Ngay_yday`,
## `Ngay_month.lbl^10_x_Ngay_yday`, `Ngay_month.lbl^11_x_Ngay_yday`,
## `Ngay_wday.lbl.L_x_Ngay_yday`, `Ngay_wday.lbl.Q_x_Ngay_yday`,
## `Ngay_wday.lbl.C_x_Ngay_yday`, `Ngay_wday.lbl^4_x_Ngay_yday`,
## `Ngay_wday.lbl^5_x_Ngay_yday`, `Ngay_wday.lbl^6_x_Ngay_yday`,
## `Ngay_month.lblJanuary_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblFebruary_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblMarch_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblApril_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblMay_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblJune_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblJuly_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblAugust_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblSeptember_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblOctober_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblNovember_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblDecember_x_Ngay_wday.lblSunday_x_Ngay_yday`,
## `Ngay_month.lblJanuary_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblFebruary_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblMarch_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblApril_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblMay_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblJune_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblJuly_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblAugust_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblSeptember_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblOctober_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblNovember_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblDecember_x_Ngay_wday.lblMonday_x_Ngay_yday`,
## `Ngay_month.lblJanuary_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblFebruary_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblMarch_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblApril_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblMay_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblJune_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblJuly_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblAugust_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblSeptember_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblOctober_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblNovember_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblDecember_x_Ngay_wday.lblTuesday_x_Ngay_yday`,
## `Ngay_month.lblJanuary_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblFebruary_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblMarch_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblApril_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblMay_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblJune_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblJuly_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblAugust_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblSeptember_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblOctober_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblNovember_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblDecember_x_Ngay_wday.lblWednesday_x_Ngay_yday`,
## `Ngay_month.lblJanuary_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblFebruary_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblMarch_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblApril_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblMay_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblJune_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblJuly_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblAugust_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblSeptember_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblOctober_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblNovember_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblDecember_x_Ngay_wday.lblThursday_x_Ngay_yday`,
## `Ngay_month.lblJanuary_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblFebruary_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblMarch_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblApril_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblMay_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblJune_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblJuly_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblAugust_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblSeptember_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblOctober_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblNovember_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblDecember_x_Ngay_wday.lblFriday_x_Ngay_yday`,
## `Ngay_month.lblJanuary_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblFebruary_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblMarch_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblApril_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblMay_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblJune_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblJuly_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblAugust_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblSeptember_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblOctober_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblNovember_x_Ngay_wday.lblSaturday_x_Ngay_yday`,
## `Ngay_month.lblDecember_x_Ngay_wday.lblSaturday_x_Ngay_yday`
workflow_trained
## ══ Workflow [trained] ══════════════════════════════════════════════════════════
## Preprocessor: Recipe
## Model: linear_reg()
##
## ── Preprocessor ────────────────────────────────────────────────────────────────
## 8 Recipe Steps
##
## • step_timeseries_signature()
## • step_rm()
## • step_rm()
## • step_normalize()
## • step_interact()
## • step_interact()
## • step_interact()
## • step_dummy()
##
## ── Model ───────────────────────────────────────────────────────────────────────
##
## Call: glmnet::glmnet(x = maybe_matrix(x), y = y, family = "gaussian", alpha = ~0.7)
##
## Df %Dev Lambda
## 1 0 0.00 17030.0
## 2 2 8.14 15520.0
## 3 2 15.38 14140.0
## 4 2 21.60 12880.0
## 5 2 26.92 11740.0
## 6 2 31.46 10700.0
## 7 2 35.33 9746.0
## 8 2 38.63 8880.0
## 9 2 41.42 8092.0
## 10 2 43.78 7373.0
## 11 2 45.78 6718.0
## 12 2 47.47 6121.0
## 13 2 48.89 5577.0
## 14 2 50.09 5082.0
## 15 2 51.10 4630.0
## 16 2 51.95 4219.0
## 17 2 52.66 3844.0
## 18 2 53.26 3503.0
## 19 2 53.76 3191.0
## 20 2 54.18 2908.0
## 21 2 54.53 2650.0
## 22 2 54.82 2414.0
## 23 2 55.07 2200.0
## 24 2 55.27 2004.0
## 25 2 55.45 1826.0
## 26 2 55.59 1664.0
## 27 2 55.71 1516.0
## 28 2 55.81 1382.0
## 29 2 55.89 1259.0
## 30 3 55.98 1147.0
## 31 3 56.08 1045.0
## 32 3 56.16 952.2
## 33 4 56.23 867.6
## 34 4 56.31 790.5
## 35 4 56.38 720.3
## 36 5 56.43 656.3
## 37 5 56.48 598.0
## 38 5 56.52 544.9
## 39 7 56.56 496.5
## 40 7 56.60 452.4
## 41 8 56.64 412.2
## 42 9 56.68 375.6
## 43 9 56.71 342.2
## 44 9 56.74 311.8
## 45 9 56.76 284.1
## 46 11 56.78 258.9
##
## ...
## and 40 more lines.
# Chạy testing
dlkiemtra <- workflow_trained %>%
predict(dltest) %>%
bind_cols(dltest)
dlkiemtra
## # A tibble: 212 × 3
## .pred Ngay GiaBCT
## <dbl> <date> <dbl>
## 1 38135. 2022-01-01 47687.
## 2 38555. 2022-01-02 47345.
## 3 38886. 2022-01-03 46458.
## 4 38273. 2022-01-04 45898.
## 5 37761. 2022-01-05 43569.
## 6 38119. 2022-01-06 43161.
## 7 38198. 2022-01-07 41558.
## 8 38392. 2022-01-08 41734.
## 9 38471. 2022-01-09 41912.
## 10 38544. 2022-01-10 41821.
## # … with 202 more rows
# Calculating forecast error
dlkiemtra %>% metrics(GiaBCT, .pred)
## # A tibble: 3 × 3
## .metric .estimator .estimate
## <chr> <chr> <dbl>
## 1 rmse standard 7467.
## 2 rsq standard 0.365
## 3 mae standard 5878.