From 5a1c088b87645feca8ca50841270f80df465a89a Mon Sep 17 00:00:00 2001 From: MMenchero <47995617+MMenchero@users.noreply.github.com> Date: Wed, 29 May 2024 02:42:45 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Nixtla/n?= =?UTF-8?q?ixtlar@797aadfa3262b9b78e77ad27b4570c6479161dd3=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 2 + LICENSE.html | 2 + articles/anomaly-detection.html | 2 + articles/cross-validation.html | 2 + articles/exogenous-variables.html | 247 ++++++++++++++++++ .../figure-html/unnamed-chunk-6-1.png | Bin 0 -> 182655 bytes articles/get-started.html | 2 + articles/historical-forecast.html | 2 + articles/index.html | 4 + authors.html | 2 + index.html | 2 + news/index.html | 2 + pkgdown.yml | 3 +- reference/date_conversion.html | 2 + reference/dot-get_api_key.html | 2 + reference/dot-nixtla_data_prep.html | 2 + reference/dot-validate_exogenous.html | 2 + reference/electricity.html | 2 + reference/electricity_exo_vars.html | 2 + reference/electricity_future_exo_vars.html | 2 + reference/index.html | 2 + reference/infer_frequency.html | 2 + reference/nixtlaR-package.html | 2 + reference/nixtla_client_cross_validation.html | 2 + reference/nixtla_client_detect_anomalies.html | 2 + reference/nixtla_client_forecast.html | 2 + reference/nixtla_client_historic.html | 2 + reference/nixtla_client_plot.html | 2 + reference/nixtla_set_api_key.html | 2 + reference/nixtla_validate_api_key.html | 2 + search.json | 2 +- sitemap.xml | 3 + 32 files changed, 309 insertions(+), 2 deletions(-) create mode 100644 articles/exogenous-variables.html create mode 100644 articles/exogenous-variables_files/figure-html/unnamed-chunk-6-1.png diff --git a/404.html b/404.html index a9404a0..be60e8c 100644 --- a/404.html +++ b/404.html @@ -56,6 +56,8 @@ + + diff --git a/LICENSE.html b/LICENSE.html index 64a9675..f511c48 100644 --- a/LICENSE.html +++ b/LICENSE.html @@ -34,6 +34,8 @@ + + diff --git a/articles/anomaly-detection.html b/articles/anomaly-detection.html index 08542b4..24a78bf 100644 --- a/articles/anomaly-detection.html +++ b/articles/anomaly-detection.html @@ -58,6 +58,8 @@ + + diff --git a/articles/cross-validation.html b/articles/cross-validation.html index 4b8087b..2902815 100644 --- a/articles/cross-validation.html +++ b/articles/cross-validation.html @@ -58,6 +58,8 @@ + + diff --git a/articles/exogenous-variables.html b/articles/exogenous-variables.html new file mode 100644 index 0000000..1b61e11 --- /dev/null +++ b/articles/exogenous-variables.html @@ -0,0 +1,247 @@ + + + + + + + + +Exogenous Variables • nixtlar + + + + + + + + + + + + + + + + + Skip to contents + + +
+ + + + +
+
+ + + + +
+

1. Exogenous variables +

+

Exogenous variables are external factors that provide additional +information about the behavior of the target variable in time series +forecasting. These variables, which are correlated with the target, can +significantly improve predictions. Examples of exogenous variables +include weather data, economic indicators, holiday markers, and +promotional sales.

+

TimeGPT allows you to include exogenous variables when +generating a forecast. This vignette will show you how to include them. +It assumes you have already set up your API key. If you haven’t done +this, please read the Get +Started vignette first.

+
+
+

2. Load data +

+

For this vignette, we will use the electricity consumption dataset +with exogenous variables included in nixtlar. This dataset +contains hourly prices from five different electricity markets, along +with two exogenous variables related to the prices and binary variables +indicating the day of the week.

+
+df_exo_vars <- nixtlar::electricity_exo_vars
+head(df_exo_vars)
+#>   unique_id                  ds     y Exogenous1 Exogenous2 day_0 day_1 day_2
+#> 1        BE 2016-10-22 00:00:00 70.00      49593      57253     0     0     0
+#> 2        BE 2016-10-22 01:00:00 37.10      46073      51887     0     0     0
+#> 3        BE 2016-10-22 02:00:00 37.10      44927      51896     0     0     0
+#> 4        BE 2016-10-22 03:00:00 44.75      44483      48428     0     0     0
+#> 5        BE 2016-10-22 04:00:00 37.10      44338      46721     0     0     0
+#> 6        BE 2016-10-22 05:00:00 35.61      44504      46303     0     0     0
+#>   day_3 day_4 day_5 day_6
+#> 1     0     0     1     0
+#> 2     0     0     1     0
+#> 3     0     0     1     0
+#> 4     0     0     1     0
+#> 5     0     0     1     0
+#> 6     0     0     1     0
+

When using exogenous variables, you must provide their future values +to cover the complete forecast horizon; otherwise, TimeGPT +will result in an error. Ensure that the dates of the future exogenous +variables exactly match the forecast horizon. For the electricity +consumption dataset with exogenous variables, nixtlar +provides their values for the next 24 steps ahead.

+
+future_exo_vars <- nixtlar::electricity_future_exo_vars
+head(future_exo_vars)
+#>   unique_id                  ds Exogenous1 Exogenous2 day_0 day_1 day_2 day_3
+#> 1        BE 2016-12-31 00:00:00      64108      70318     0     0     0     0
+#> 2        BE 2016-12-31 01:00:00      62492      67898     0     0     0     0
+#> 3        BE 2016-12-31 02:00:00      61571      68379     0     0     0     0
+#> 4        BE 2016-12-31 03:00:00      60381      64972     0     0     0     0
+#> 5        BE 2016-12-31 04:00:00      60298      62900     0     0     0     0
+#> 6        BE 2016-12-31 05:00:00      60339      62364     0     0     0     0
+#>   day_4 day_5 day_6
+#> 1     0     1     0
+#> 2     0     1     0
+#> 3     0     1     0
+#> 4     0     1     0
+#> 5     0     1     0
+#> 6     0     1     0
+
+
+

3. Forecast with exogenous variables +

+

To generate a forecast with exogenous variables, use the +nixtla_client_forecast function as you would for forecasts +without them. The only difference is that you must add the exogenous +variables using the X_df argument.

+

Keep in mind that the default names for the time and target columns +are ds and y, respectively. If your time and +target columns have different names, specify them with +time_col and target_col. Since this dataset +has multiple ids (one for every electricity market), you will need to +specify the name of the column that contains these ids, which in this +case is unique_id. To do this, simply use +id_col="unique_id".

+
+fcst_exo_vars <- nixtla_client_forecast(df_exo_vars, h = 24, id_col = "unique_id", X_df = future_exo_vars)
+#> Frequency chosen: H
+
+head(fcst_exo_vars)
+#>   unique_id                  ds  TimeGPT
+#> 1        BE 2016-12-31 00:00:00 74.54077
+#> 2        BE 2016-12-31 01:00:00 43.34429
+#> 3        BE 2016-12-31 02:00:00 44.42922
+#> 4        BE 2016-12-31 03:00:00 38.09440
+#> 5        BE 2016-12-31 04:00:00 37.38914
+#> 6        BE 2016-12-31 05:00:00 39.08574
+

For comparison, we will also generate a forecast without the +exogenous variables.

+
+df <- nixtlar::electricity # same dataset but without the exogenous variables
+
+fcst <- nixtla_client_forecast(df, h = 24, id_col = "unique_id")
+#> Frequency chosen: H
+
+head(fcst)
+#>   unique_id                  ds  TimeGPT
+#> 1        BE 2016-12-31 00:00:00 45.19045
+#> 2        BE 2016-12-31 01:00:00 43.24445
+#> 3        BE 2016-12-31 02:00:00 41.95839
+#> 4        BE 2016-12-31 03:00:00 39.79649
+#> 5        BE 2016-12-31 04:00:00 39.20453
+#> 6        BE 2016-12-31 05:00:00 40.10878
+
+
+

4. Plot TimeGPT forecast +

+

nixtlar includes a function to plot the historical data +and any output from nixtla_client_forecast, +nixtla_client_historic, +nixtla_client_anomaly_detection and +nixtla_client_cross_validation. If you have long series, +you can use max_insample_length to only plot the last N +historical values (the forecast will always be plotted in full).

+
+nixtla_client_plot(df_exo_vars, fcst_exo_vars, id_col = "unique_id", max_insample_length = 500)
+#> Frequency chosen: H
+

+
+
+
+ + + + +
+ + + + + + + diff --git a/articles/exogenous-variables_files/figure-html/unnamed-chunk-6-1.png b/articles/exogenous-variables_files/figure-html/unnamed-chunk-6-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2764c5a2b438fd69559518e7489b45de1062c2c GIT binary patch literal 182655 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

`uZ!(u?^^?+ttrHpbl$Fu4y#x;)0iPlN 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

jj8t01*?7 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 F{{w3jqEY|= literal 0 HcmV?d00001 diff --git a/articles/get-started.html b/articles/get-started.html index 6ce36dd..808c5c3 100644 --- a/articles/get-started.html +++ b/articles/get-started.html @@ -58,6 +58,8 @@

+ + diff --git a/articles/historical-forecast.html b/articles/historical-forecast.html index aaffa25..68468de 100644 --- a/articles/historical-forecast.html +++ b/articles/historical-forecast.html @@ -58,6 +58,8 @@ + + diff --git a/articles/index.html b/articles/index.html index 1403202..a781aa6 100644 --- a/articles/index.html +++ b/articles/index.html @@ -34,6 +34,8 @@ + + @@ -65,6 +67,8 @@

All vignettes

Cross-Validation
+
Exogenous Variables
+
Get Started
Historical Forecast
diff --git a/authors.html b/authors.html index 0a7f125..613233d 100644 --- a/authors.html +++ b/authors.html @@ -34,6 +34,8 @@ + + diff --git a/index.html b/index.html index 867db89..c1a8ee8 100644 --- a/index.html +++ b/index.html @@ -58,6 +58,8 @@ + + diff --git a/news/index.html b/news/index.html index 687c01e..0d2f8fc 100644 --- a/news/index.html +++ b/news/index.html @@ -34,6 +34,8 @@ + + diff --git a/pkgdown.yml b/pkgdown.yml index e0f18ea..d128790 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -4,9 +4,10 @@ pkgdown_sha: ~ articles: anomaly-detection: anomaly-detection.html cross-validation: cross-validation.html + exogenous-variables: exogenous-variables.html get-started: get-started.html historical-forecast: historical-forecast.html -last_built: 2024-05-28T05:59Z +last_built: 2024-05-29T02:41Z urls: reference: https://nixtla.github.io/nixtlar/reference article: https://nixtla.github.io/nixtlar/articles diff --git a/reference/date_conversion.html b/reference/date_conversion.html index ef3c853..58f58fa 100644 --- a/reference/date_conversion.html +++ b/reference/date_conversion.html @@ -34,6 +34,8 @@ + + diff --git a/reference/dot-get_api_key.html b/reference/dot-get_api_key.html index f78c193..b6c3eb3 100644 --- a/reference/dot-get_api_key.html +++ b/reference/dot-get_api_key.html @@ -36,6 +36,8 @@ + + diff --git a/reference/dot-nixtla_data_prep.html b/reference/dot-nixtla_data_prep.html index d49471d..dcbd57e 100644 --- a/reference/dot-nixtla_data_prep.html +++ b/reference/dot-nixtla_data_prep.html @@ -36,6 +36,8 @@ + + diff --git a/reference/dot-validate_exogenous.html b/reference/dot-validate_exogenous.html index d07494f..20fb8a3 100644 --- a/reference/dot-validate_exogenous.html +++ b/reference/dot-validate_exogenous.html @@ -36,6 +36,8 @@ + + diff --git a/reference/electricity.html b/reference/electricity.html index 54358d2..818f797 100644 --- a/reference/electricity.html +++ b/reference/electricity.html @@ -34,6 +34,8 @@ + + diff --git a/reference/electricity_exo_vars.html b/reference/electricity_exo_vars.html index 477cb0f..f9ab950 100644 --- a/reference/electricity_exo_vars.html +++ b/reference/electricity_exo_vars.html @@ -34,6 +34,8 @@ + + diff --git a/reference/electricity_future_exo_vars.html b/reference/electricity_future_exo_vars.html index 3bba22a..578212a 100644 --- a/reference/electricity_future_exo_vars.html +++ b/reference/electricity_future_exo_vars.html @@ -34,6 +34,8 @@ + + diff --git a/reference/index.html b/reference/index.html index f1f8aa3..7aea2fb 100644 --- a/reference/index.html +++ b/reference/index.html @@ -34,6 +34,8 @@ + + diff --git a/reference/infer_frequency.html b/reference/infer_frequency.html index 8034ac3..d1286de 100644 --- a/reference/infer_frequency.html +++ b/reference/infer_frequency.html @@ -34,6 +34,8 @@ + + diff --git a/reference/nixtlaR-package.html b/reference/nixtlaR-package.html index 30cdc76..959c5e7 100644 --- a/reference/nixtlaR-package.html +++ b/reference/nixtlaR-package.html @@ -36,6 +36,8 @@ + + diff --git a/reference/nixtla_client_cross_validation.html b/reference/nixtla_client_cross_validation.html index 308d437..72a5436 100644 --- a/reference/nixtla_client_cross_validation.html +++ b/reference/nixtla_client_cross_validation.html @@ -34,6 +34,8 @@ + + diff --git a/reference/nixtla_client_detect_anomalies.html b/reference/nixtla_client_detect_anomalies.html index bf81f20..fc403f6 100644 --- a/reference/nixtla_client_detect_anomalies.html +++ b/reference/nixtla_client_detect_anomalies.html @@ -34,6 +34,8 @@ + + diff --git a/reference/nixtla_client_forecast.html b/reference/nixtla_client_forecast.html index bdc1954..aac15f7 100644 --- a/reference/nixtla_client_forecast.html +++ b/reference/nixtla_client_forecast.html @@ -34,6 +34,8 @@ + + diff --git a/reference/nixtla_client_historic.html b/reference/nixtla_client_historic.html index 93a39df..3905254 100644 --- a/reference/nixtla_client_historic.html +++ b/reference/nixtla_client_historic.html @@ -34,6 +34,8 @@ + + diff --git a/reference/nixtla_client_plot.html b/reference/nixtla_client_plot.html index f3cc46c..be719b8 100644 --- a/reference/nixtla_client_plot.html +++ b/reference/nixtla_client_plot.html @@ -34,6 +34,8 @@ + + diff --git a/reference/nixtla_set_api_key.html b/reference/nixtla_set_api_key.html index edaa64f..3e11a3f 100644 --- a/reference/nixtla_set_api_key.html +++ b/reference/nixtla_set_api_key.html @@ -34,6 +34,8 @@ + + diff --git a/reference/nixtla_validate_api_key.html b/reference/nixtla_validate_api_key.html index c3d235a..3d58c30 100644 --- a/reference/nixtla_validate_api_key.html +++ b/reference/nixtla_validate_api_key.html @@ -34,6 +34,8 @@ + + diff --git a/search.json b/search.json index 41276a9..9f3bfd2 100644 --- a/search.json +++ b/search.json @@ -1 +1 @@ -[{"path":"https://nixtla.github.io/nixtlar/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"Apache License","title":"Apache License","text":"Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS CONDITIONS USE, REPRODUCTION, DISTRIBUTION Definitions. “License” shall mean terms conditions use, reproduction, distribution defined Sections 1 9 document. “Licensor” shall mean copyright owner entity authorized copyright owner granting License. “Legal Entity” shall mean union acting entity entities control, controlled , common control entity. purposes definition, “control” means () power, direct indirect, cause direction management entity, whether contract otherwise, (ii) ownership fifty percent (50%) outstanding shares, (iii) beneficial ownership entity. “” (“”) shall mean individual Legal Entity exercising permissions granted License. “Source” form shall mean preferred form making modifications, including limited software source code, documentation source, configuration files. “Object” form shall mean form resulting mechanical transformation translation Source form, including limited compiled object code, generated documentation, conversions media types. “Work” shall mean work authorship, whether Source Object form, made available License, indicated copyright notice included attached work (example provided Appendix ). “Derivative Works” shall mean work, whether Source Object form, based (derived ) Work editorial revisions, annotations, elaborations, modifications represent, whole, original work authorship. purposes License, Derivative Works shall include works remain separable , merely link (bind name) interfaces , Work Derivative Works thereof. “Contribution” shall mean work authorship, including original version Work modifications additions Work Derivative Works thereof, intentionally submitted Licensor inclusion Work copyright owner individual Legal Entity authorized submit behalf copyright owner. purposes definition, “submitted” means form electronic, verbal, written communication sent Licensor representatives, including limited communication electronic mailing lists, source code control systems, issue tracking systems managed , behalf , Licensor purpose discussing improving Work, excluding communication conspicuously marked otherwise designated writing copyright owner “Contribution.” “Contributor” shall mean Licensor individual Legal Entity behalf Contribution received Licensor subsequently incorporated within Work. Grant Copyright License. Subject terms conditions License, Contributor hereby grants perpetual, worldwide, non-exclusive, -charge, royalty-free, irrevocable copyright license reproduce, prepare Derivative Works , publicly display, publicly perform, sublicense, distribute Work Derivative Works Source Object form. Grant Patent License. Subject terms conditions License, Contributor hereby grants perpetual, worldwide, non-exclusive, -charge, royalty-free, irrevocable (except stated section) patent license make, made, use, offer sell, sell, import, otherwise transfer Work, license applies patent claims licensable Contributor necessarily infringed Contribution(s) alone combination Contribution(s) Work Contribution(s) submitted. institute patent litigation entity (including cross-claim counterclaim lawsuit) alleging Work Contribution incorporated within Work constitutes direct contributory patent infringement, patent licenses granted License Work shall terminate date litigation filed. Redistribution. may reproduce distribute copies Work Derivative Works thereof medium, without modifications, Source Object form, provided meet following conditions: must give recipients Work Derivative Works copy License; must cause modified files carry prominent notices stating changed files; must retain, Source form Derivative Works distribute, copyright, patent, trademark, attribution notices Source form Work, excluding notices pertain part Derivative Works; Work includes “NOTICE” text file part distribution, Derivative Works distribute must include readable copy attribution notices contained within NOTICE file, excluding notices pertain part Derivative Works, least one following places: within NOTICE text file distributed part Derivative Works; within Source form documentation, provided along Derivative Works; , within display generated Derivative Works, wherever third-party notices normally appear. contents NOTICE file informational purposes modify License. may add attribution notices within Derivative Works distribute, alongside addendum NOTICE text Work, provided additional attribution notices construed modifying License. may add copyright statement modifications may provide additional different license terms conditions use, reproduction, distribution modifications, Derivative Works whole, provided use, reproduction, distribution Work otherwise complies conditions stated License. Submission Contributions. Unless explicitly state otherwise, Contribution intentionally submitted inclusion Work Licensor shall terms conditions License, without additional terms conditions. Notwithstanding , nothing herein shall supersede modify terms separate license agreement may executed Licensor regarding Contributions. Trademarks. License grant permission use trade names, trademarks, service marks, product names Licensor, except required reasonable customary use describing origin Work reproducing content NOTICE file. Disclaimer Warranty. Unless required applicable law agreed writing, Licensor provides Work (Contributor provides Contributions) “” BASIS, WITHOUT WARRANTIES CONDITIONS KIND, either express implied, including, without limitation, warranties conditions TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS PARTICULAR PURPOSE. solely responsible determining appropriateness using redistributing Work assume risks associated exercise permissions License. Limitation Liability. event legal theory, whether tort (including negligence), contract, otherwise, unless required applicable law (deliberate grossly negligent acts) agreed writing, shall Contributor liable damages, including direct, indirect, special, incidental, consequential damages character arising result License use inability use Work (including limited damages loss goodwill, work stoppage, computer failure malfunction, commercial damages losses), even Contributor advised possibility damages. Accepting Warranty Additional Liability. redistributing Work Derivative Works thereof, may choose offer, charge fee , acceptance support, warranty, indemnity, liability obligations /rights consistent License. However, accepting obligations, may act behalf sole responsibility, behalf Contributor, agree indemnify, defend, hold Contributor harmless liability incurred , claims asserted , Contributor reason accepting warranty additional liability. END TERMS CONDITIONS","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"anomaly-detection","dir":"Articles","previous_headings":"","what":"1. Anomaly detection","title":"Anomaly Detection","text":"Anomaly detection plays crucial role time series analysis forecasting. Anomalies, also known outliers, unusual observations don’t follow expected time series patterns. can caused variety factors, including errors data collection process, unexpected events, sudden changes patterns time series. Anomalies can provide critical information system, like potential problem malfunction. identifying , important understand caused , decide whether remove, replace, keep . TimeGPT method detecting anomalies, users can call nixtlar. vignette explain . assumes already set API key. haven’t done , please read Get Started vignette first.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"load-data","dir":"Articles","previous_headings":"","what":"2. Load data","title":"Anomaly Detection","text":"vignette, ’ll use electricity consumption dataset included nixtlar, contains hourly prices five different electricity markets.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61"},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"detect-anomalies","dir":"Articles","previous_headings":"","what":"3. Detect anomalies","title":"Anomaly Detection","text":"detect anomalies, use nixtlar::nixtla_client_detect_anomalies. key parameters method : df: data frame tsibble time series data. include least column datestamps column observations. Default names columns ds y. different, please specify names. id_col: data contains multiple ids, case, please specify column contains . working single series, leave default (NULL). anomaly_detection method TimeGPT evaluates observation uses prediction interval determine anomaly . default, nixtlar::nixtla_client_detect_anomalies uses 99% prediction interval. Observations fall outside interval considered anomalies value 1 anomaly column (zero otherwise). change prediction interval, example 95%, use argument level=c(95). Keep mind multiple levels allowed, given several values, nixtlar::nixtla_client_detect_anomalies use maximum.","code":"nixtla_client_anomalies <- nixtlar::nixtla_client_detect_anomalies(df, id_col = \"unique_id\") #> Frequency chosen: H head(nixtla_client_anomalies) #> unique_id ds y anomaly TimeGPT-lo-99 TimeGPT #> 1 BE 2016-10-27 00:00:00 52.58 0 -28.58336 56.07623 #> 2 BE 2016-10-27 01:00:00 44.86 0 -32.23986 52.41973 #> 3 BE 2016-10-27 02:00:00 42.31 0 -31.84485 52.81474 #> 4 BE 2016-10-27 03:00:00 39.66 0 -32.06933 52.59026 #> 5 BE 2016-10-27 04:00:00 38.98 0 -31.98661 52.67297 #> 6 BE 2016-10-27 05:00:00 42.31 0 -30.55300 54.10659 #> TimeGPT-hi-99 #> 1 140.7358 #> 2 137.0793 #> 3 137.4743 #> 4 137.2498 #> 5 137.3326 #> 6 138.7662"},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"plot-anomalies","dir":"Articles","previous_headings":"","what":"4. Plot anomalies","title":"Anomaly Detection","text":"nixtlar includes function plot historical data output nixtlar::nixtla_client_forecast, nixtlar::nixtla_client_historic, nixtlar::nixtla_client_detect_anomalies nixtlar::nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full). using nixtlar::nixtla_client_plot output nixtlar::nixtla_client_detect_anomalies, set plot_anomalies=TRUE plot anomalies.","code":"nixtlar::nixtla_client_plot(df, nixtla_client_anomalies, id_col = \"unique_id\", plot_anomalies = TRUE) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"time-series-cross-validation","dir":"Articles","previous_headings":"","what":"1. Time series cross-validation","title":"Cross-Validation","text":"Cross-validation method evaluating performance forecasting model. Given time series, carried defining sliding window across historical data predicting period following . accuracy model computed averaging accuracy across cross-validation windows. method results better estimation model’s predictive abilities, since considers multiple periods instead just one, respecting sequential nature data. TimeGPT method performing time series cross-validation, users can call nixtlar. vignette explain . assumes already set API key. haven’t done , please read Get Started vignette first.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"load-data","dir":"Articles","previous_headings":"","what":"2. Load data","title":"Cross-Validation","text":"vignette, ’ll use electricity consumption dataset included nixtlar, contains hourly prices five different electricity markets.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61"},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"perform-time-series-cross-validation","dir":"Articles","previous_headings":"","what":"3. Perform time series cross-validation","title":"Cross-Validation","text":"perform time series cross-validation using TimeGPT, use nixtlar::nixtla_client_cross_validation. key parameters method : df: dataframe tsibble time series data. include least column datestamps column observations. Default names columns ds y. different, please specify names. h: forecast horizon. id_col: data contains multiple ids, case, please specify column contains . working single series, leave default (NULL). n_windows: number windows evaluate. Default value 1. step_size: gap cross-validation window. Default value NULL.","code":"nixtla_client_cv <- nixtla_client_cross_validation(df, h = 8, id_col = \"unique_id\", n_windows = 5) #> Frequency chosen: H head(nixtla_client_cv) #> unique_id ds cutoff y TimeGPT #> 1 BE 2016-12-29 08:00:00 2016-12-29 07:00:00 53.30 51.79829 #> 2 BE 2016-12-29 09:00:00 2016-12-29 07:00:00 53.93 55.48120 #> 3 BE 2016-12-29 10:00:00 2016-12-29 07:00:00 56.63 55.86470 #> 4 BE 2016-12-29 11:00:00 2016-12-29 07:00:00 55.66 54.45249 #> 5 BE 2016-12-29 12:00:00 2016-12-29 07:00:00 48.00 54.76038 #> 6 BE 2016-12-29 13:00:00 2016-12-29 07:00:00 46.53 53.56611"},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"plot-cross-validation-results","dir":"Articles","previous_headings":"","what":"4. Plot cross-validation results","title":"Cross-Validation","text":"nixtlar includes function plot historical data output nixtlar::nixtla_client_forecast, nixtlar::nixtla_client_historic, nixtlar::nixtla_client_anomaly_detection nixtlar::nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full). using nixtlar::nixtla_client_plot output nixtlar::nixtla_client_cross_validation, cross-validation window visually represented vertical dashed lines. given pair lines, data first line forms training set. set used forecast data two lines.","code":"nixtla_client_plot(df, nixtla_client_cv, id_col = \"unique_id\", max_insample_length = 200) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"setting-up-your-api-key","dir":"Articles","previous_headings":"","what":"1. Setting up your API key","title":"Get Started","text":"First, need set API key. API key string characters allows authenticate requests using TimeGPT via nixtlar. API key needs provided Nixtla, don’t one, please request one . using nixtlar, two ways setting API key:","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"a--using-the-nixtla_set_api_key-function","dir":"Articles","previous_headings":"1. Setting up your API key","what":"a. Using the nixtla_set_api_key function","title":"Get Started","text":"nixtlar function easily set API key current R session. Simply call Keep mind close R session re-start , ’ll need set API key .","code":"nixtla_set_api_key(api_key = \"paste your API key here\")"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"b--using-an-environment-variable","dir":"Articles","previous_headings":"1. Setting up your API key","what":"b. Using an environment variable","title":"Get Started","text":"persistent method can used across different projects, set API key environment variable. , first need load usethis package. open .Reviron file. Place API key named NIXTLA_API_KEY. ’ll need restart R changes take effect. Keep mind modifying .Renviron file affects R sessions, ’re comfortable , set API key using nixtla_set_api_key function.","code":"library(usethis) usethis::edit_r_environ() # Inside the .Renviron file NIXTLA_API_KEY=\"paste your API key here\""},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"validate-your-api-key","dir":"Articles","previous_headings":"1. Setting up your API key","what":"Validate your API key","title":"Get Started","text":"want validate API key, call nixtla_validate_api_key. don’t need validate API key every time set , want check ’s valid.","code":"nixtla_validate_api_key() #> API key validation successful. Happy forecasting! :) #> If you have questions or need support, please email ops@nixtla.io"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"generate-timegpt-forecast","dir":"Articles","previous_headings":"","what":"2. Generate TimeGPT forecast","title":"Get Started","text":"API key set , ’re ready use TimeGPT. ’ll show done using dataset contains prices different electricity markets. generate forecast dataset, use nixtla_client_forecast. Default names time target columns ds y. time target columns different names, specify time_col target_col. Since multiple ids (one every electricity market), ’ll need specify name column contains ids, case unique_id. , simply use id_col=\"unique_id\". can also choose confidence levels (0-100) prediction intervals level.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61 nixtla_client_fcst <- nixtla_client_forecast(df, h = 8, id_col = \"unique_id\", level = c(80,95)) #> Frequency chosen: H head(nixtla_client_fcst) #> unique_id ds TimeGPT TimeGPT-lo-95 TimeGPT-lo-80 #> 1 BE 2016-12-31 00:00:00 45.19045 32.60115 40.42074 #> 2 BE 2016-12-31 01:00:00 43.24445 29.30454 36.91513 #> 3 BE 2016-12-31 02:00:00 41.95839 28.17721 35.55863 #> 4 BE 2016-12-31 03:00:00 39.79649 25.42790 33.45859 #> 5 BE 2016-12-31 04:00:00 39.20454 23.53869 30.35095 #> 6 BE 2016-12-31 05:00:00 40.10878 26.90472 31.60236 #> TimeGPT-hi-80 TimeGPT-hi-95 #> 1 49.96017 57.77975 #> 2 49.57376 57.18435 #> 3 48.35815 55.73957 #> 4 46.13438 54.16507 #> 5 48.05812 54.87038 #> 6 48.61520 53.31284"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"plot-timegpt-forecast","dir":"Articles","previous_headings":"","what":"3. Plot TimeGPT forecast","title":"Get Started","text":"nixtlar includes function plot historical data output nixtla_client_forecast, nixtla_client_historic, nixtla_client_anomaly_detection nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full).","code":"nixtla_client_plot(df, nixtla_client_fcst, id_col = \"unique_id\", max_insample_length = 200) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"timegpt-historical-forecast","dir":"Articles","previous_headings":"","what":"1. TimeGPT Historical Forecast","title":"Historical Forecast","text":"generating forecast, sometimes might interested forecasting historical observations. predictions, known fitted values, can help better understand evaluate model’s performance time. TimeGPT method generating fitted values, users can call nixtlar. vignette explain . assumes already set API key. haven’t done , please read Get Started vignette first.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"load-data","dir":"Articles","previous_headings":"","what":"2. Load data","title":"Historical Forecast","text":"vignette, ’ll use electricity consumption dataset included nixtlar, contains hourly prices five different electricity markets.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61"},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"forecast-historical-data","dir":"Articles","previous_headings":"","what":"3. Forecast historical data","title":"Historical Forecast","text":"generate forecast historical data, use nixtlar::nixtla_client_historic. key parameters method : df: dataframe tsibble time series data. include least column datestamps column observations. Default names columns ds y. different, please specify names. id_col: data contains multiple ids, case, please specify column contains . working single series, leave default (NULL). level: prediction intervals forecast. Notice fitted values initial observations. TimeGPT requires minimum number values generate reliable forecasts. fitted values generated using rolling window, meaning fitted value observation \\(T\\) generated using first \\(T-1\\) observations.","code":"nixtla_client_fitted_values <- nixtla_client_historic(df, id_col = \"unique_id\", level = c(80,95)) #> Frequency chosen: H head(nixtla_client_fitted_values) #> unique_id ds TimeGPT TimeGPT-lo-80 TimeGPT-lo-95 #> 1 BE 2016-10-27 00:00:00 56.07623 13.95557 -8.341764 #> 2 BE 2016-10-27 01:00:00 52.41973 10.29907 -11.998258 #> 3 BE 2016-10-27 02:00:00 52.81474 10.69408 -11.603250 #> 4 BE 2016-10-27 03:00:00 52.59026 10.46960 -11.827729 #> 5 BE 2016-10-27 04:00:00 52.67297 10.55231 -11.745015 #> 6 BE 2016-10-27 05:00:00 54.10659 11.98593 -10.311399 #> TimeGPT-hi-80 TimeGPT-hi-95 #> 1 98.19688 120.4942 #> 2 94.54039 116.8377 #> 3 94.93540 117.2327 #> 4 94.71092 117.0082 #> 5 94.79363 117.0910 #> 6 96.22725 118.5246"},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"fitted-values-from-nixtlarnixtla_client_forecast","dir":"Articles","previous_headings":"3. Forecast historical data","what":"3.1 Fitted values from nixtlar::nixtla_client_forecast","title":"Historical Forecast","text":"nixtlar::nixtla_client_historic dedicated function calls TimeGPT’s method generating fitted values. However, can also use nixtlar::nixtla_client_forecast add_history=TRUE. generate forecast historical data next \\(h\\) future observations.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"plot-historical-forecast","dir":"Articles","previous_headings":"","what":"4. Plot historical forecast","title":"Historical Forecast","text":"nixtlar includes function plot historical data output nixtla_client_forecast, nixtla_client_historic, nixtla_client_anomaly_detection nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full).","code":"nixtla_client_plot(df, nixtla_client_fitted_values, id_col = \"unique_id\", max_insample_length = 200) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Mariana Menchero. Author, maintainer. First author maintainer Nixtla. Copyright holder. Copyright held Nixtla","code":""},{"path":"https://nixtla.github.io/nixtlar/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Menchero M (2024). nixtlar: Software Development Kit Nixtla's TimeGPT. R package version 0.5.0, https://docs.nixtla.io/, https://nixtla.github.io/nixtlar/.","code":"@Manual{, title = {nixtlar: A Software Development Kit for Nixtla's TimeGPT}, author = {Mariana Menchero}, year = {2024}, note = {R package version 0.5.0, https://docs.nixtla.io/}, url = {https://nixtla.github.io/nixtlar/}, }"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"timegpt-1","dir":"","previous_headings":"","what":"TimeGPT-1","title":"A Software Development Kit for Nixtla's TimeGPT","text":"first foundation model time series forecasting anomaly detection TimeGPT production-ready, generative pretrained transformer time series forecasting, developed Nixtla. capable accurately predicting various domains retail, electricity, finance, IoT, just lines code. Additionally, can detect anomalies time series data. TimeGPT initially developed Python now available R users nixtlar package.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"table-of-contents","dir":"","previous_headings":"","what":"Table of Contents","title":"A Software Development Kit for Nixtla's TimeGPT","text":"Installation Forecast Using TimeGPT 3 Easy Steps Anomaly Detection Using TimeGPT 3 Easy Steps Features Capabilities Documentation API Support Cite License Get Touch","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"quickstart","dir":"","previous_headings":"","what":"Quickstart","title":"A Software Development Kit for Nixtla's TimeGPT","text":"https://github.com/Nixtla/nixtlar/assets/47995617/1be6d63c-7cfd-4c29-b8e8-f7378c982724","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"A Software Development Kit for Nixtla's TimeGPT","text":"can install development version nixtlar GitHub :","code":"# install.packages(\"devtools\") devtools::install_github(\"Nixtla/nixtlar\")"},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"forecast-using-timegpt-in-3-easy-steps","dir":"","previous_headings":"","what":"Forecast Using TimeGPT in 3 Easy Steps","title":"A Software Development Kit for Nixtla's TimeGPT","text":"Set API key. Get dashboard.nixtla.io Load sample data Forecast next 8 steps ahead Optionally, plot results","code":"library(nixtlar) nixtla_set_api_key(api_key = \"Your API key here\") df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61 nixtla_client_fcst <- nixtla_client_forecast(df, h = 8, id_col = \"unique_id\", level = c(80,95)) #> Frequency chosen: H head(nixtla_client_fcst) #> unique_id ds TimeGPT TimeGPT-lo-95 TimeGPT-lo-80 #> 1 BE 2016-12-31 00:00:00 45.19045 32.60115 40.42074 #> 2 BE 2016-12-31 01:00:00 43.24445 29.30454 36.91513 #> 3 BE 2016-12-31 02:00:00 41.95839 28.17721 35.55863 #> 4 BE 2016-12-31 03:00:00 39.79649 25.42790 33.45859 #> 5 BE 2016-12-31 04:00:00 39.20454 23.53869 30.35095 #> 6 BE 2016-12-31 05:00:00 40.10878 26.90472 31.60236 #> TimeGPT-hi-80 TimeGPT-hi-95 #> 1 49.96017 57.77975 #> 2 49.57376 57.18435 #> 3 48.35815 55.73957 #> 4 46.13438 54.16507 #> 5 48.05812 54.87038 #> 6 48.61520 53.31284 nixtla_client_plot(df, nixtla_client_fcst, id_col = \"unique_id\", max_insample_length = 200)"},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"anomaly-detection-using-timegpt-in-3-easy-steps","dir":"","previous_headings":"","what":"Anomaly Detection Using TimeGPT in 3 Easy Steps","title":"A Software Development Kit for Nixtla's TimeGPT","text":"anomaly detection TimeGPT, also 3 easy steps! Follow steps 1 2 previous section use nixtla_client_detect_anomalies nixtla_client_plot functions.","code":"nixtla_client_anomalies <- nixtlar::nixtla_client_detect_anomalies(df, id_col = \"unique_id\") #> Frequency chosen: H head(nixtla_client_anomalies) #> unique_id ds y anomaly TimeGPT-lo-99 TimeGPT #> 1 BE 2016-10-27 00:00:00 52.58 0 -28.58336 56.07623 #> 2 BE 2016-10-27 01:00:00 44.86 0 -32.23986 52.41973 #> 3 BE 2016-10-27 02:00:00 42.31 0 -31.84485 52.81474 #> 4 BE 2016-10-27 03:00:00 39.66 0 -32.06933 52.59026 #> 5 BE 2016-10-27 04:00:00 38.98 0 -31.98661 52.67297 #> 6 BE 2016-10-27 05:00:00 42.31 0 -30.55300 54.10659 #> TimeGPT-hi-99 #> 1 140.7358 #> 2 137.0793 #> 3 137.4743 #> 4 137.2498 #> 5 137.3326 #> 6 138.7662 nixtlar::nixtla_client_plot(df, nixtla_client_anomalies, id_col = \"unique_id\", plot_anomalies = TRUE)"},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"features-and-capabilities","dir":"","previous_headings":"","what":"Features and Capabilities","title":"A Software Development Kit for Nixtla's TimeGPT","text":"nixtlar provides access TimeGPT’s features capabilities, : Zero-shot Inference: TimeGPT can generate forecasts detect anomalies straight box, requiring prior training data. allows immediate deployment quick insights time series data. Fine-tuning: Enhance TimeGPT’s capabilities fine-tuning model specific datasets, enabling model adapt nuances unique time series data improving performance tailored tasks. Add Exogenous Variables: Incorporate additional variables might influence predictions enhance forecast accuracy. (E.g. Special Dates, events prices) Multiple Series Forecasting: Simultaneously forecast multiple time series data, optimizing workflows resources. Custom Loss Function: Tailor fine-tuning process custom loss function meet specific performance metrics. Cross Validation: Implement box cross-validation techniques ensure model robustness generalizability. Prediction Intervals: Provide intervals predictions quantify uncertainty effectively. Irregular Timestamps: Handle data irregular timestamps, accommodating non-uniform interval series without preprocessing.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"A Software Development Kit for Nixtla's TimeGPT","text":"comprehensive documentation, please refer vignettes, cover wide range topics help effectively use nixtlar. current documentation includes guides : Get started set API key anomaly detection Generate historical forecasts Perform time series cross-validation documentation ongoing effort, working expanding coverage.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"api-support","dir":"","previous_headings":"","what":"API Support","title":"A Software Development Kit for Nixtla's TimeGPT","text":"Python user? yes, check Python SDK TimeGPT. can also refer API reference support programming languages.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"how-to-cite","dir":"","previous_headings":"","what":"How to Cite","title":"A Software Development Kit for Nixtla's TimeGPT","text":"find TimeGPT useful research, please consider citing TimeGPT-1 paper. associated reference shown . Garza, ., Challu, C., & Mergenthaler-Canseco, M. (2024). TimeGPT-1. arXiv preprint arXiv:2310.03589. Available https://arxiv.org/abs/2310.03589","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"A Software Development Kit for Nixtla's TimeGPT","text":"TimeGPT closed source. However, SDK open source available Apache 2.0 License, feel free contribute!","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"get-in-touch","dir":"","previous_headings":"","what":"Get in Touch","title":"A Software Development Kit for Nixtla's TimeGPT","text":"welcome input contributions nixtlar package! Report Issues: encounter bug suggestion improve package, please open issue GitHub. Contribute: can contribute opening pull request repository. Whether fixing bug, adding new feature, improving documentation, appreciate help making nixtlar better.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"Infer frequency tsibble convert index date string.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"","code":"date_conversion(df)"},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"df tsibble.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"list inferred frequency df new index.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"","code":"df <- AirPassengers tsbl <- tsibble::as_tsibble(df) names(tsbl) <- c(\"ds\", \"y\") date_conversion(tsbl) #> Frequency chosen: MS #> $df #> # A tibble: 144 × 2 #> ds y #> #> 1 1949-01-01 112 #> 2 1949-02-01 118 #> 3 1949-03-01 132 #> 4 1949-04-01 129 #> 5 1949-05-01 121 #> 6 1949-06-01 135 #> 7 1949-07-01 148 #> 8 1949-08-01 148 #> 9 1949-09-01 136 #> 10 1949-10-01 119 #> # ℹ 134 more rows #> #> $freq #> [1] \"MS\" #>"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":null,"dir":"Reference","previous_headings":"","what":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"Get NIXTLA_API_KEY options .Renviron private function nixtlar","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"","code":".get_api_key()"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"available, NIXTLA_API_KEY. Otherwise returns error message asking user set API key.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"","code":"if (FALSE) { .get_api_key() }"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":null,"dir":"Reference","previous_headings":"","what":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"Prepares data TimeGPT's API private function nixtlar","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"","code":".nixtla_data_prep(df, freq, id_col, time_col, target_col)"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"df tsibble data frame time series data. freq Frequency data. id_col Column identifies series. named unique_id. time_col Column identifies timestep. named ds. target_col Column contains target variable. named y.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"list given inferred frequency, prepared data, original data frame renamed.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"","code":"df <- nixtlar::electricity data <- .nixtla_data_prep(df, freq=\"H\")"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"Validate exogenous variables (applicable) private function nixtlar","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"","code":".validate_exogenous(df, h, X_df)"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"df tsibble data frame time series data. h Forecast horizon. X_df tsibble data frame future exogenous variables.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"list result validation (TRUE/FALSE) error message (applicable)","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"","code":"if (FALSE) { df <- nixtlar::electricity_exo_vars X_df <- nixtlar::electricity_future_exo_vars .validate_exogenous(df, h=24, X_df) }"},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":null,"dir":"Reference","previous_headings":"","what":"Electricity dataset — electricity","title":"Electricity dataset — electricity","text":"Contains prices different electricity markets.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Electricity dataset — electricity","text":"","code":"electricity"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":"electricity","dir":"Reference","previous_headings":"","what":"electricity","title":"Electricity dataset — electricity","text":"data frame 8400 rows 3 columns: unique_id Unique identifiers electricity markets. ds Date format YYYY:MM:DD hh:mm:ss. y Price given market date.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Electricity dataset — electricity","text":"https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short.csv","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":null,"dir":"Reference","previous_headings":"","what":"Electricity dataset with exogenous variables — electricity_exo_vars","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"Contains prices different electricity markets exogenous variables.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"","code":"electricity_exo_vars"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":"electricity-exo-vars","dir":"Reference","previous_headings":"","what":"electricity_exo_vars","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"data frame 8400 rows 12 columns: unique_id Unique identifiers electricity markets. ds Date format YYYY:MM:DD hh:mm:ss. y Price given market date. Exogenous1 external factor influencing prices. markets, form day-ahead load forecast. Exogenous2 external factor influencing prices. \"\" \"FR\" markets, day-ahead generation forecast. \"NP\", day-ahead wind generation forecast. \"PJM\", day-ahead load forecast specific zone. \"DE\", aggregated day-ahead wind solar generation forecasts. day_0 Binary variable indicating weekday. day_1 Binary variable indicating weekday. day_2 Binary variable indicating weekday. day_3 Binary variable indicating weekday. day_4 Binary variable indicating weekday. day_5 Binary variable indicating weekday. day_6 Binary variable indicating weekday.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short.csv","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":null,"dir":"Reference","previous_headings":"","what":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"Contains future values exogenous variables electricity dataset (24 steps-ahead). used electricity_exo_vars.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"","code":"electricity_future_exo_vars"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":"electricity-future-exo-vars","dir":"Reference","previous_headings":"","what":"electricity_future_exo_vars","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"data frame 120 rows 11 columns: unique_id Unique identifiers electricity markets. ds Date format YYYY:MM:DD hh:mm:ss. Exogenous1 external factor influencing prices. markets, form day-ahead load forecast. Exogenous2 external factor influencing prices. \"\" \"FR\" markets, day-ahead generation forecast. \"NP\", day-ahead wind generation forecast. \"PJM\", day-ahead load forecast specific zone. \"DE\", aggregated day-ahead wind solar generation forecasts. day_0 Binary variable indicating weekday. day_1 Binary variable indicating weekday. day_2 Binary variable indicating weekday. day_3 Binary variable indicating weekday. day_4 Binary variable indicating weekday. day_5 Binary variable indicating weekday. day_6 Binary variable indicating weekday.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short-future-ex-vars.csv","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer frequency of a data frame. — infer_frequency","title":"Infer frequency of a data frame. — infer_frequency","text":"Infer frequency data frame.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer frequency of a data frame. — infer_frequency","text":"","code":"infer_frequency(df)"},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer frequency of a data frame. — infer_frequency","text":"df data frame time series data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer frequency of a data frame. — infer_frequency","text":"inferred frequency.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Infer frequency of a data frame. — infer_frequency","text":"","code":"df <- nixtlar::electricity infer_frequency(df) #> Frequency chosen: H #> [1] \"H\""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtlaR-package.html","id":null,"dir":"Reference","previous_headings":"","what":"nixtlar: A Software Development Kit for Nixtla's TimeGPT — nixtlar-package","title":"nixtlar: A Software Development Kit for Nixtla's TimeGPT — nixtlar-package","text":"Software Development Kit working Nixtla’s TimeGPT, foundation model time series forecasting. \"API\" acronym \"application programming interface\"; package allows users interact TimeGPT via API. can set validate API keys generate forecasts via API calls. compatible 'tsibble' base R. details visit https://docs.nixtla.io/.","code":""},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/nixtlaR-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"nixtlar: A Software Development Kit for Nixtla's TimeGPT — nixtlar-package","text":"Maintainer: Mariana Menchero mariana@nixtla.io (First author maintainer) contributors: Nixtla (Copyright held Nixtla) [copyright holder]","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":null,"dir":"Reference","previous_headings":"","what":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"Perform cross validation TimeGPT.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"","code":"nixtla_client_cross_validation( df, h = 8, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", X_df = NULL, level = NULL, n_windows = 1, step_size = NULL, finetune_steps = 0, finetune_loss = \"default\", clean_ex_first = TRUE, model = \"timegpt-1\" )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"df tsibble data frame time series data. h Forecast horizon. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. X_df tsibble data frame future exogenous variables. level confidence levels (0-100) prediction intervals. n_windows Number windows evaluate. step_size Step size cross validation window. NULL, equal forecast horizon (h). finetune_steps Number steps used finetune TimeGPT new data. finetune_loss Loss function use finetuning. Options : \"default\", \"mae\", \"mse\", \"rmse\", \"mape\", \"smape\". clean_ex_first Clean exogenous signal making forecasts using TimeGPT. model Model use, either \"timegpt-1\" \"timegpt-1-long-horizon\". Use \"timegpt-1-long-horizon\" want forecast one seasonal period given frequency data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"tsibble data frame TimeGPT's cross validation.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_cross_validation(df, h = 8, id_col = \"unique_id\", n_windows = 5) }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":null,"dir":"Reference","previous_headings":"","what":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"Detect anomalies TimeGPT","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"","code":"nixtla_client_detect_anomalies( df, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", level = c(99), clean_ex_first = TRUE, model = \"timegpt-1\" )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"df tsibble data frame time series data. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. level confidence level (0-100) prediction interval used anomaly detection. Default 99. clean_ex_first Clean exogenous signal making forecasts using TimeGPT. model Model use, either \"timegpt-1\" \"timegpt-1-long-horizon\". Use \"timegpt-1-long-horizon\" want forecast one seasonal period given frequency data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"tsibble data frame anomalies detected historical period.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_anomaly_detection(df, id_col=\"unique_id\") }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate TimeGPT forecast — nixtla_client_forecast","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"Generate TimeGPT forecast","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"","code":"nixtla_client_forecast( df, h = 8, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", X_df = NULL, level = NULL, finetune_steps = 0, finetune_loss = \"default\", clean_ex_first = TRUE, add_history = FALSE, model = \"timegpt-1\" )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"df tsibble data frame time series data. h Forecast horizon. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. X_df tsibble data frame future exogenous variables. level confidence levels (0-100) prediction intervals. finetune_steps Number steps used finetune TimeGPT new data. finetune_loss Loss function use finetuning. Options : \"default\", \"mae\", \"mse\", \"rmse\", \"mape\", \"smape\". clean_ex_first Clean exogenous signal making forecasts using TimeGPT. add_history Return fitted values model. model Model use, either \"timegpt-1\" \"timegpt-1-long-horizon\". Use \"timegpt-1-long-horizon\" want forecast one seasonal period given frequency data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"TimeGPT's forecast.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_forecast(df, h=8, id_col=\"unique_id\", level=c(80,95)) }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"Generate TimeGPT forecast -sample period (historical period).","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"","code":"nixtla_client_historic( df, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", level = NULL, finetune_steps = 0, finetune_loss = \"default\", clean_ex_first = TRUE )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"df tsibble data frame time series data. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. level confidence levels (0-100) prediction intervals. finetune_steps Number steps used finetune TimeGPT new data. finetune_loss Loss function use finetuning. Options : \"default\", \"mae\", \"mse\", \"rmse\", \"mape\", \"smape\". clean_ex_first Clean exogenous signal making forecasts using TimeGPT.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"TimeGPT's forecast -sample period.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_historic(df, id_col=\"unique_id\", level=c(80,95)) }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"Plot output following nixtla_client functions: forecast, historic, anomaly_detection, cross_validation.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"","code":"nixtla_client_plot( df, fcst = NULL, h = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", unique_ids = NULL, max_insample_length = NULL, plot_anomalies = FALSE )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"df tsibble data frame time series data (insample values). fcst tsibble data frame TimeGPT point forecast prediction intervals (available). h Forecast horizon. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. unique_ids Time series plot. NULL (default), selection random. max_insample_length Max number insample observations plotted. plot_anomalies Whether plot anomalies.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"Corresponding plot.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_forecast(df, h=8, id_col=\"unique_id\", level=c(80,95)) nixtlar::timegpt_plot(df, fcst, h=8, id_col=\"unique_id\") }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":null,"dir":"Reference","previous_headings":"","what":"Set API key in global environment — nixtla_set_api_key","title":"Set API key in global environment — nixtla_set_api_key","text":"Set API key global environment","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set API key in global environment — nixtla_set_api_key","text":"","code":"nixtla_set_api_key(api_key)"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set API key in global environment — nixtla_set_api_key","text":"api_key user's API key. Get : https://dashboard.nixtla.io/","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set API key in global environment — nixtla_set_api_key","text":"message indicating API key set global environment.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set API key in global environment — nixtla_set_api_key","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate API key — nixtla_validate_api_key","title":"Validate API key — nixtla_validate_api_key","text":"Validate API key","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate API key — nixtla_validate_api_key","text":"","code":"nixtla_validate_api_key()"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate API key — nixtla_validate_api_key","text":"status code message indicating whether API key valid.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate API key — nixtla_validate_api_key","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") nixtlar::nixtla_validate_api_key }"},{"path":"https://nixtla.github.io/nixtlar/news/index.html","id":"nixtlar-050","dir":"Changelog","previous_headings":"","what":"nixtlar 0.5.0","title":"nixtlar 0.5.0","text":"Initial CRAN submission.","code":""}] +[{"path":"https://nixtla.github.io/nixtlar/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"Apache License","title":"Apache License","text":"Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS CONDITIONS USE, REPRODUCTION, DISTRIBUTION Definitions. “License” shall mean terms conditions use, reproduction, distribution defined Sections 1 9 document. “Licensor” shall mean copyright owner entity authorized copyright owner granting License. “Legal Entity” shall mean union acting entity entities control, controlled , common control entity. purposes definition, “control” means () power, direct indirect, cause direction management entity, whether contract otherwise, (ii) ownership fifty percent (50%) outstanding shares, (iii) beneficial ownership entity. “” (“”) shall mean individual Legal Entity exercising permissions granted License. “Source” form shall mean preferred form making modifications, including limited software source code, documentation source, configuration files. “Object” form shall mean form resulting mechanical transformation translation Source form, including limited compiled object code, generated documentation, conversions media types. “Work” shall mean work authorship, whether Source Object form, made available License, indicated copyright notice included attached work (example provided Appendix ). “Derivative Works” shall mean work, whether Source Object form, based (derived ) Work editorial revisions, annotations, elaborations, modifications represent, whole, original work authorship. purposes License, Derivative Works shall include works remain separable , merely link (bind name) interfaces , Work Derivative Works thereof. “Contribution” shall mean work authorship, including original version Work modifications additions Work Derivative Works thereof, intentionally submitted Licensor inclusion Work copyright owner individual Legal Entity authorized submit behalf copyright owner. purposes definition, “submitted” means form electronic, verbal, written communication sent Licensor representatives, including limited communication electronic mailing lists, source code control systems, issue tracking systems managed , behalf , Licensor purpose discussing improving Work, excluding communication conspicuously marked otherwise designated writing copyright owner “Contribution.” “Contributor” shall mean Licensor individual Legal Entity behalf Contribution received Licensor subsequently incorporated within Work. Grant Copyright License. Subject terms conditions License, Contributor hereby grants perpetual, worldwide, non-exclusive, -charge, royalty-free, irrevocable copyright license reproduce, prepare Derivative Works , publicly display, publicly perform, sublicense, distribute Work Derivative Works Source Object form. Grant Patent License. Subject terms conditions License, Contributor hereby grants perpetual, worldwide, non-exclusive, -charge, royalty-free, irrevocable (except stated section) patent license make, made, use, offer sell, sell, import, otherwise transfer Work, license applies patent claims licensable Contributor necessarily infringed Contribution(s) alone combination Contribution(s) Work Contribution(s) submitted. institute patent litigation entity (including cross-claim counterclaim lawsuit) alleging Work Contribution incorporated within Work constitutes direct contributory patent infringement, patent licenses granted License Work shall terminate date litigation filed. Redistribution. may reproduce distribute copies Work Derivative Works thereof medium, without modifications, Source Object form, provided meet following conditions: must give recipients Work Derivative Works copy License; must cause modified files carry prominent notices stating changed files; must retain, Source form Derivative Works distribute, copyright, patent, trademark, attribution notices Source form Work, excluding notices pertain part Derivative Works; Work includes “NOTICE” text file part distribution, Derivative Works distribute must include readable copy attribution notices contained within NOTICE file, excluding notices pertain part Derivative Works, least one following places: within NOTICE text file distributed part Derivative Works; within Source form documentation, provided along Derivative Works; , within display generated Derivative Works, wherever third-party notices normally appear. contents NOTICE file informational purposes modify License. may add attribution notices within Derivative Works distribute, alongside addendum NOTICE text Work, provided additional attribution notices construed modifying License. may add copyright statement modifications may provide additional different license terms conditions use, reproduction, distribution modifications, Derivative Works whole, provided use, reproduction, distribution Work otherwise complies conditions stated License. Submission Contributions. Unless explicitly state otherwise, Contribution intentionally submitted inclusion Work Licensor shall terms conditions License, without additional terms conditions. Notwithstanding , nothing herein shall supersede modify terms separate license agreement may executed Licensor regarding Contributions. Trademarks. License grant permission use trade names, trademarks, service marks, product names Licensor, except required reasonable customary use describing origin Work reproducing content NOTICE file. Disclaimer Warranty. Unless required applicable law agreed writing, Licensor provides Work (Contributor provides Contributions) “” BASIS, WITHOUT WARRANTIES CONDITIONS KIND, either express implied, including, without limitation, warranties conditions TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS PARTICULAR PURPOSE. solely responsible determining appropriateness using redistributing Work assume risks associated exercise permissions License. Limitation Liability. event legal theory, whether tort (including negligence), contract, otherwise, unless required applicable law (deliberate grossly negligent acts) agreed writing, shall Contributor liable damages, including direct, indirect, special, incidental, consequential damages character arising result License use inability use Work (including limited damages loss goodwill, work stoppage, computer failure malfunction, commercial damages losses), even Contributor advised possibility damages. Accepting Warranty Additional Liability. redistributing Work Derivative Works thereof, may choose offer, charge fee , acceptance support, warranty, indemnity, liability obligations /rights consistent License. However, accepting obligations, may act behalf sole responsibility, behalf Contributor, agree indemnify, defend, hold Contributor harmless liability incurred , claims asserted , Contributor reason accepting warranty additional liability. END TERMS CONDITIONS","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"anomaly-detection","dir":"Articles","previous_headings":"","what":"1. Anomaly detection","title":"Anomaly Detection","text":"Anomaly detection plays crucial role time series analysis forecasting. Anomalies, also known outliers, unusual observations don’t follow expected time series patterns. can caused variety factors, including errors data collection process, unexpected events, sudden changes patterns time series. Anomalies can provide critical information system, like potential problem malfunction. identifying , important understand caused , decide whether remove, replace, keep . TimeGPT method detecting anomalies, users can call nixtlar. vignette explain . assumes already set API key. haven’t done , please read Get Started vignette first.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"load-data","dir":"Articles","previous_headings":"","what":"2. Load data","title":"Anomaly Detection","text":"vignette, ’ll use electricity consumption dataset included nixtlar, contains hourly prices five different electricity markets.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61"},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"detect-anomalies","dir":"Articles","previous_headings":"","what":"3. Detect anomalies","title":"Anomaly Detection","text":"detect anomalies, use nixtlar::nixtla_client_detect_anomalies. key parameters method : df: data frame tsibble time series data. include least column datestamps column observations. Default names columns ds y. different, please specify names. id_col: data contains multiple ids, case, please specify column contains . working single series, leave default (NULL). anomaly_detection method TimeGPT evaluates observation uses prediction interval determine anomaly . default, nixtlar::nixtla_client_detect_anomalies uses 99% prediction interval. Observations fall outside interval considered anomalies value 1 anomaly column (zero otherwise). change prediction interval, example 95%, use argument level=c(95). Keep mind multiple levels allowed, given several values, nixtlar::nixtla_client_detect_anomalies use maximum.","code":"nixtla_client_anomalies <- nixtlar::nixtla_client_detect_anomalies(df, id_col = \"unique_id\") #> Frequency chosen: H head(nixtla_client_anomalies) #> unique_id ds y anomaly TimeGPT-lo-99 TimeGPT #> 1 BE 2016-10-27 00:00:00 52.58 0 -28.58336 56.07623 #> 2 BE 2016-10-27 01:00:00 44.86 0 -32.23986 52.41973 #> 3 BE 2016-10-27 02:00:00 42.31 0 -31.84485 52.81474 #> 4 BE 2016-10-27 03:00:00 39.66 0 -32.06933 52.59026 #> 5 BE 2016-10-27 04:00:00 38.98 0 -31.98661 52.67297 #> 6 BE 2016-10-27 05:00:00 42.31 0 -30.55300 54.10659 #> TimeGPT-hi-99 #> 1 140.7358 #> 2 137.0793 #> 3 137.4743 #> 4 137.2498 #> 5 137.3326 #> 6 138.7662"},{"path":"https://nixtla.github.io/nixtlar/articles/anomaly-detection.html","id":"plot-anomalies","dir":"Articles","previous_headings":"","what":"4. Plot anomalies","title":"Anomaly Detection","text":"nixtlar includes function plot historical data output nixtlar::nixtla_client_forecast, nixtlar::nixtla_client_historic, nixtlar::nixtla_client_detect_anomalies nixtlar::nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full). using nixtlar::nixtla_client_plot output nixtlar::nixtla_client_detect_anomalies, set plot_anomalies=TRUE plot anomalies.","code":"nixtlar::nixtla_client_plot(df, nixtla_client_anomalies, id_col = \"unique_id\", plot_anomalies = TRUE) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"time-series-cross-validation","dir":"Articles","previous_headings":"","what":"1. Time series cross-validation","title":"Cross-Validation","text":"Cross-validation method evaluating performance forecasting model. Given time series, carried defining sliding window across historical data predicting period following . accuracy model computed averaging accuracy across cross-validation windows. method results better estimation model’s predictive abilities, since considers multiple periods instead just one, respecting sequential nature data. TimeGPT method performing time series cross-validation, users can call nixtlar. vignette explain . assumes already set API key. haven’t done , please read Get Started vignette first.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"load-data","dir":"Articles","previous_headings":"","what":"2. Load data","title":"Cross-Validation","text":"vignette, ’ll use electricity consumption dataset included nixtlar, contains hourly prices five different electricity markets.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61"},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"perform-time-series-cross-validation","dir":"Articles","previous_headings":"","what":"3. Perform time series cross-validation","title":"Cross-Validation","text":"perform time series cross-validation using TimeGPT, use nixtlar::nixtla_client_cross_validation. key parameters method : df: dataframe tsibble time series data. include least column datestamps column observations. Default names columns ds y. different, please specify names. h: forecast horizon. id_col: data contains multiple ids, case, please specify column contains . working single series, leave default (NULL). n_windows: number windows evaluate. Default value 1. step_size: gap cross-validation window. Default value NULL.","code":"nixtla_client_cv <- nixtla_client_cross_validation(df, h = 8, id_col = \"unique_id\", n_windows = 5) #> Frequency chosen: H head(nixtla_client_cv) #> unique_id ds cutoff y TimeGPT #> 1 BE 2016-12-29 08:00:00 2016-12-29 07:00:00 53.30 51.79829 #> 2 BE 2016-12-29 09:00:00 2016-12-29 07:00:00 53.93 55.48120 #> 3 BE 2016-12-29 10:00:00 2016-12-29 07:00:00 56.63 55.86470 #> 4 BE 2016-12-29 11:00:00 2016-12-29 07:00:00 55.66 54.45249 #> 5 BE 2016-12-29 12:00:00 2016-12-29 07:00:00 48.00 54.76038 #> 6 BE 2016-12-29 13:00:00 2016-12-29 07:00:00 46.53 53.56611"},{"path":"https://nixtla.github.io/nixtlar/articles/cross-validation.html","id":"plot-cross-validation-results","dir":"Articles","previous_headings":"","what":"4. Plot cross-validation results","title":"Cross-Validation","text":"nixtlar includes function plot historical data output nixtlar::nixtla_client_forecast, nixtlar::nixtla_client_historic, nixtlar::nixtla_client_anomaly_detection nixtlar::nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full). using nixtlar::nixtla_client_plot output nixtlar::nixtla_client_cross_validation, cross-validation window visually represented vertical dashed lines. given pair lines, data first line forms training set. set used forecast data two lines.","code":"nixtla_client_plot(df, nixtla_client_cv, id_col = \"unique_id\", max_insample_length = 200) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/articles/exogenous-variables.html","id":"exogenous-variables","dir":"Articles","previous_headings":"","what":"1. Exogenous variables","title":"Exogenous Variables","text":"Exogenous variables external factors provide additional information behavior target variable time series forecasting. variables, correlated target, can significantly improve predictions. Examples exogenous variables include weather data, economic indicators, holiday markers, promotional sales. TimeGPT allows include exogenous variables generating forecast. vignette show include . assumes already set API key. haven’t done , please read Get Started vignette first.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/exogenous-variables.html","id":"load-data","dir":"Articles","previous_headings":"","what":"2. Load data","title":"Exogenous Variables","text":"vignette, use electricity consumption dataset exogenous variables included nixtlar. dataset contains hourly prices five different electricity markets, along two exogenous variables related prices binary variables indicating day week. using exogenous variables, must provide future values cover complete forecast horizon; otherwise, TimeGPT result error. Ensure dates future exogenous variables exactly match forecast horizon. electricity consumption dataset exogenous variables, nixtlar provides values next 24 steps ahead.","code":"df_exo_vars <- nixtlar::electricity_exo_vars head(df_exo_vars) #> unique_id ds y Exogenous1 Exogenous2 day_0 day_1 day_2 #> 1 BE 2016-10-22 00:00:00 70.00 49593 57253 0 0 0 #> 2 BE 2016-10-22 01:00:00 37.10 46073 51887 0 0 0 #> 3 BE 2016-10-22 02:00:00 37.10 44927 51896 0 0 0 #> 4 BE 2016-10-22 03:00:00 44.75 44483 48428 0 0 0 #> 5 BE 2016-10-22 04:00:00 37.10 44338 46721 0 0 0 #> 6 BE 2016-10-22 05:00:00 35.61 44504 46303 0 0 0 #> day_3 day_4 day_5 day_6 #> 1 0 0 1 0 #> 2 0 0 1 0 #> 3 0 0 1 0 #> 4 0 0 1 0 #> 5 0 0 1 0 #> 6 0 0 1 0 future_exo_vars <- nixtlar::electricity_future_exo_vars head(future_exo_vars) #> unique_id ds Exogenous1 Exogenous2 day_0 day_1 day_2 day_3 #> 1 BE 2016-12-31 00:00:00 64108 70318 0 0 0 0 #> 2 BE 2016-12-31 01:00:00 62492 67898 0 0 0 0 #> 3 BE 2016-12-31 02:00:00 61571 68379 0 0 0 0 #> 4 BE 2016-12-31 03:00:00 60381 64972 0 0 0 0 #> 5 BE 2016-12-31 04:00:00 60298 62900 0 0 0 0 #> 6 BE 2016-12-31 05:00:00 60339 62364 0 0 0 0 #> day_4 day_5 day_6 #> 1 0 1 0 #> 2 0 1 0 #> 3 0 1 0 #> 4 0 1 0 #> 5 0 1 0 #> 6 0 1 0"},{"path":"https://nixtla.github.io/nixtlar/articles/exogenous-variables.html","id":"forecast-with-exogenous-variables","dir":"Articles","previous_headings":"","what":"3. Forecast with exogenous variables","title":"Exogenous Variables","text":"generate forecast exogenous variables, use nixtla_client_forecast function forecasts without . difference must add exogenous variables using X_df argument. Keep mind default names time target columns ds y, respectively. time target columns different names, specify time_col target_col. Since dataset multiple ids (one every electricity market), need specify name column contains ids, case unique_id. , simply use id_col=\"unique_id\". comparison, also generate forecast without exogenous variables.","code":"fcst_exo_vars <- nixtla_client_forecast(df_exo_vars, h = 24, id_col = \"unique_id\", X_df = future_exo_vars) #> Frequency chosen: H head(fcst_exo_vars) #> unique_id ds TimeGPT #> 1 BE 2016-12-31 00:00:00 74.54077 #> 2 BE 2016-12-31 01:00:00 43.34429 #> 3 BE 2016-12-31 02:00:00 44.42922 #> 4 BE 2016-12-31 03:00:00 38.09440 #> 5 BE 2016-12-31 04:00:00 37.38914 #> 6 BE 2016-12-31 05:00:00 39.08574 df <- nixtlar::electricity # same dataset but without the exogenous variables fcst <- nixtla_client_forecast(df, h = 24, id_col = \"unique_id\") #> Frequency chosen: H head(fcst) #> unique_id ds TimeGPT #> 1 BE 2016-12-31 00:00:00 45.19045 #> 2 BE 2016-12-31 01:00:00 43.24445 #> 3 BE 2016-12-31 02:00:00 41.95839 #> 4 BE 2016-12-31 03:00:00 39.79649 #> 5 BE 2016-12-31 04:00:00 39.20453 #> 6 BE 2016-12-31 05:00:00 40.10878"},{"path":"https://nixtla.github.io/nixtlar/articles/exogenous-variables.html","id":"plot-timegpt-forecast","dir":"Articles","previous_headings":"","what":"4. Plot TimeGPT forecast","title":"Exogenous Variables","text":"nixtlar includes function plot historical data output nixtla_client_forecast, nixtla_client_historic, nixtla_client_anomaly_detection nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full).","code":"nixtla_client_plot(df_exo_vars, fcst_exo_vars, id_col = \"unique_id\", max_insample_length = 500) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"setting-up-your-api-key","dir":"Articles","previous_headings":"","what":"1. Setting up your API key","title":"Get Started","text":"First, need set API key. API key string characters allows authenticate requests using TimeGPT via nixtlar. API key needs provided Nixtla, don’t one, please request one . using nixtlar, two ways setting API key:","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"a--using-the-nixtla_set_api_key-function","dir":"Articles","previous_headings":"1. Setting up your API key","what":"a. Using the nixtla_set_api_key function","title":"Get Started","text":"nixtlar function easily set API key current R session. Simply call Keep mind close R session re-start , ’ll need set API key .","code":"nixtla_set_api_key(api_key = \"paste your API key here\")"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"b--using-an-environment-variable","dir":"Articles","previous_headings":"1. Setting up your API key","what":"b. Using an environment variable","title":"Get Started","text":"persistent method can used across different projects, set API key environment variable. , first need load usethis package. open .Reviron file. Place API key named NIXTLA_API_KEY. ’ll need restart R changes take effect. Keep mind modifying .Renviron file affects R sessions, ’re comfortable , set API key using nixtla_set_api_key function.","code":"library(usethis) usethis::edit_r_environ() # Inside the .Renviron file NIXTLA_API_KEY=\"paste your API key here\""},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"validate-your-api-key","dir":"Articles","previous_headings":"1. Setting up your API key","what":"Validate your API key","title":"Get Started","text":"want validate API key, call nixtla_validate_api_key. don’t need validate API key every time set , want check ’s valid.","code":"nixtla_validate_api_key() #> API key validation successful. Happy forecasting! :) #> If you have questions or need support, please email ops@nixtla.io"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"generate-timegpt-forecast","dir":"Articles","previous_headings":"","what":"2. Generate TimeGPT forecast","title":"Get Started","text":"API key set , ’re ready use TimeGPT. ’ll show done using dataset contains prices different electricity markets. generate forecast dataset, use nixtla_client_forecast. Default names time target columns ds y. time target columns different names, specify time_col target_col. Since multiple ids (one every electricity market), ’ll need specify name column contains ids, case unique_id. , simply use id_col=\"unique_id\". can also choose confidence levels (0-100) prediction intervals level.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61 nixtla_client_fcst <- nixtla_client_forecast(df, h = 8, id_col = \"unique_id\", level = c(80,95)) #> Frequency chosen: H head(nixtla_client_fcst) #> unique_id ds TimeGPT TimeGPT-lo-95 TimeGPT-lo-80 #> 1 BE 2016-12-31 00:00:00 45.19045 32.60115 40.42074 #> 2 BE 2016-12-31 01:00:00 43.24445 29.30454 36.91513 #> 3 BE 2016-12-31 02:00:00 41.95839 28.17721 35.55863 #> 4 BE 2016-12-31 03:00:00 39.79649 25.42790 33.45859 #> 5 BE 2016-12-31 04:00:00 39.20454 23.53869 30.35095 #> 6 BE 2016-12-31 05:00:00 40.10878 26.90472 31.60236 #> TimeGPT-hi-80 TimeGPT-hi-95 #> 1 49.96017 57.77975 #> 2 49.57376 57.18435 #> 3 48.35815 55.73957 #> 4 46.13438 54.16507 #> 5 48.05812 54.87038 #> 6 48.61520 53.31284"},{"path":"https://nixtla.github.io/nixtlar/articles/get-started.html","id":"plot-timegpt-forecast","dir":"Articles","previous_headings":"","what":"3. Plot TimeGPT forecast","title":"Get Started","text":"nixtlar includes function plot historical data output nixtla_client_forecast, nixtla_client_historic, nixtla_client_anomaly_detection nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full).","code":"nixtla_client_plot(df, nixtla_client_fcst, id_col = \"unique_id\", max_insample_length = 200) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"timegpt-historical-forecast","dir":"Articles","previous_headings":"","what":"1. TimeGPT Historical Forecast","title":"Historical Forecast","text":"generating forecast, sometimes might interested forecasting historical observations. predictions, known fitted values, can help better understand evaluate model’s performance time. TimeGPT method generating fitted values, users can call nixtlar. vignette explain . assumes already set API key. haven’t done , please read Get Started vignette first.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"load-data","dir":"Articles","previous_headings":"","what":"2. Load data","title":"Historical Forecast","text":"vignette, ’ll use electricity consumption dataset included nixtlar, contains hourly prices five different electricity markets.","code":"df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61"},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"forecast-historical-data","dir":"Articles","previous_headings":"","what":"3. Forecast historical data","title":"Historical Forecast","text":"generate forecast historical data, use nixtlar::nixtla_client_historic. key parameters method : df: dataframe tsibble time series data. include least column datestamps column observations. Default names columns ds y. different, please specify names. id_col: data contains multiple ids, case, please specify column contains . working single series, leave default (NULL). level: prediction intervals forecast. Notice fitted values initial observations. TimeGPT requires minimum number values generate reliable forecasts. fitted values generated using rolling window, meaning fitted value observation \\(T\\) generated using first \\(T-1\\) observations.","code":"nixtla_client_fitted_values <- nixtla_client_historic(df, id_col = \"unique_id\", level = c(80,95)) #> Frequency chosen: H head(nixtla_client_fitted_values) #> unique_id ds TimeGPT TimeGPT-lo-80 TimeGPT-lo-95 #> 1 BE 2016-10-27 00:00:00 56.07623 13.95557 -8.341764 #> 2 BE 2016-10-27 01:00:00 52.41973 10.29907 -11.998258 #> 3 BE 2016-10-27 02:00:00 52.81474 10.69408 -11.603250 #> 4 BE 2016-10-27 03:00:00 52.59026 10.46960 -11.827729 #> 5 BE 2016-10-27 04:00:00 52.67297 10.55231 -11.745015 #> 6 BE 2016-10-27 05:00:00 54.10659 11.98593 -10.311399 #> TimeGPT-hi-80 TimeGPT-hi-95 #> 1 98.19688 120.4942 #> 2 94.54039 116.8377 #> 3 94.93540 117.2327 #> 4 94.71092 117.0082 #> 5 94.79363 117.0910 #> 6 96.22725 118.5246"},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"fitted-values-from-nixtlarnixtla_client_forecast","dir":"Articles","previous_headings":"3. Forecast historical data","what":"3.1 Fitted values from nixtlar::nixtla_client_forecast","title":"Historical Forecast","text":"nixtlar::nixtla_client_historic dedicated function calls TimeGPT’s method generating fitted values. However, can also use nixtlar::nixtla_client_forecast add_history=TRUE. generate forecast historical data next \\(h\\) future observations.","code":""},{"path":"https://nixtla.github.io/nixtlar/articles/historical-forecast.html","id":"plot-historical-forecast","dir":"Articles","previous_headings":"","what":"4. Plot historical forecast","title":"Historical Forecast","text":"nixtlar includes function plot historical data output nixtla_client_forecast, nixtla_client_historic, nixtla_client_anomaly_detection nixtla_client_cross_validation. long series, can use max_insample_length plot last N historical values (forecast always plotted full).","code":"nixtla_client_plot(df, nixtla_client_fitted_values, id_col = \"unique_id\", max_insample_length = 200) #> Frequency chosen: H"},{"path":"https://nixtla.github.io/nixtlar/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Mariana Menchero. Author, maintainer. First author maintainer Nixtla. Copyright holder. Copyright held Nixtla","code":""},{"path":"https://nixtla.github.io/nixtlar/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Menchero M (2024). nixtlar: Software Development Kit Nixtla's TimeGPT. R package version 0.5.0, https://docs.nixtla.io/, https://nixtla.github.io/nixtlar/.","code":"@Manual{, title = {nixtlar: A Software Development Kit for Nixtla's TimeGPT}, author = {Mariana Menchero}, year = {2024}, note = {R package version 0.5.0, https://docs.nixtla.io/}, url = {https://nixtla.github.io/nixtlar/}, }"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"timegpt-1","dir":"","previous_headings":"","what":"TimeGPT-1","title":"A Software Development Kit for Nixtla's TimeGPT","text":"first foundation model time series forecasting anomaly detection TimeGPT production-ready, generative pretrained transformer time series forecasting, developed Nixtla. capable accurately predicting various domains retail, electricity, finance, IoT, just lines code. Additionally, can detect anomalies time series data. TimeGPT initially developed Python now available R users nixtlar package.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"table-of-contents","dir":"","previous_headings":"","what":"Table of Contents","title":"A Software Development Kit for Nixtla's TimeGPT","text":"Installation Forecast Using TimeGPT 3 Easy Steps Anomaly Detection Using TimeGPT 3 Easy Steps Features Capabilities Documentation API Support Cite License Get Touch","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"quickstart","dir":"","previous_headings":"","what":"Quickstart","title":"A Software Development Kit for Nixtla's TimeGPT","text":"https://github.com/Nixtla/nixtlar/assets/47995617/1be6d63c-7cfd-4c29-b8e8-f7378c982724","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"A Software Development Kit for Nixtla's TimeGPT","text":"can install development version nixtlar GitHub :","code":"# install.packages(\"devtools\") devtools::install_github(\"Nixtla/nixtlar\")"},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"forecast-using-timegpt-in-3-easy-steps","dir":"","previous_headings":"","what":"Forecast Using TimeGPT in 3 Easy Steps","title":"A Software Development Kit for Nixtla's TimeGPT","text":"Set API key. Get dashboard.nixtla.io Load sample data Forecast next 8 steps ahead Optionally, plot results","code":"library(nixtlar) nixtla_set_api_key(api_key = \"Your API key here\") df <- nixtlar::electricity head(df) #> unique_id ds y #> 1 BE 2016-10-22 00:00:00 70.00 #> 2 BE 2016-10-22 01:00:00 37.10 #> 3 BE 2016-10-22 02:00:00 37.10 #> 4 BE 2016-10-22 03:00:00 44.75 #> 5 BE 2016-10-22 04:00:00 37.10 #> 6 BE 2016-10-22 05:00:00 35.61 nixtla_client_fcst <- nixtla_client_forecast(df, h = 8, id_col = \"unique_id\", level = c(80,95)) #> Frequency chosen: H head(nixtla_client_fcst) #> unique_id ds TimeGPT TimeGPT-lo-95 TimeGPT-lo-80 #> 1 BE 2016-12-31 00:00:00 45.19045 32.60115 40.42074 #> 2 BE 2016-12-31 01:00:00 43.24445 29.30454 36.91513 #> 3 BE 2016-12-31 02:00:00 41.95839 28.17721 35.55863 #> 4 BE 2016-12-31 03:00:00 39.79649 25.42790 33.45859 #> 5 BE 2016-12-31 04:00:00 39.20454 23.53869 30.35095 #> 6 BE 2016-12-31 05:00:00 40.10878 26.90472 31.60236 #> TimeGPT-hi-80 TimeGPT-hi-95 #> 1 49.96017 57.77975 #> 2 49.57376 57.18435 #> 3 48.35815 55.73957 #> 4 46.13438 54.16507 #> 5 48.05812 54.87038 #> 6 48.61520 53.31284 nixtla_client_plot(df, nixtla_client_fcst, id_col = \"unique_id\", max_insample_length = 200)"},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"anomaly-detection-using-timegpt-in-3-easy-steps","dir":"","previous_headings":"","what":"Anomaly Detection Using TimeGPT in 3 Easy Steps","title":"A Software Development Kit for Nixtla's TimeGPT","text":"anomaly detection TimeGPT, also 3 easy steps! Follow steps 1 2 previous section use nixtla_client_detect_anomalies nixtla_client_plot functions.","code":"nixtla_client_anomalies <- nixtlar::nixtla_client_detect_anomalies(df, id_col = \"unique_id\") #> Frequency chosen: H head(nixtla_client_anomalies) #> unique_id ds y anomaly TimeGPT-lo-99 TimeGPT #> 1 BE 2016-10-27 00:00:00 52.58 0 -28.58336 56.07623 #> 2 BE 2016-10-27 01:00:00 44.86 0 -32.23986 52.41973 #> 3 BE 2016-10-27 02:00:00 42.31 0 -31.84485 52.81474 #> 4 BE 2016-10-27 03:00:00 39.66 0 -32.06933 52.59026 #> 5 BE 2016-10-27 04:00:00 38.98 0 -31.98661 52.67297 #> 6 BE 2016-10-27 05:00:00 42.31 0 -30.55300 54.10659 #> TimeGPT-hi-99 #> 1 140.7358 #> 2 137.0793 #> 3 137.4743 #> 4 137.2498 #> 5 137.3326 #> 6 138.7662 nixtlar::nixtla_client_plot(df, nixtla_client_anomalies, id_col = \"unique_id\", plot_anomalies = TRUE)"},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"features-and-capabilities","dir":"","previous_headings":"","what":"Features and Capabilities","title":"A Software Development Kit for Nixtla's TimeGPT","text":"nixtlar provides access TimeGPT’s features capabilities, : Zero-shot Inference: TimeGPT can generate forecasts detect anomalies straight box, requiring prior training data. allows immediate deployment quick insights time series data. Fine-tuning: Enhance TimeGPT’s capabilities fine-tuning model specific datasets, enabling model adapt nuances unique time series data improving performance tailored tasks. Add Exogenous Variables: Incorporate additional variables might influence predictions enhance forecast accuracy. (E.g. Special Dates, events prices) Multiple Series Forecasting: Simultaneously forecast multiple time series data, optimizing workflows resources. Custom Loss Function: Tailor fine-tuning process custom loss function meet specific performance metrics. Cross Validation: Implement box cross-validation techniques ensure model robustness generalizability. Prediction Intervals: Provide intervals predictions quantify uncertainty effectively. Irregular Timestamps: Handle data irregular timestamps, accommodating non-uniform interval series without preprocessing.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"A Software Development Kit for Nixtla's TimeGPT","text":"comprehensive documentation, please refer vignettes, cover wide range topics help effectively use nixtlar. current documentation includes guides : Get started set API key anomaly detection Generate historical forecasts Perform time series cross-validation documentation ongoing effort, working expanding coverage.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"api-support","dir":"","previous_headings":"","what":"API Support","title":"A Software Development Kit for Nixtla's TimeGPT","text":"Python user? yes, check Python SDK TimeGPT. can also refer API reference support programming languages.","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"how-to-cite","dir":"","previous_headings":"","what":"How to Cite","title":"A Software Development Kit for Nixtla's TimeGPT","text":"find TimeGPT useful research, please consider citing TimeGPT-1 paper. associated reference shown . Garza, ., Challu, C., & Mergenthaler-Canseco, M. (2024). TimeGPT-1. arXiv preprint arXiv:2310.03589. Available https://arxiv.org/abs/2310.03589","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"A Software Development Kit for Nixtla's TimeGPT","text":"TimeGPT closed source. However, SDK open source available Apache 2.0 License, feel free contribute!","code":""},{"path":"https://nixtla.github.io/nixtlar/index.html","id":"get-in-touch","dir":"","previous_headings":"","what":"Get in Touch","title":"A Software Development Kit for Nixtla's TimeGPT","text":"welcome input contributions nixtlar package! Report Issues: encounter bug suggestion improve package, please open issue GitHub. Contribute: can contribute opening pull request repository. Whether fixing bug, adding new feature, improving documentation, appreciate help making nixtlar better.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"Infer frequency tsibble convert index date string.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"","code":"date_conversion(df)"},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"df tsibble.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"list inferred frequency df new index.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/date_conversion.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Infer frequency of a tsibble and convert its index to date or string. — date_conversion","text":"","code":"df <- AirPassengers tsbl <- tsibble::as_tsibble(df) names(tsbl) <- c(\"ds\", \"y\") date_conversion(tsbl) #> Frequency chosen: MS #> $df #> # A tibble: 144 × 2 #> ds y #> #> 1 1949-01-01 112 #> 2 1949-02-01 118 #> 3 1949-03-01 132 #> 4 1949-04-01 129 #> 5 1949-05-01 121 #> 6 1949-06-01 135 #> 7 1949-07-01 148 #> 8 1949-08-01 148 #> 9 1949-09-01 136 #> 10 1949-10-01 119 #> # ℹ 134 more rows #> #> $freq #> [1] \"MS\" #>"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":null,"dir":"Reference","previous_headings":"","what":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"Get NIXTLA_API_KEY options .Renviron private function nixtlar","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"","code":".get_api_key()"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"available, NIXTLA_API_KEY. Otherwise returns error message asking user set API key.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-get_api_key.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get NIXTLA_API_KEY from options or from .Renviron This is a private function of nixtlar — .get_api_key","text":"","code":"if (FALSE) { .get_api_key() }"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":null,"dir":"Reference","previous_headings":"","what":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"Prepares data TimeGPT's API private function nixtlar","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"","code":".nixtla_data_prep(df, freq, id_col, time_col, target_col)"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"df tsibble data frame time series data. freq Frequency data. id_col Column identifies series. named unique_id. time_col Column identifies timestep. named ds. target_col Column contains target variable. named y.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"list given inferred frequency, prepared data, original data frame renamed.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-nixtla_data_prep.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Prepares data for TimeGPT's API This is a private function of nixtlar — .nixtla_data_prep","text":"","code":"df <- nixtlar::electricity data <- .nixtla_data_prep(df, freq=\"H\")"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"Validate exogenous variables (applicable) private function nixtlar","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"","code":".validate_exogenous(df, h, X_df)"},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"df tsibble data frame time series data. h Forecast horizon. X_df tsibble data frame future exogenous variables.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"list result validation (TRUE/FALSE) error message (applicable)","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/dot-validate_exogenous.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate exogenous variables (if applicable) This is a private function of nixtlar — .validate_exogenous","text":"","code":"if (FALSE) { df <- nixtlar::electricity_exo_vars X_df <- nixtlar::electricity_future_exo_vars .validate_exogenous(df, h=24, X_df) }"},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":null,"dir":"Reference","previous_headings":"","what":"Electricity dataset — electricity","title":"Electricity dataset — electricity","text":"Contains prices different electricity markets.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Electricity dataset — electricity","text":"","code":"electricity"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":"electricity","dir":"Reference","previous_headings":"","what":"electricity","title":"Electricity dataset — electricity","text":"data frame 8400 rows 3 columns: unique_id Unique identifiers electricity markets. ds Date format YYYY:MM:DD hh:mm:ss. y Price given market date.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Electricity dataset — electricity","text":"https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short.csv","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":null,"dir":"Reference","previous_headings":"","what":"Electricity dataset with exogenous variables — electricity_exo_vars","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"Contains prices different electricity markets exogenous variables.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"","code":"electricity_exo_vars"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":"electricity-exo-vars","dir":"Reference","previous_headings":"","what":"electricity_exo_vars","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"data frame 8400 rows 12 columns: unique_id Unique identifiers electricity markets. ds Date format YYYY:MM:DD hh:mm:ss. y Price given market date. Exogenous1 external factor influencing prices. markets, form day-ahead load forecast. Exogenous2 external factor influencing prices. \"\" \"FR\" markets, day-ahead generation forecast. \"NP\", day-ahead wind generation forecast. \"PJM\", day-ahead load forecast specific zone. \"DE\", aggregated day-ahead wind solar generation forecasts. day_0 Binary variable indicating weekday. day_1 Binary variable indicating weekday. day_2 Binary variable indicating weekday. day_3 Binary variable indicating weekday. day_4 Binary variable indicating weekday. day_5 Binary variable indicating weekday. day_6 Binary variable indicating weekday.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_exo_vars.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Electricity dataset with exogenous variables — electricity_exo_vars","text":"https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short.csv","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":null,"dir":"Reference","previous_headings":"","what":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"Contains future values exogenous variables electricity dataset (24 steps-ahead). used electricity_exo_vars.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"","code":"electricity_future_exo_vars"},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":"electricity-future-exo-vars","dir":"Reference","previous_headings":"","what":"electricity_future_exo_vars","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"data frame 120 rows 11 columns: unique_id Unique identifiers electricity markets. ds Date format YYYY:MM:DD hh:mm:ss. Exogenous1 external factor influencing prices. markets, form day-ahead load forecast. Exogenous2 external factor influencing prices. \"\" \"FR\" markets, day-ahead generation forecast. \"NP\", day-ahead wind generation forecast. \"PJM\", day-ahead load forecast specific zone. \"DE\", aggregated day-ahead wind solar generation forecasts. day_0 Binary variable indicating weekday. day_1 Binary variable indicating weekday. day_2 Binary variable indicating weekday. day_3 Binary variable indicating weekday. day_4 Binary variable indicating weekday. day_5 Binary variable indicating weekday. day_6 Binary variable indicating weekday.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/electricity_future_exo_vars.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Future values for the electricity dataset with exogenous variables — electricity_future_exo_vars","text":"https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short-future-ex-vars.csv","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer frequency of a data frame. — infer_frequency","title":"Infer frequency of a data frame. — infer_frequency","text":"Infer frequency data frame.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer frequency of a data frame. — infer_frequency","text":"","code":"infer_frequency(df)"},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer frequency of a data frame. — infer_frequency","text":"df data frame time series data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer frequency of a data frame. — infer_frequency","text":"inferred frequency.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/infer_frequency.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Infer frequency of a data frame. — infer_frequency","text":"","code":"df <- nixtlar::electricity infer_frequency(df) #> Frequency chosen: H #> [1] \"H\""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtlaR-package.html","id":null,"dir":"Reference","previous_headings":"","what":"nixtlar: A Software Development Kit for Nixtla's TimeGPT — nixtlar-package","title":"nixtlar: A Software Development Kit for Nixtla's TimeGPT — nixtlar-package","text":"Software Development Kit working Nixtla’s TimeGPT, foundation model time series forecasting. \"API\" acronym \"application programming interface\"; package allows users interact TimeGPT via API. can set validate API keys generate forecasts via API calls. compatible 'tsibble' base R. details visit https://docs.nixtla.io/.","code":""},{"path":[]},{"path":"https://nixtla.github.io/nixtlar/reference/nixtlaR-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"nixtlar: A Software Development Kit for Nixtla's TimeGPT — nixtlar-package","text":"Maintainer: Mariana Menchero mariana@nixtla.io (First author maintainer) contributors: Nixtla (Copyright held Nixtla) [copyright holder]","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":null,"dir":"Reference","previous_headings":"","what":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"Perform cross validation TimeGPT.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"","code":"nixtla_client_cross_validation( df, h = 8, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", X_df = NULL, level = NULL, n_windows = 1, step_size = NULL, finetune_steps = 0, finetune_loss = \"default\", clean_ex_first = TRUE, model = \"timegpt-1\" )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"df tsibble data frame time series data. h Forecast horizon. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. X_df tsibble data frame future exogenous variables. level confidence levels (0-100) prediction intervals. n_windows Number windows evaluate. step_size Step size cross validation window. NULL, equal forecast horizon (h). finetune_steps Number steps used finetune TimeGPT new data. finetune_loss Loss function use finetuning. Options : \"default\", \"mae\", \"mse\", \"rmse\", \"mape\", \"smape\". clean_ex_first Clean exogenous signal making forecasts using TimeGPT. model Model use, either \"timegpt-1\" \"timegpt-1-long-horizon\". Use \"timegpt-1-long-horizon\" want forecast one seasonal period given frequency data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"tsibble data frame TimeGPT's cross validation.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_cross_validation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Perform cross validation with TimeGPT. — nixtla_client_cross_validation","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_cross_validation(df, h = 8, id_col = \"unique_id\", n_windows = 5) }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":null,"dir":"Reference","previous_headings":"","what":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"Detect anomalies TimeGPT","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"","code":"nixtla_client_detect_anomalies( df, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", level = c(99), clean_ex_first = TRUE, model = \"timegpt-1\" )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"df tsibble data frame time series data. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. level confidence level (0-100) prediction interval used anomaly detection. Default 99. clean_ex_first Clean exogenous signal making forecasts using TimeGPT. model Model use, either \"timegpt-1\" \"timegpt-1-long-horizon\". Use \"timegpt-1-long-horizon\" want forecast one seasonal period given frequency data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"tsibble data frame anomalies detected historical period.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_detect_anomalies.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Detect anomalies with TimeGPT — nixtla_client_detect_anomalies","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_anomaly_detection(df, id_col=\"unique_id\") }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate TimeGPT forecast — nixtla_client_forecast","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"Generate TimeGPT forecast","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"","code":"nixtla_client_forecast( df, h = 8, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", X_df = NULL, level = NULL, finetune_steps = 0, finetune_loss = \"default\", clean_ex_first = TRUE, add_history = FALSE, model = \"timegpt-1\" )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"df tsibble data frame time series data. h Forecast horizon. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. X_df tsibble data frame future exogenous variables. level confidence levels (0-100) prediction intervals. finetune_steps Number steps used finetune TimeGPT new data. finetune_loss Loss function use finetuning. Options : \"default\", \"mae\", \"mse\", \"rmse\", \"mape\", \"smape\". clean_ex_first Clean exogenous signal making forecasts using TimeGPT. add_history Return fitted values model. model Model use, either \"timegpt-1\" \"timegpt-1-long-horizon\". Use \"timegpt-1-long-horizon\" want forecast one seasonal period given frequency data.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"TimeGPT's forecast.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_forecast.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate TimeGPT forecast — nixtla_client_forecast","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_forecast(df, h=8, id_col=\"unique_id\", level=c(80,95)) }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"Generate TimeGPT forecast -sample period (historical period).","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"","code":"nixtla_client_historic( df, freq = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", level = NULL, finetune_steps = 0, finetune_loss = \"default\", clean_ex_first = TRUE )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"df tsibble data frame time series data. freq Frequency data. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. level confidence levels (0-100) prediction intervals. finetune_steps Number steps used finetune TimeGPT new data. finetune_loss Loss function use finetuning. Options : \"default\", \"mae\", \"mse\", \"rmse\", \"mape\", \"smape\". clean_ex_first Clean exogenous signal making forecasts using TimeGPT.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"TimeGPT's forecast -sample period.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_historic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate TimeGPT forecast for the in-sample period (historical period). — nixtla_client_historic","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_historic(df, id_col=\"unique_id\", level=c(80,95)) }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"Plot output following nixtla_client functions: forecast, historic, anomaly_detection, cross_validation.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"","code":"nixtla_client_plot( df, fcst = NULL, h = NULL, id_col = NULL, time_col = \"ds\", target_col = \"y\", unique_ids = NULL, max_insample_length = NULL, plot_anomalies = FALSE )"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"df tsibble data frame time series data (insample values). fcst tsibble data frame TimeGPT point forecast prediction intervals (available). h Forecast horizon. id_col Column identifies series. time_col Column identifies timestep. target_col Column contains target variable. unique_ids Time series plot. NULL (default), selection random. max_insample_length Max number insample observations plotted. plot_anomalies Whether plot anomalies.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"Corresponding plot.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_client_plot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot the output of the following nixtla_client functions: forecast, historic, anomaly_detection, and cross_validation. — nixtla_client_plot","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") df <- nixtlar::electricity fcst <- nixtlar::nixtla_client_forecast(df, h=8, id_col=\"unique_id\", level=c(80,95)) nixtlar::timegpt_plot(df, fcst, h=8, id_col=\"unique_id\") }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":null,"dir":"Reference","previous_headings":"","what":"Set API key in global environment — nixtla_set_api_key","title":"Set API key in global environment — nixtla_set_api_key","text":"Set API key global environment","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set API key in global environment — nixtla_set_api_key","text":"","code":"nixtla_set_api_key(api_key)"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set API key in global environment — nixtla_set_api_key","text":"api_key user's API key. Get : https://dashboard.nixtla.io/","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set API key in global environment — nixtla_set_api_key","text":"message indicating API key set global environment.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_set_api_key.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set API key in global environment — nixtla_set_api_key","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") }"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate API key — nixtla_validate_api_key","title":"Validate API key — nixtla_validate_api_key","text":"Validate API key","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate API key — nixtla_validate_api_key","text":"","code":"nixtla_validate_api_key()"},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate API key — nixtla_validate_api_key","text":"status code message indicating whether API key valid.","code":""},{"path":"https://nixtla.github.io/nixtlar/reference/nixtla_validate_api_key.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Validate API key — nixtla_validate_api_key","text":"","code":"if (FALSE) { nixtlar::nixtla_set_api_key(\"YOUR_API_KEY\") nixtlar::nixtla_validate_api_key }"},{"path":"https://nixtla.github.io/nixtlar/news/index.html","id":"nixtlar-050","dir":"Changelog","previous_headings":"","what":"nixtlar 0.5.0","title":"nixtlar 0.5.0","text":"Initial CRAN submission.","code":""}] diff --git a/sitemap.xml b/sitemap.xml index 8f219cd..25e861d 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -12,6 +12,9 @@ https://nixtla.github.io/nixtlar/articles/cross-validation.html + + https://nixtla.github.io/nixtlar/articles/exogenous-variables.html + https://nixtla.github.io/nixtlar/articles/get-started.html