Open Aariq opened 1 year ago
Thanks for raising this, I think this should be made to work better.
Essentially the features()
function expects a function or list of functions.
~feat_stl(., .period = "1 year")
is a formula representing a lambda function, and the current method doesn't (yet) know how to handle it.
Instead you could wrap it in a list, which is the recommended approach for providing one or more features.
tourism |>
features(Trips, list(~feat_stl(., .period = "1 year")))
However this runs into a secondary issue in that .period
is not set up to handle the "1 year" syntax (yet).
So ultimately, what works is:
tourism |>
features(Trips, list(~feat_stl(., .period = 4)))
9a1e6fd90d37a9aa5be206e1f18218853af5d445 now supports lambda functions being used directly.
f8a8baab1e40f2978958fd02c35f42a43abc0cd2 allows you to use .period = "1 year"
in features, but not directly in the feature functions like you are doing. You can change the .period
that is passed to all features by using the ...
of features()
.
So I would recommend (with these latest changes) for your example:
library(fpp3)
tourism |>
features(Trips, feat_stl, .period = "1 year")
#> # A tibble: 304 × 12
#> Region State Purpose trend…¹ seaso…² seaso…³ seaso…⁴ spiki…⁵ linea…⁶ curva…⁷
#> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Adelai… Sout… Busine… 0.464 0.407 3 1 1.58e+2 -5.31 71.6
#> 2 Adelai… Sout… Holiday 0.554 0.619 1 2 9.17e+0 49.0 78.7
#> 3 Adelai… Sout… Other 0.746 0.202 2 1 2.10e+0 95.1 43.4
#> 4 Adelai… Sout… Visiti… 0.435 0.452 1 3 5.61e+1 34.6 71.4
#> 5 Adelai… Sout… Busine… 0.464 0.179 3 0 1.03e-1 0.968 -3.22
#> 6 Adelai… Sout… Holiday 0.528 0.296 2 1 1.77e-1 10.5 24.0
#> 7 Adelai… Sout… Other 0.593 0.404 2 2 4.44e-4 4.28 3.19
#> 8 Adelai… Sout… Visiti… 0.488 0.254 0 3 6.50e+0 34.2 -0.529
#> 9 Alice … Nort… Busine… 0.534 0.251 0 1 1.69e-1 23.8 19.5
#> 10 Alice … Nort… Holiday 0.381 0.832 3 1 7.39e-1 -19.6 10.5
#> # … with 294 more rows, 2 more variables: stl_e_acf1 <dbl>, stl_e_acf10 <dbl>,
#> # and abbreviated variable names ¹trend_strength, ²seasonal_strength_4,
#> # ³seasonal_peak_4, ⁴seasonal_trough_4, ⁵spikiness, ⁶linearity, ⁷curvature
or
library(fpp3)
tourism |>
features(Trips, ~feat_stl(., .period = 4))
#> # A tibble: 304 × 12
#> Region State Purpose trend…¹ seaso…² seaso…³ seaso…⁴ spiki…⁵ linea…⁶ curva…⁷
#> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 Adelai… Sout… Busine… 0.464 0.407 3 1 1.58e+2 -5.31 71.6
#> 2 Adelai… Sout… Holiday 0.554 0.619 1 2 9.17e+0 49.0 78.7
#> 3 Adelai… Sout… Other 0.746 0.202 2 1 2.10e+0 95.1 43.4
#> 4 Adelai… Sout… Visiti… 0.435 0.452 1 3 5.61e+1 34.6 71.4
#> 5 Adelai… Sout… Busine… 0.464 0.179 3 0 1.03e-1 0.968 -3.22
#> 6 Adelai… Sout… Holiday 0.528 0.296 2 1 1.77e-1 10.5 24.0
#> 7 Adelai… Sout… Other 0.593 0.404 2 2 4.44e-4 4.28 3.19
#> 8 Adelai… Sout… Visiti… 0.488 0.254 0 3 6.50e+0 34.2 -0.529
#> 9 Alice … Nort… Busine… 0.534 0.251 0 1 1.69e-1 23.8 19.5
#> 10 Alice … Nort… Holiday 0.381 0.832 3 1 7.39e-1 -19.6 10.5
#> # … with 294 more rows, 2 more variables: stl_e_acf1 <dbl>, stl_e_acf10 <dbl>,
#> # and abbreviated variable names ¹trend_strength, ²seasonal_strength_4,
#> # ³seasonal_peak_4, ⁴seasonal_trough_4, ⁵spikiness, ⁶linearity, ⁷curvature
Created on 2022-10-27 by the reprex package (v2.0.1)
Thanks for the quick updates. Having examples like these in the documentation for maybe features()
or feat_stl()
would also be helpful.
I can't seem to figure out how to add arguments to
feat_stl
when it is used inside offeatures()
. I would expect an anonymous function to work, but it doesn't.Reprex:
Created on 2022-10-25 with reprex v2.0.2
Session info
``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.2.0 (2022-04-22) #> os macOS Big Sur/Monterey 10.16 #> system x86_64, darwin17.0 #> ui X11 #> language (EN) #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz America/New_York #> date 2022-10-25 #> pandoc 2.19.2 @ /usr/local/bin/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> ! package * version date (UTC) lib source #> P anytime 0.3.9 2020-08-27 [?] CRAN (R 4.2.0) #> P assertthat 0.2.1 2019-03-21 [?] CRAN (R 4.2.0) #> P cli 3.4.1 2022-09-23 [?] CRAN (R 4.2.0) #> P colorspace 2.0-3 2022-02-21 [?] CRAN (R 4.2.0) #> P DBI 1.1.3 2022-06-18 [?] CRAN (R 4.2.0) #> P digest 0.6.29 2021-12-01 [?] CRAN (R 4.2.0) #> P distributional 0.3.1 2022-09-02 [?] CRAN (R 4.2.0) #> P dplyr 1.0.10 2022-09-01 [?] CRAN (R 4.2.0) #> P ellipsis 0.3.2 2021-04-29 [?] CRAN (R 4.2.0) #> P evaluate 0.17 2022-10-07 [?] CRAN (R 4.2.0) #> P fabletools * 0.3.2 2021-11-29 [?] CRAN (R 4.2.0) #> P fansi 1.0.3 2022-03-24 [?] CRAN (R 4.2.0) #> P farver 2.1.1 2022-07-06 [?] CRAN (R 4.2.0) #> P fastmap 1.1.0 2021-01-25 [?] CRAN (R 4.2.0) #> P feasts * 0.3.0 2022-09-01 [?] CRAN (R 4.2.0) #> P fs 1.5.2 2021-12-08 [?] CRAN (R 4.2.0) #> P generics 0.1.3 2022-07-05 [?] CRAN (R 4.2.0) #> P ggplot2 3.3.6 2022-05-03 [?] CRAN (R 4.2.0) #> P glue 1.6.2 2022-02-24 [?] CRAN (R 4.2.0) #> P gtable 0.3.1 2022-09-01 [?] CRAN (R 4.2.0) #> P highr 0.9 2021-04-16 [?] CRAN (R 4.2.0) #> P htmltools 0.5.3 2022-07-18 [?] CRAN (R 4.2.0) #> P knitr 1.40 2022-08-24 [?] CRAN (R 4.2.0) #> P lifecycle 1.0.3 2022-10-07 [?] CRAN (R 4.2.0) #> P lubridate 1.8.0 2021-10-07 [?] CRAN (R 4.2.0) #> P magrittr 2.0.3 2022-03-30 [?] CRAN (R 4.2.0) #> P munsell 0.5.0 2018-06-12 [?] CRAN (R 4.2.0) #> P pillar 1.8.1 2022-08-19 [?] CRAN (R 4.2.0) #> P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.2.0) #> P progressr 0.11.0 2022-09-02 [?] CRAN (R 4.2.0) #> P purrr 0.3.5 2022-10-06 [?] CRAN (R 4.2.0) #> R.cache 0.16.0 2022-07-21 [3] CRAN (R 4.2.0) #> R.methodsS3 1.8.2 2022-06-13 [3] CRAN (R 4.2.0) #> R.oo 1.25.0 2022-06-12 [3] CRAN (R 4.2.0) #> R.utils 2.12.0 2022-06-28 [3] CRAN (R 4.2.0) #> P R6 2.5.1 2021-08-19 [?] CRAN (R 4.2.0) #> P Rcpp 1.0.9 2022-07-08 [?] CRAN (R 4.2.0) #> P reprex 2.0.2 2022-08-17 [?] CRAN (R 4.2.0) #> P rlang 1.0.6 2022-09-24 [?] CRAN (R 4.2.0) #> P rmarkdown 2.17 2022-10-07 [?] CRAN (R 4.2.0) #> P rstudioapi 0.14 2022-08-22 [?] CRAN (R 4.2.0) #> P scales 1.2.1 2022-08-20 [?] CRAN (R 4.2.0) #> sessioninfo 1.2.2 2021-12-06 [3] CRAN (R 4.2.0) #> P stringi 1.7.8 2022-07-11 [?] CRAN (R 4.2.0) #> P stringr 1.4.1 2022-08-20 [?] CRAN (R 4.2.0) #> styler 1.7.0 2022-03-13 [3] CRAN (R 4.2.0) #> P tibble 3.1.8 2022-07-22 [?] CRAN (R 4.2.0) #> P tidyr 1.2.1 2022-09-08 [?] CRAN (R 4.2.0) #> P tidyselect 1.2.0 2022-10-10 [?] CRAN (R 4.2.0) #> P tsibble * 1.1.3 2022-10-09 [?] CRAN (R 4.2.0) #> P utf8 1.2.2 2021-07-24 [?] CRAN (R 4.2.0) #> P vctrs 0.4.2 2022-09-29 [?] CRAN (R 4.2.0) #> P withr 2.5.0 2022-03-03 [?] CRAN (R 4.2.0) #> P xfun 0.34 2022-10-18 [?] CRAN (R 4.2.0) #> P yaml 2.3.6 2022-10-18 [?] CRAN (R 4.2.0) #> #> [1] /Users/ericscott/Documents/GitHub/azmet-qaqc/renv/library/R-4.2/x86_64-apple-darwin17.0 #> [2] /Users/ericscott/Documents/GitHub/azmet-qaqc/renv/sandbox/R-4.2/x86_64-apple-darwin17.0/84ba8b13 #> [3] /Library/Frameworks/R.framework/Versions/4.2/Resources/library #> #> P ── Loaded and on-disk path mismatch. #> #> ────────────────────────────────────────────────────────────────────────────── ```