{"id":6289,"date":"2024-10-16T12:00:47","date_gmt":"2024-10-16T10:00:47","guid":{"rendered":"https:\/\/www.m2hycon.de\/?p=6289"},"modified":"2024-10-29T12:38:29","modified_gmt":"2024-10-29T11:38:29","slug":"leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study","status":"publish","type":"post","link":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/","title":{"rendered":"Lever\u00adaging Advanced Forecas\u00adting Techni\u00adques with Stats\u00adFo\u00adre\u00adcast: A Case Study"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"6289\" class=\"elementor elementor-6289 elementor-6205\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8f0c233 elementor-section-full_width elementor-section-height-min-height red noisy elementor-section-height-default elementor-section-items-middle\" data-id=\"8f0c233\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-463b507\" data-id=\"463b507\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-01be36e elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image\" data-id=\"01be36e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"theme-post-featured-image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1-1024x512.jpg\" class=\"attachment-large size-large wp-image-6275\" alt=\"Vorhersagetechniken\" srcset=\"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1-1024x512.jpg 1024w, https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1-300x150.jpg 300w, https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1-768x384.jpg 768w, https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1-1536x768.jpg 1536w, https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-25f6583 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"25f6583\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b9e5a52\" data-id=\"b9e5a52\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-aed6906 elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading\" data-id=\"aed6906\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"theme-post-title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Lever\u00adaging Advanced Forecas\u00adting Techni\u00adques with Stats\u00adFo\u00adre\u00adcast: A Case Study<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75a26ec elementor-widget elementor-widget-post-info\" data-id=\"75a26ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"post-info.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-inline-items elementor-icon-list-items elementor-post-info\">\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-db030de elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-custom\">\n\t\t\t\t\t\t\t\t\t\tVon Torben Windler\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-2efc209 elementor-inline-item\" itemprop=\"datePublished\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-date\">\n\t\t\t\t\t\t\t\t\t\t<time>October 16, 2024<\/time>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-f562ac5 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f562ac5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-1460892\" data-id=\"1460892\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fb960c3 elementor-widget__width-auto elementor-widget elementor-widget-text-editor\" data-id=\"fb960c3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4>Share post:<\/h4>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a47970 elementor-share-buttons--view-icon elementor-share-buttons--skin-minimal elementor-share-buttons--color-custom elementor-widget__width-auto elementor-share-buttons--shape-circle elementor-grid-0 elementor-widget elementor-widget-share-buttons\" data-id=\"6a47970\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"share-buttons.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-grid\" role=\"list\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t\t<div class=\"elementor-share-btn elementor-share-btn_facebook\" role=\"button\" tabindex=\"0\" aria-label=\"Share on facebook\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-share-btn__icon\">\n\t\t\t\t\t\t\t\t<i class=\"fab fa-facebook\" aria-hidden=\"true\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t\t<div class=\"elementor-share-btn elementor-share-btn_twitter\" role=\"button\" tabindex=\"0\" aria-label=\"Share on twitter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-share-btn__icon\">\n\t\t\t\t\t\t\t\t<i class=\"fab fa-twitter\" aria-hidden=\"true\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t\t<div class=\"elementor-share-btn elementor-share-btn_linkedin\" role=\"button\" tabindex=\"0\" aria-label=\"Share on linkedin\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-share-btn__icon\">\n\t\t\t\t\t\t\t\t<i class=\"fab fa-linkedin\" aria-hidden=\"true\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t\t<div class=\"elementor-share-btn elementor-share-btn_xing\" role=\"button\" tabindex=\"0\" aria-label=\"Share on xing\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-share-btn__icon\">\n\t\t\t\t\t\t\t\t<i class=\"fab fa-xing\" aria-hidden=\"true\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-529b227 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"529b227\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c8728fe\" data-id=\"c8728fe\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8add80c elementor-widget elementor-widget-text-editor\" data-id=\"8add80c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2 class=\"p1\">INTRO\u00adDUC\u00adTION<\/h2>\n<div>We recently solved an interes\u00adting problem for a customer: <mark>Rare events (the failure of certain compon\u00adents) were to be predicted on the basis of irregular histo\u00adrical data.<\/mark> The predic\u00adtion was to be grouped by customer and compo\u00adnent. When I was working on the task, I used the <em><a href=\"https:\/\/nixtlaverse.nixtla.io\/statsforecast\/index.html\">Stats\u00adFo\u00adre\u00adcast<\/a><\/em>-package developed by Nixtla. It provides a set of robust forecas\u00adting models speci\u00adfi\u00adcally designed to handle irregular data.    <mark>Find out what the Stats\u00adFo\u00adre\u00adcast package can do and which evalua\u00adtion methods should actually be used for irregular data in this blog post!<\/mark><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ae58c4c elementor-widget-divider--separator-type-pattern elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"ae58c4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\" style=\"--divider-pattern-url: url(&quot;data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cpolyline points='0,18 12,6 24,18 '\/%3E%3C\/svg%3E&quot;);\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2fb29bd maths elementor-widget elementor-widget-text-editor\" data-id=\"2fb29bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>The chall\u00adenge<\/h2>\n<h3>Problem state\u00adment<\/h3> Our client provided us with a dataset spanning several years, detailing past events across diffe\u00adrent custo\u00admers and parts. These events were rare occur\u00adrences, making the dataset highly inter\u00admit\u00adtent.  <mark>Our goal was to predict when these events might happen in the future, grouped by customer and part, to enable better resource alloca\u00adtion and planning.<\/mark> Although the future is mathe\u00adma\u00adti\u00adcally indepen\u00addent from the past, forecasts from this dataset could give us a decent estima\u00adtion of what could happen. <div>\n<h3>Descrip\u00adtion of the data<\/h3>\n<div><strong>Inter\u00admit\u00adtent nature<\/strong>: Events occurred very rarely, leading to sparse data points. <strong>Multiple custo\u00admers and parts<\/strong>: The predic\u00adtions needed to be made for diffe\u00adrent custo\u00admers and parts, requi\u00adring a segmented approach.<\/div>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b038926 elementor-widget elementor-widget-spacer\" data-id=\"b038926\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a3d4fd5 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a3d4fd5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-fc9ec71\" data-id=\"fc9ec71\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4e93577 elementor-widget elementor-widget-text-editor\" data-id=\"4e93577\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Example:<\/h3>\n<p>On the right, you can see an example of what the data looks like when it is processed and ready to forecast:<\/p>\n<p>`ds` is a weekly timestamp (we want weekly forecasts), `unique_id` repres\u00adents the group (conca\u00adte\u00adn\u00adated from part and customer), and `y` denotes the number of events in that specific week.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-112d4c6\" data-id=\"112d4c6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-493556e elementor-widget elementor-widget-text-editor\" data-id=\"493556e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre class=\"codesnippet\"><code>| ds         | unique_id           | y   |\n| ---        | ---                 | --- |\n| 2023-07-24 | part_a, customer_a  | 1   |\n| 2022-02-28 | part_b, customer_b  | 2   |\n| 2024-04-22 | part_b, customer_c  | 1   |\n| 2024-03-18 | part_b, customer_d  | 1   |\n| 2024-03-25 | part_b, customer_d  | 0   |\n| \u2026          | \u2026                   | \u2026   |\n| 2017-04-24 | part_y, customer_a  | 0   |\n| 2017-05-01 | part_y, customer_a  | 1   |\n| 2017-05-08 | part_y, customer_a  | 0   |\n| 2017-05-15 | part_y, customer_a  | 1   |\n| 2021-04-26 | part_b, customer_z  | 2   |\n<\/code><\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8f6d05f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8f6d05f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e3e7ba1\" data-id=\"e3e7ba1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fcbcb1e elementor-widget-divider--separator-type-pattern elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"fcbcb1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\" style=\"--divider-pattern-url: url(&quot;data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cpolyline points='0,18 12,6 24,18 '\/%3E%3C\/svg%3E&quot;);\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4381862 elementor-widget elementor-widget-text-editor\" data-id=\"4381862\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Solution approach<\/h2>\n<p>To address this chall\u00adenge, I resear\u00adched several approa\u00adches before settling on the Stats\u00adFo\u00adre\u00adcast package. Below are some of the techni\u00adques I evaluated: <\/p>\n<div><strong>1. Classical Decom\u00adpo\u00adsi\u00adtion<\/strong><br>This technique breaks down time series data into trend, seasonal, and residual compon\u00adents. While it was useful for under\u00adstan\u00adding patterns, it did not handle inter\u00admit\u00adtency well. <\/div>\n<div>&nbsp;<\/div>\n<div><strong>2. Croston\u2019s Optimized Model<\/strong><br>The Croston Optimized model is an advanced forecas\u00adting method for inter\u00admit\u00adtent demand data, combi\u00adning exponen\u00adtial smoot\u00adhing to capture trends and seaso\u00adna\u00adlity with separate estima\u00adtions for non-zero demand occur\u00adrences and sizes. This approach helps balance over- and under-forecas\u00adting and provides more accurate predic\u00adtions for sporadic demand patterns. <\/div>\n<div>&nbsp;<\/div>\n<div><strong>3. IMAPA (Inter\u00admit\u00adtent Multiple Aggre\u00adga\u00adtion Predic\u00adtion Algorithm)<\/strong><br>The Inter\u00admit\u00adtent Multiple Aggre\u00adga\u00adtion Predic\u00adtion Algorithm (IMAPA) is an algorithm that forecasts future values of inter\u00admit\u00adtent time series by aggre\u00adga\u00adting the time series values at regular inter\u00advals and then using any forecast model, such as optimized Simple Exponen\u00adtial Smoot\u00adhing (SES), to predict these aggre\u00adgated values. IMAPA is robust to missing data, compu\u00adta\u00adtio\u00adnally efficient, and easy to imple\u00adment, making it effec\u00adtive for various inter\u00admit\u00adtent time series forecas\u00adting tasks. <\/div>\n<div>&nbsp;<\/div>\n<div><strong>4. ADIDA (Aggre\u00adgate-Disag\u00adgre\u00adgate Inter\u00admit\u00adtent Demand Approach)<\/strong><br>The ADIDA model uses Simple Exponen\u00adtial Smoot\u00adhing (SES) on tempo\u00adrally aggre\u00adgated data to forecast inter\u00admit\u00adtent demand, where demand is aggre\u00adgated into buckets of mean inter-demand interval size. Forecasts are then disag\u00adgre\u00adgated to the original time periods. <\/div>\n<div>&nbsp;<\/div>\n<div><strong>5. TSB (Teunter-Syntetos-Babai)<\/strong><br>The TSB model is an advanced method used in inven\u00adtory manage\u00adment and demand forecas\u00adting for products with inter\u00admit\u00adtent demand, proposed as an exten\u00adsion to Croston\u2019s model. It updates demand proba\u00adbi\u00adlity every period rather than only when a demand occurs, making it more suitable for managing risk of obsole\u00ads\u00adcence in data with many zeros. <\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8720d68 elementor-widget-divider--separator-type-pattern elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"8720d68\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\" style=\"--divider-pattern-url: url(&quot;data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cpolyline points='0,18 12,6 24,18 '\/%3E%3C\/svg%3E&quot;);\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-909062f elementor-widget elementor-widget-text-editor\" data-id=\"909062f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>THE STATS\u00adFO\u00adRE\u00adCAST PACKAGE<\/h2>\n<div style=\"caret-color: #01828f; color: #01828f;\">After evalua\u00adting these models, I stumbled across the Stats\u00adFo\u00adre\u00adcast package, which offers imple\u00admen\u00adta\u00adtions of all the methods above in just a few lines of code. Here is a very simple example of how one could imple\u00adment it: <\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7f3a207 elementor-widget elementor-widget-text-editor\" data-id=\"7f3a207\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre class=\"codesnippet\"><code>import polars as pl\nfrom statsforecast import StatsForecast\nfrom statsforecast.models import ADIDA, CrostonClassic, CrostonOptimized, CrostonSBA, IMAPA, TSB\n\n# Create the models (can be extended with hyperparameter tuning)\nmodels = [\n    ADIDA(),\n    CrostonClassic(),\n    CrostonOptimized(),\n    CrostonSBA(),\n    IMAPA(),\n    TSB(alpha_d=0.2, alpha_p=0.2)\n]\n\n# Store the names of the models to use them later in polars colum selection\nmodel_names = [m.alias for m in models]\n\n# We want weekly forecasts\nsf = StatsForecast(models=models, freq='1w', n_jobs=-1, verbose=True)\n\nsf.fit(train)\nFORECAST_HORIZON = 52   # weeks\n\nforecasts_df = sf.predict(h=FORECAST_HORIZON)\n\n# join the forecasts with the target values ('y') from the test data for evaluation\nforecasts_df = (\n    forecasts_df\n    .join(test, on=[\"unique_id\", \"ds\"], how=\"left\")\n    .fill_null(0)\n)\n<\/code><\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5afb18d elementor-widget elementor-widget-text-editor\" data-id=\"5afb18d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"caret-color: #01828f; color: #01828f;\">This concise code snippet was the basis for me to quickly set up and run multiple models on the dataset. In fact, we tuned the hyper\u00adpa\u00adra\u00adme\u00adters of every model with proven methods. <\/span><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f1825af elementor-widget-divider--separator-type-pattern elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"f1825af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\" style=\"--divider-pattern-url: url(&quot;data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cpolyline points='0,18 12,6 24,18 '\/%3E%3C\/svg%3E&quot;);\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b995e69 elementor-widget elementor-widget-text-editor\" data-id=\"b995e69\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Handling Uniform Distri\u00adbu\u00adtions<\/h2>  The forecasts produced by these models were origi\u00adnally discrete uniform distri\u00adbu\u00adtions over the forecast horizon. To fulfill the requi\u00adre\u00adment of having specific estimated times for predicted events, I have chosen the follo\u00adwing approach: <br><br>\n<h3>Cumula\u00adtive Proba\u00adbi\u00adli\u00adties Modulo 1<\/h3>  To solve this problem, I cumulated all proba\u00adbi\u00adli\u00adties over time and calcu\u00adlated the cumula\u00adtive value modulo 1. This allowed me to compare the original proba\u00adbi\u00adlity values with these new values. If the original proba\u00adbi\u00adlity is greater than or equal to the modulo value, this indicates an event at that point in time.    <br><br>\n<h3>Imple\u00admen\u00adta\u00adtion steps<\/h3>  1. cumulate proba\u00adbi\u00adli\u00adties: Addition of the proba\u00adbi\u00adli\u00adties for each forecast period.<\/div>\n<div>2. Calcu\u00adlate Modulo 1: Compute the cumula\u00adtive value modulo 1.<\/div>\n<div>3. Predict Events: f the original proba\u00adbi\u00adlity is greater than or equal to the modulo value, predict an event at that time.<br><br>\n<h3>Code example<\/h3>\n<div>Here\u2019s a Python code snippet to illus\u00adtrate this process:<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b9ca92 elementor-widget elementor-widget-text-editor\" data-id=\"1b9ca92\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre class=\"codesnippet\"><code>forecasts_df = (\n    forecasts_df\n    # Calculate the value with modulo 1, to obtain some kind of 'virtual' probability\n    .with_columns(pl.col(model_names).cum_sum().mod(1).over(\"unique_id\").name.suffix(\"_cum\"))\n    # If the modulo values are smaller than the original, this indicates \n    # an event with the demand from the original column rounded to the next integer.\n    # Otherwise we do not have an event and set the value to None.\n    .with_columns([\n        pl.when(pl.col(m) &gt;= pl.col(f\"{m}_cum\"))\n        .then(pl.col(m).ceil())\n        .otherwise(None)\n        for m in model_names]\n    )\n    # Here we do not need the cumulated values anymore\n    .drop(pl.col(\"^*_cum$\"))\n)\n<\/code><\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a07282b elementor-widget elementor-widget-text-editor\" data-id=\"a07282b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Validity of the Approach<\/h3>\n<p>This approach effec\u00adtively converts a uniform distri\u00adbu\u00adtion into discrete event predic\u00adtions based on cumula\u00adtive proba\u00adbi\u00adli\u00adties. By compa\u00adring each forecasted proba\u00adbi\u00adlity to its corre\u00adspon\u00adding cumula\u00adtive value modulo 1, we can identify specific points in time where events are likely to occur. <\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-940988a elementor-widget-divider--separator-type-pattern elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"940988a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\" style=\"--divider-pattern-url: url(&quot;data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cpolyline points='0,18 12,6 24,18 '\/%3E%3C\/svg%3E&quot;);\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9d1eaff elementor-widget elementor-widget-text-editor\" data-id=\"9d1eaff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Evalua\u00adtion of the Perfor\u00admance<\/h2>\n<div>To evaluate the predic\u00adtion results, I deal with two essen\u00adtial metrics for irregular, sporadic predic\u00adtions: the Cumula\u00adtive Predic\u00adtion Error (CFE) and the Stock-keeping-oriented Predic\u00adtion Error Costs (SPEC). Standard metrics such as MAPE or RMSE are not really suitable for these forecasts, as they do not take suffi\u00adcient account of time shifts or cost-related aspects. <\/div>\n<div> <\/div>\n<h3>Cumula\u00adtive Forecast Error (CFE)<\/h3>\n<div>The cumula\u00adtive forecast error (CFE) measures the cumula\u00adtive sum of the diffe\u00adrence between actual values (`y`) and predicted values (`&lt;Model&gt;`). It provides insights into how well a model\u2019s forecasts align with the actual outcomes over time. <\/div>\n<div> <\/div>\n<h5>Imple\u00admen\u00adta\u00adtion<\/h5>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb40908 elementor-widget elementor-widget-text-editor\" data-id=\"fb40908\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre class=\"codesnippet\"><code>def cfe(df: pl.DataFrame, model_names: list[str]) -&gt; pl.DataFrame:\n    \"\"\"Calculate the Cumulative Forecast Error (CFE) for multiple models in a Polars DataFrame.\n    \n    This function calculates the Cumulative Forecast Error (CFE) for each forecast model in a DataFrame. CFE is defined as the cumulative sum of the difference between actual values (`y`) and forecast values (`<model>`). The result includes the minimum, maximum, and last CFE value for each unique identifier.\n\n    The function takes a Polars DataFrame with the following structure:\n    - `unique_id`: A unique identifier for each data point\n    - `y`: The actual target value\n    - `model_names` (list of strings): Column names representing different model predictions\n\n    Parameters:\n        df (pl.DataFrame): Input DataFrame containing the data. It must include a column named `y` representing the actual values, and columns named `<model>` for each model in the `model_names` list.\n        \n        model_names (list[str]): A list of strings representing the names of the forecast models.\n\n    Returns:\n        pl.DataFrame: Output DataFrame with CFE results. It contains columns for `unique_id`, `model`, and statistics such as `cfe_min` (minimum CFE), `cfe_max` (maximum CFE), and `cfe_last` (last  CFE) for each unique identifier and model.\n    \"\"\"\n    df = (\n        df\n        # Calculate Cumulative Forecast Error for each model per unique_id\n        .with_columns((pl.col(model_names) - pl.col(\"y\")).cum_sum().over(\"unique_id\"))\n        # Unpivot the DataFrame to have a single column for CFE values and corresponding model names\n        .unpivot(model_names, index=\"unique_id\", variable_name=\"model\", value_name=\"cfe\")\n        # Group by unique_id and model, then aggregate to get min, max, and last CFE value\n        .group_by(\"unique_id\", \"model\")\n        .agg(\n            pl.min(\"cfe\").alias(\"cfe_min\"),\n            pl.max(\"cfe\").alias(\"cfe_max\"),\n            pl.last(\"cfe\").abs().alias(\"cfe_last\")\n        )\n    )\n    return df\n\ncfe_df = forecasts_df.pipe(cfe, model_names=model_names)\n<\/model><\/model><\/code><\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f44de71 elementor-widget elementor-widget-text-editor\" data-id=\"f44de71\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Stock-keeping-oriented Predic\u00adtion Error Costs(SPEC)<\/h3>\n<p>The <em><span style=\"text-decoration: underline;\"><a href=\"https:\/\/arxiv.org\/pdf\/2004.10537\">Stock-keeping-oriented Predic\u00adtion Error Costs<\/a><\/span><\/em> (SPEC) measures the predic\u00adtion accuracy by compa\u00adring actual events and forecast in the form of virtually incurred costs over the forecast horizon. If the forecasts predicts events before the target event occures, we create <strong>stock keeping costs<\/strong>. The other way round we get <strong>oppor\u00adtu\u00adnity costs<\/strong>. The relati\u00adonship between both errors are weighted with $\\alpha \\in [0, 1]$. Higher alphas weigh the oppor\u00adtu\u00adnity costs more, while lower alphas give more weight to the stock-keeping costs. In this scenario, both of them are important, hence we set $\\alpha = 0.5$.     <\/p>\n<p>In addition, we slightly changed the <em><span style=\"text-decoration: underline;\"><a href=\"https:\/\/github.com\/DominikMartin\/spec_metric\">imple\u00admen\u00adta\u00adtion of the authors<\/a><\/span><\/em> to a custom metric, which performes much faster and which is provi\u00adding us not only the sum of stock-keeping and oppor\u00adtu\u00adnity costs, but also both indivi\u00addual costs:<\/p>\n<h5>Imple\u00admen\u00adta\u00adtion<\/h5>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bcef75f elementor-widget elementor-widget-text-editor\" data-id=\"bcef75f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<pre class=\"codesnippet\"><code>def spec(df: pl.DataFrame, model_names: list[str], alpha: float = 0.5):\n    \"\"\"Stock-keeping-oriented Prediction Error Costs (SPEC)\n    Read more in the :ref:`https:\/\/arxiv.org\/abs\/2004.10537`.\n\n    The function takes a Polars DataFrame with the following structure:\n    - `unique_id`: A unique identifier for each data point\n    - `y`: The actual target value\n    - `model_names` (list of strings): Column names representing different model predictions\n\n    Parameters:\n        df (pl.DataFrame): Input DataFrame containing the data. It must include a column named `y` representing the actual values, and columns named `<model>` for each model in the `model_names` list.\n        model_names (list[str]): A list of strings representing the names of the forecast models.\n        alpha (float): Provides the weight of the opportunity costs. The weight of stock-keeping costs is taken as (1 - alpha), hence alpha should be in the interval [0, 1].\n\n    Returns\n    -------\n    pl.DataFrame: Output DataFrame with SPEC results. It contains columns for `unique_id`, `model`, and the SPEC error for each unique identifier and model. The SPEC error is also provided as opportunity costs, stock-keeping costs, and the sum of both.\n\n    \"\"\"\n    df = (\n        df\n        .sort(\"unique_id\", \"ds\")\n        # Calculate cum sum for every prediction and the target\n        .with_columns(pl.col([\"y\"] + model_names).cum_sum().over(\"unique_id\").name.suffix(\"_cum_sum\"))\n        # Compute differences in both directions from the predictions cumsum and the target cumsum\n        .with_columns(\n            *[(-pl.col(f\"{m}_cum_sum\") + pl.col(\"y_cum_sum\")).alias(f\"{m}_diff_y_f\") for m in model_names],\n            *[(pl.col(f\"{m}_cum_sum\") - pl.col(\"y_cum_sum\")).alias(f\"{m}_diff_f_y\") for m in model_names]\n        )\n        # Multiply the first difference with alpha (opportunity costs)\n        # and the second difference with (1 - alpha) (stock-keeping costs)\n        .with_columns(\n            *[(pl.col(f\"{m}_diff_y_f\") * alpha).clip(lower_bound=0).alias(f\"{m}_o\") for m in model_names],\n            *[(pl.col(f\"{m}_diff_f_y\") * (1 - alpha)).clip(lower_bound=0).alias(f\"{m}_s\") for m in model_names]\n        )\n        # Add the opportunity and stock-keeping costs\n        .with_columns([(pl.sum_horizontal(f\"{m}_o\", f\"{m}_s\")).alias(f\"{m}_total\") for m in model_names])\n        # Group by unique_id and model, then aggregate to get average SPEC values\n        .group_by(\"unique_id\")\n        .agg(*[pl.col(f\"{m}_total\", f\"{m}_o\", f\"{m}_s\").mean() for m in model_names])\n        # Unpivot the DataFrame to have separate columns for SPEC values and corresponding model names\n        .unpivot([x for xs in [[f\"{m}_total\", f\"{m}_o\", f\"{m}_s\"] for m in model_names] for x in xs], index=\"unique_id\", variable_name=\"model\", value_name=\"spec\")\n        # extract the different spec value indicators (total, o, s) to a separate column\n        .with_columns(pl.col(\"model\").str.split(\"_\").list.to_struct(fields=[\"model\", \"error\"]))\n        .unnest(\"model\")\n        # pivot by the different splits (total, o, s) in the error column\n        .pivot(\"error\", index=[\"unique_id\", \"model\"], values=\"spec\")\n        # rename accordingly\n        .rename({\"total\": \"spec_total\", \"o\": \"spec_o\", \"s\": \"spec_s\"})\n    )\n    return df\n\nspec_df = forecasts_df.pipe(spec, model_names=model_names)\n<\/model><\/code><\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bfa75a2 elementor-widget elementor-widget-text-editor\" data-id=\"bfa75a2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>CFE and SPEC together<\/h3>\n<div>\n<div>Using both CFE and SPEC provides a compre\u00adhen\u00adsive evalua\u00adtion of forecast models. Here\u2019s why: <\/div>\n<div><\/div>\n<div>1. CFE (Cumula\u00adtive Predic\u00adtion Error):<\/div>\n<ul>\n \t<li><strong>Trend analysis<\/strong>: CFE helps identify trends in the error over time, allowing you to see if the model consis\u00adt\u00adently under\u00adpre\u00addicts or overpre\u00addicts.<\/li>\n \t<li><strong>Magni\u00adtude and direc\u00adtion<\/strong>: The minimum and maximum values of CFE can provide insights into the overall perfor\u00admance and direc\u00adtion of the errors.<\/li>\n<\/ul>\n<div><\/div>\n<div>2. SPEC (Stock-keeping-oriented Predic\u00adtion Error Costs):<\/div>\n<ul>\n \t<li><strong>Time-based Devia\u00adtion<\/strong>: SPEC calcu\u00adlates predic\u00adtion errors based on their effect on future inven\u00adtory levels, penali\u00adzing errors that could lead to high holding costs or stock\u00adouts.<\/li>\n \t<li><strong>Weighted costs<\/strong>: It encou\u00adrages businesses to focus on minimi\u00adzing both overstock and under\u00adstock, leading to improved opera\u00adtional effici\u00adency.<\/li>\n<\/ul>\n<div>By combi\u00adning both metrics, you can make a more informed decision about which model to use based on your specific needs. <mark>If under\u00adstan\u00adding trends over time is crucial, CFE could provide additional insights. If the diffe\u00adrences in predic\u00adtion and target times are of interest, SPEC could be of higher interest. <\/mark><\/div>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dcbd201 elementor-widget-divider--separator-type-pattern elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"dcbd201\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\" style=\"--divider-pattern-url: url(&quot;data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cpolyline points='0,18 12,6 24,18 '\/%3E%3C\/svg%3E&quot;);\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d4097f elementor-widget elementor-widget-text-editor\" data-id=\"7d4097f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>CONCLU\u00adSION<\/h2>\n<div>\n<div>Our approach using the Stats\u00adFo\u00adre\u00adcast package and our handling of uniform distri\u00adbu\u00adtions has provided a robust solution for predic\u00adting rare events.  <mark>The Stats\u00adfo\u00adre\u00adcast package has made a signi\u00adfi\u00adcant contri\u00adbu\u00adtion to our ability to use various forecas\u00adting models easily and effici\u00adently. The evalua\u00adtion methods for forecas\u00adting show that you need to know exactly which methods to use and when, rather than blindly choosing one. <\/mark>  If you have any questions about predic\u00adtions or other mathe\u00adma\u00adtical issues, feel free to contact us!<\/div>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-513934b elementor-widget-divider--separator-type-pattern elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"513934b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\" style=\"--divider-pattern-url: url(&quot;data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cpolyline points='0,18 12,6 24,18 '\/%3E%3C\/svg%3E&quot;);\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e60000c elementor-widget elementor-widget-text-editor\" data-id=\"e60000c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>NOTE<\/h2>\n<p>As you can see, I use <em><span style=\"text-decoration: underline;\"><a href=\"https:\/\/pola.rs\">Polars<\/a><\/span><\/em> instead of Pandas, Numpy, etc. for all compu\u00adta\u00adtions. At m2hycon we have been using Polars since early 2023 where we saw the poten\u00adtial and impact over other libra\u00adries like Pandas, Dask, Ray and even Apache Spark. A blog post about how we made the switch and its impact on our produc\u00adti\u00advity and results is coming soon!  <\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fd345a5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fd345a5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-3454126\" data-id=\"3454126\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f782047 elementor-widget elementor-widget-author-box\" data-id=\"f782047\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"author-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-author-box\">\n\t\t\t\t\t\t\t<div class=\"elementor-author-box__avatar\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2023\/09\/m2hycon_ueberuns_team_Torben_Windler_800x800-300x300.jpg\" alt=\"Picture of Torben Windler\" loading=\"lazy\">\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"elementor-author-box__text\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t<h4 class=\"elementor-author-box__name\">\n\t\t\t\t\t\t\tTorben Windler\t\t\t\t\t\t<\/h4>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-author-box__bio\">\n\t\t\t\t\t\t<p>Lead AI Engineer<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-e562604 elementor-hidden-tablet elementor-hidden-mobile\" data-id=\"e562604\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-eeab2a1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"eeab2a1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-af34f0d\" data-id=\"af34f0d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b74183e elementor-widget elementor-widget-post-navigation\" data-id=\"b74183e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"post-navigation.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-post-navigation\" role=\"navigation\" aria-label=\"Post Navigation\">\n\t\t\t<div class=\"elementor-post-navigation__prev elementor-post-navigation__link\">\n\t\t\t\t<a href=\"https:\/\/www.m2hycon.de\/en\/news\/the-importance-of-unit-tests-and-testing-in-general-in-data-science\/\" rel=\"prev\"><span class=\"post-navigation__arrow-wrapper post-navigation__arrow-prev\"><i aria-hidden=\"true\" class=\"fas fa-angle-left\"><\/i><span class=\"elementor-screen-only\">Prev<\/span><\/span><span class=\"elementor-post-navigation__link__prev\"><span class=\"post-navigation__prev--label\">Previous post<\/span><span class=\"post-navigation__prev--title\">The importance of unit tests and testing in general in data science<\/span><\/span><\/a>\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"elementor-post-navigation__next elementor-post-navigation__link\">\n\t\t\t\t<a href=\"https:\/\/www.m2hycon.de\/en\/news\/ai-as-a-competitive-advantage-8-groundbreaking-factors-for-companies\/\" rel=\"next\"><span class=\"elementor-post-navigation__link__next\"><span class=\"post-navigation__next--label\">Next post<\/span><span class=\"post-navigation__next--title\">AI as a compe\u00adti\u00adtive advan\u00adtage: 8 ground\u00adbrea\u00adking factors for compa\u00adnies<\/span><\/span><span class=\"post-navigation__arrow-wrapper post-navigation__arrow-next\"><i aria-hidden=\"true\" class=\"fas fa-angle-right\"><\/i><span class=\"elementor-screen-only\">Next<\/span><\/span><\/a>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Forecasts for inter\u00admit\u00adtent data are often diffi\u00adcult. Torben examines whether the Stats\u00adfo\u00adre\u00adcast package can be used and describes which evalua\u00adtion methods are useful. <\/p>\n","protected":false},"author":11,"featured_media":6275,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[206,164,209,165],"tags":[],"class_list":["post-6289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-science","category-expert-knowledge","category-news","category-practice"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.2 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Advanced prediction techniques for intermittent data<\/title>\n<meta name=\"description\" content=\"Advanced forecasting techniques for intermittent data using the Statsforecast package are discussed using a case study.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Advanced prediction techniques for intermittent data\" \/>\n<meta property=\"og:description\" content=\"Advanced forecasting techniques for intermittent data using the Statsforecast package are discussed using a case study.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/\" \/>\n<meta property=\"og:site_name\" content=\"m2hycon\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-16T10:00:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-29T11:38:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1-1024x512.jpg\" \/>\n<meta name=\"author\" content=\"Elisa J\u00e4ger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Leveraging Advanced Forecasting Techniques with StatsForecast: A Case Study\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elisa J\u00e4ger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/\"},\"author\":{\"name\":\"Elisa J\u00e4ger\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#\\\/schema\\\/person\\\/6e8ca5ae2cf5f2ca5cce816cfc0e8052\"},\"headline\":\"Lever\u00adaging Advanced Forecas\u00adting Techni\u00adques with Stats\u00adFo\u00adre\u00adcast: A Case Study\",\"datePublished\":\"2024-10-16T10:00:47+00:00\",\"dateModified\":\"2024-10-29T11:38:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/\"},\"wordCount\":1344,\"publisher\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.m2hycon.de\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/forecast-1.jpg\",\"articleSection\":[\"Data Science\",\"Expert knowledge\",\"News\",\"Practice\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/\",\"url\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/\",\"name\":\"Advanced prediction techniques for intermittent data\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.m2hycon.de\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/forecast-1.jpg\",\"datePublished\":\"2024-10-16T10:00:47+00:00\",\"dateModified\":\"2024-10-29T11:38:29+00:00\",\"description\":\"Advanced forecasting techniques for intermittent data using the Statsforecast package are discussed using a case study.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.m2hycon.de\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/forecast-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.m2hycon.de\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/forecast-1.jpg\",\"width\":1920,\"height\":960,\"caption\":\"Vorhersagetechniken\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/news\\\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/start\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lever\u00adaging Advanced Forecas\u00adting Techni\u00adques with Stats\u00adFo\u00adre\u00adcast: A Case Study\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/\",\"name\":\"m2hycon\",\"description\":\"let&#039;s data science\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#organization\",\"name\":\"m2hycon GmbH\",\"url\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.m2hycon.de\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/m2hycon_logo_claim_rgb_web_2022-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.m2hycon.de\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/m2hycon_logo_claim_rgb_web_2022-scaled.jpg\",\"width\":2560,\"height\":1072,\"caption\":\"m2hycon GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/m2hycon\",\"https:\\\/\\\/www.xing.com\\\/pages\\\/m2hycongmbh\"],\"description\":\"Mehr Effizienz durch Daten und intelligente Algorithmen! Es ist nicht die Kunst einen Algorithmus zu entwickeln, sondern den richtigen Algorithmus f\u00fcr das richtige Umfeld, die richtige Organisation, zur richtigen Zeit und in der richtigen Komplexit\u00e4t. Daran arbeiten wir in unseren Services.\",\"email\":\"hamburg@m2hycon.de\",\"telephone\":\"+49 (0)40 \u2013 369 397 93\",\"legalName\":\"M2Hycon GmbH\",\"foundingDate\":\"2018-01-01\",\"vatID\":\"DE 320863131\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.m2hycon.de\\\/en\\\/#\\\/schema\\\/person\\\/6e8ca5ae2cf5f2ca5cce816cfc0e8052\",\"name\":\"Elisa J\u00e4ger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/244382485c18029112d70bd4170578540aa467f464bda8a85130903031277fd8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/244382485c18029112d70bd4170578540aa467f464bda8a85130903031277fd8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/244382485c18029112d70bd4170578540aa467f464bda8a85130903031277fd8?s=96&d=mm&r=g\",\"caption\":\"Elisa J\u00e4ger\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Advanced prediction techniques for intermittent data","description":"Advanced forecasting techniques for intermittent data using the Statsforecast package are discussed using a case study.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/","og_locale":"en_US","og_type":"article","og_title":"Advanced prediction techniques for intermittent data","og_description":"Advanced forecasting techniques for intermittent data using the Statsforecast package are discussed using a case study.","og_url":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/","og_site_name":"m2hycon","article_published_time":"2024-10-16T10:00:47+00:00","article_modified_time":"2024-10-29T11:38:29+00:00","og_image":[{"url":"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1-1024x512.jpg","type":"","width":"","height":""}],"author":"Elisa J\u00e4ger","twitter_card":"summary_large_image","twitter_title":"Leveraging Advanced Forecasting Techniques with StatsForecast: A Case Study","twitter_misc":{"Written by":"Elisa J\u00e4ger","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/#article","isPartOf":{"@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/"},"author":{"name":"Elisa J\u00e4ger","@id":"https:\/\/www.m2hycon.de\/en\/#\/schema\/person\/6e8ca5ae2cf5f2ca5cce816cfc0e8052"},"headline":"Lever\u00adaging Advanced Forecas\u00adting Techni\u00adques with Stats\u00adFo\u00adre\u00adcast: A Case Study","datePublished":"2024-10-16T10:00:47+00:00","dateModified":"2024-10-29T11:38:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/"},"wordCount":1344,"publisher":{"@id":"https:\/\/www.m2hycon.de\/en\/#organization"},"image":{"@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/#primaryimage"},"thumbnailUrl":"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1.jpg","articleSection":["Data Science","Expert knowledge","News","Practice"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/","url":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/","name":"Advanced prediction techniques for intermittent data","isPartOf":{"@id":"https:\/\/www.m2hycon.de\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/#primaryimage"},"image":{"@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/#primaryimage"},"thumbnailUrl":"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1.jpg","datePublished":"2024-10-16T10:00:47+00:00","dateModified":"2024-10-29T11:38:29+00:00","description":"Advanced forecasting techniques for intermittent data using the Statsforecast package are discussed using a case study.","breadcrumb":{"@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/#primaryimage","url":"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1.jpg","contentUrl":"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2024\/10\/forecast-1.jpg","width":1920,"height":960,"caption":"Vorhersagetechniken"},{"@type":"BreadcrumbList","@id":"https:\/\/www.m2hycon.de\/en\/news\/leveraging-advanced-forecasting-techniques-with-statsforecast-a-case-study\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.m2hycon.de\/en\/start\/"},{"@type":"ListItem","position":2,"name":"Lever\u00adaging Advanced Forecas\u00adting Techni\u00adques with Stats\u00adFo\u00adre\u00adcast: A Case Study"}]},{"@type":"WebSite","@id":"https:\/\/www.m2hycon.de\/en\/#website","url":"https:\/\/www.m2hycon.de\/en\/","name":"m2hycon","description":"let&#039;s data science","publisher":{"@id":"https:\/\/www.m2hycon.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.m2hycon.de\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.m2hycon.de\/en\/#organization","name":"m2hycon GmbH","url":"https:\/\/www.m2hycon.de\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.m2hycon.de\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2022\/10\/m2hycon_logo_claim_rgb_web_2022-scaled.jpg","contentUrl":"https:\/\/www.m2hycon.de\/wp-content\/uploads\/2022\/10\/m2hycon_logo_claim_rgb_web_2022-scaled.jpg","width":2560,"height":1072,"caption":"m2hycon GmbH"},"image":{"@id":"https:\/\/www.m2hycon.de\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/m2hycon","https:\/\/www.xing.com\/pages\/m2hycongmbh"],"description":"Mehr Effizienz durch Daten und intelligente Algorithmen! Es ist nicht die Kunst einen Algorithmus zu entwickeln, sondern den richtigen Algorithmus f\u00fcr das richtige Umfeld, die richtige Organisation, zur richtigen Zeit und in der richtigen Komplexit\u00e4t. Daran arbeiten wir in unseren Services.","email":"hamburg@m2hycon.de","telephone":"+49 (0)40 \u2013 369 397 93","legalName":"M2Hycon GmbH","foundingDate":"2018-01-01","vatID":"DE 320863131","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/www.m2hycon.de\/en\/#\/schema\/person\/6e8ca5ae2cf5f2ca5cce816cfc0e8052","name":"Elisa J\u00e4ger","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/244382485c18029112d70bd4170578540aa467f464bda8a85130903031277fd8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/244382485c18029112d70bd4170578540aa467f464bda8a85130903031277fd8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/244382485c18029112d70bd4170578540aa467f464bda8a85130903031277fd8?s=96&d=mm&r=g","caption":"Elisa J\u00e4ger"}}]}},"_links":{"self":[{"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/posts\/6289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/comments?post=6289"}],"version-history":[{"count":0,"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/posts\/6289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/media\/6275"}],"wp:attachment":[{"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/media?parent=6289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/categories?post=6289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.m2hycon.de\/en\/wp-json\/wp\/v2\/tags?post=6289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}