<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archives Forecast evaluation - Open Forecasting</title>
	<atom:link href="https://openforecast.org/category/forecasting-theory/forecast-evaluation/feed/" rel="self" type="application/rss+xml" />
	<link>https://openforecast.org/category/forecasting-theory/forecast-evaluation/</link>
	<description>How to look into the future</description>
	<lastBuildDate>Mon, 23 Feb 2026 13:36:12 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2015/08/cropped-usd-05-32x32.png&amp;nocache=1</url>
	<title>Archives Forecast evaluation - Open Forecasting</title>
	<link>https://openforecast.org/category/forecasting-theory/forecast-evaluation/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Scaling of error measures</title>
		<link>https://openforecast.org/2026/02/23/scaling-of-error-measures/</link>
					<comments>https://openforecast.org/2026/02/23/scaling-of-error-measures/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Mon, 23 Feb 2026 13:36:12 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Theory of forecasting]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[theory]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=4054</guid>

					<description><![CDATA[<p>Apparently, we need to talk about scaling of error measures because this is not as obvious as it seems. In forecasting literature, since early days of the area, there has been a general consensus that the forecast errors from the individual time series should not be analysed and aggregated as is. This is because you [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2026/02/23/scaling-of-error-measures/">Scaling of error measures</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Apparently, we need to talk about scaling of error measures because this is not as obvious as it seems.</p>
<p>In forecasting literature, since early days of the area, there has been a general consensus that the forecast errors from the individual time series should not be analysed and aggregated as is. This is because you can have very different time series capturing dynamics of very different processes.</p>
<p>Indeed, if you forecast sales of apples in kilograms, your actual value would be apples in kilograms, and your point forecast would also be in the same units. Subtracting one from another tells us how many kilograms of apples we missed with the forecast we produced. But if we then take the average between forecast errors for apples and beer, we would be aggregating things in different units, which contradicts some basic aggregating principles.</p>
<p>Furthermore, if the company sells thousands of kilograms of apples and jet engines, aggregating forecast errors on those (e.g. 3000 vs 3) might introduce all types of issues, because the models performance on apples might mask the performance of the model on jet engines. Still, the jet engines are much more expensive than apples and getting them accurately might be more important for the company than forecasting apples.</p>
<p>So, forecasting literature has agreed that the forecast errors need to be somehow scaled to make the errors unitless and not to distort performance of models on time series with different volumes. There are several ways of doing that, including the poor ones and reasonable ones. The state of the art at the moment is to divide error measures by some in-sample statistics to avoid potential holdout-sample distortion. Using mean absolute differences (MAD) for this (thus ending up with MASE or RMSSE) is considered as a standard. A couple of years ago, <a href="/2019/08/25/are-you-sure-youre-precise-measuring-accuracy-of-point-forecasts/">I have written a post about advantages and disadvantages of several scaling methods</a>.</p>
<p>But there is one method that I haven&#8217;t looked at and which is not very well discussed in the forecasting literature. It relies on the monetary value of forecasts. We could multiply each individual forecast error &#8220;e&#8221; by the price of the product &#8220;p&#8221; (thus moving to the missed income per product) and then divide everything by the overall income (price times quantity) from different products. This can be written as:</p>
<p>\begin{equation}<br />
\text{monetary Mean Error} = \frac{\sum_{j=1}^n (p_j \times e_j)} {\sum_{j=1}^n (p_j \times q_j)}<br />
\end{equation}</p>
<p>(the above formula can be modified to have squares or absolute values of the error). This way we switch from the original units to the monetary values and each error would tell you the percentage of the missed income in the overall one. This is a useful measure because it connects models performance with some managerial decisions and it takes the value of product into account (thus we do not mask the expensive jet engines with cheap apples).</p>
<p>However, it might have a potential issue similar to what the MAE/Mean or wMAPE has: if the sales of the product are not stationary, the denominator would change, thus driving the proportion either up or down, irrespective of how good the forecast is. I am not sure whether this needs to be addressed, because there is an argument that if the income from a product has increased and the error hasn&#8217;t changed, then this means that the proportion of the missed income decreased, which makes sense. But if we need to address this, we can switch to the MAD multiplied by price in the denominator to address this issue. In fact, this was sort of done in <a href="https://doi.org/10.1016/j.ijforecast.2021.11.013">M5 competition</a> that used a weighted RMSSE, relying on the income from each product over the last 4 weeks of data.</p>
<p>But here is one more interesting thing about this error measure. If we <strong>assume that prices for all products are exactly the same</strong>, they will disappear from the numerator and the denominator, leaving us with just sum of errors divided by the overall sales of all products. This still maintains the original idea of the proportion of the missed income, but now has a very strong assumption, which is probably not correct in the real life (apples and engines for the same price?). Furthermore, this would mask the performance of the model for the expensive products again. I personally don&#8217;t like this measure and find the assumption unrealistic and potentially misleading. Having said that, I can see some cases where this could still be acceptable and useful (e.g. similar products with similar dynamics and similar prices).</p>
<p>Summarising:</p>
<ol>
<li>If you are conducting a forecasting experiment without a specific context, I&#8217;d recommend using RMSSE or some other similar measure with scaling.</li>
<li>If you have prices of products, income-based scaling might be more informative.</li>
<li>Setting all prices to the same value does not sound appealing to me, but I understand that there is a context where this might work.</li>
</ol>
<p>Message <a href="https://openforecast.org/2026/02/23/scaling-of-error-measures/">Scaling of error measures</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2026/02/23/scaling-of-error-measures/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Don’t use MAE-based error measures for intermittent demand!</title>
		<link>https://openforecast.org/2025/01/21/don-t-use-mae-based-error-measures-for-intermittent-demand/</link>
					<comments>https://openforecast.org/2025/01/21/don-t-use-mae-based-error-measures-for-intermittent-demand/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Tue, 21 Jan 2025 12:02:06 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Theory of forecasting]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[intermittent demand]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3768</guid>

					<description><![CDATA[<p>I’m currently doing a literature review for one of my papers on intermittent demand forecasting with machine learning, and I’ve noticed a recurring fundamental mistake in several recently published papers, even in respectable peer-reviewed journals. The mistake? Using error measures based on the Mean Absolute Error (MAE). This is a crime against the humanity when [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2025/01/21/don-t-use-mae-based-error-measures-for-intermittent-demand/">Don’t use MAE-based error measures for intermittent demand!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I’m currently doing a literature review for one of my papers on intermittent demand forecasting with machine learning, and I’ve noticed a recurring fundamental mistake in several recently published papers, even in respectable peer-reviewed journals.</p>
<p>The mistake? Using error measures based on the Mean Absolute Error (MAE). This is a crime against the humanity when working with intermittent demand. I’ve explained this issue multiple times before (<a href="/2019/08/25/are-you-sure-youre-precise-measuring-accuracy-of-point-forecasts/">here</a>, <a href="/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/">here</a>, and <a href="/2024/07/16/point-forecast-evaluation-state-of-the-art/">here</a>), but it appears that this idea needs to be repeated over and over again. Let me explain.</p>
<p>MAE is minimised by the median. In the case of intermittent demand, the median can often be zero. If you use MAE (or scaled measures like MASE or sMAE) to evaluate forecasts and compare, for example, Croston, TSB, ETS, and an Artificial Neural Network (ANN), you may find the ANN outperforming the others. However, this could simply mean that the ANN produces forecasts closer to zero than the alternatives. This is not what you want for intermittent demand! The goal is to capture the structure correctly and produce conditional mean forecasts (typically). Instead, by relying on MAE, you might conclude: &#8220;We won’t sell anything in the next two weeks&#8221;, implying that there’s no need to stock products. This is apparently wrong and unhelpful.</p>
<p>Attached to this post is a figure showing three forecasts for an intermittent demand series:</p>
<ul>
<li>The blue line represents the mean of the data;</li>
<li>The green line is a forecast from an Artificial Neural Network;</li>
<li>The red line is the zero forecast.</li>
</ul>
<p>In the figure’s legend, you’ll see error measures indicating that the zero forecast performs best in terms of MAE, followed by the ANN, and lastly, the mean forecast. Based on MAE, the conclusion would be: &#8220;We won’t sell anything, so don’t bother stocking the product&#8221;. But this outcome occurs solely because 12 out of 20 values in the holdout are zeros, making the median zero as well.</p>
<p>On the other hand, RMSE provides a more reasonable evaluation, showing that the mean of the data is more informative and preferable to the other methods.</p>
<p>The brief summary of this post is: *Don’t use MAE-based error measures for intermittent demand!* (Insert as many exclamation marks as you’d like!)</p>
<p>P.S. Actually, as a general rule, avoid using MAE for evaluating methods that produce mean forecasts. For more details, check out <a href="/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/">this post</a>.</p>
<p>P.P.S What frustrates me a lot is that the reviewers of those papers did nothing to fix this issue, which means that they are clueless about that as well.</p>
<p>Message <a href="https://openforecast.org/2025/01/21/don-t-use-mae-based-error-measures-for-intermittent-demand/">Don’t use MAE-based error measures for intermittent demand!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2025/01/21/don-t-use-mae-based-error-measures-for-intermittent-demand/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Why Naive is not a good benchmark for intermittent demand</title>
		<link>https://openforecast.org/2024/12/02/why-naive-is-not-a-good-benchmark-for-intermittent-demand/</link>
					<comments>https://openforecast.org/2024/12/02/why-naive-is-not-a-good-benchmark-for-intermittent-demand/#comments</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Mon, 02 Dec 2024 14:05:53 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Theory of forecasting]]></category>
		<category><![CDATA[extrapolation methods]]></category>
		<category><![CDATA[intermittent demand]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3739</guid>

					<description><![CDATA[<p>While Naive is considered a standard benchmark in forecasting, there is a case where it might not be a good one: intermittent demand. And here is why I think so. Naive is a forecasting method that uses the last available observation as a forecast for the next ones. It does not have any parameters to [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/12/02/why-naive-is-not-a-good-benchmark-for-intermittent-demand/">Why Naive is not a good benchmark for intermittent demand</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>While Naive is considered a standard benchmark in forecasting, there is a case where it might not be a good one: intermittent demand. And here is why I think so.</p>
<p>Naive is a forecasting method that uses the last available observation as a forecast for the next ones. It does not have any parameters to estimate, it does not require training, it can be applied to the sample of any data (even if you only have one observation). When you deal with a regular demand, it makes perfect sense to use Naive as a benchmark, because it costs nothing in terms of computational time, you get a forecast of demand, and if you cannot beat it, you should rethink your forecasting process.</p>
<p>However, in case of intermittent demand, the demand itself does not happen on every observation. As a result, when the Naive copies the last available value, it can either reproduce either a proper non-zero demand, or just the absence of demand. The latter implies that nobody bought our product today, and nobody will do in the next week or whatever the forecasting horizon we use. In the following image, Naive will be the most accurate forecasting method, because in the training set, the final observation was zero, and in the test set we did not have any sales:</p>
<div id="attachment_3741" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-01.png&amp;nocache=1"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-3741" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-01-300x180.png&amp;nocache=1" alt="Naive forecast on intermittent demand" width="300" height="180" class="size-medium wp-image-3741" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-01-300x180.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-01-768x461.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-01.png&amp;nocache=1 1000w" sizes="(max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3741" class="wp-caption-text">Naive forecast on intermittent demand</p></div>
<p>But is this useful? To answer this question, we need to understand what specifically we are forecasting when we deal with demand with zeroes.</p>
<p>As discussed in a <a href="/2024/11/18/why-zeroes-happen/">previous post</a>, zeroes can occur for different reasons: some of them happen because nobody came to buy the product (naturally occurring zeroes), while the others appear because there was some sort of disruption (e.g. a stockout) or a product was discontinued (artificially occurring zeroes). The two situations are fundamentally different, but if we work with the sales data exclusively (no stock information), it can be hard to tell the difference between them. Naive might work perfectly in both cases, forecasting no sales for the next few observations, and it can be 100% right in some cases. But the problem is that this is not useful. If we indeed cannot beat Naive on the data with zeroes, it does not mean that we should use it, because there is a chance that we have stockouts in the holdout period. If that&#8217;s the case, we might be doing something fundamentally wrong. After all, &#8220;we will not sell anything&#8221; is in general a simple statement, but not ordering products based on that could be a mistake, because &#8220;no sales&#8221; is not the same as &#8220;no demand&#8221;. In fact, if Naive indeed performs very well on your series with zeroes, this might indicate that your evaluation is wrong and you need to clean the data, removing the discontinued and out of stock items from the evaluation.</p>
<p>There are three lessons here:</p>
<ol>
<li>we should forecast demand, not sales;</li>
<li>we should measure accuracy on the data with naturally occurring zeroes &#8211; do data cleaning before setting up your evaluation;</li>
<li>it&#8217;s better to use a benchmark that tries capturing demand, not the one that reproduces sales.</li>
</ol>
<p>Arguably, a more helpful benchmark forecast would be the one in the following image:</p>
<div id="attachment_3742" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-02.png&amp;nocache=1"><img decoding="async" aria-describedby="caption-attachment-3742" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-02-300x180.png&amp;nocache=1" alt="Forecast for intermittent demand from the SMA" width="300" height="180" class="size-medium wp-image-3742" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-02-300x180.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-02-768x461.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/12/2024-11-01-Naive-Intermittent-02.png&amp;nocache=1 1000w" sizes="(max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3742" class="wp-caption-text">Forecast for intermittent demand from the SMA</p></div>
<p>The forecast above was generated using the <a href="/2024/10/28/why-is-it-hard-to-beat-simple-moving-average/">Simple Moving Average</a>, and it tells us that there is a demand for the product over the next 13 days. Yes, it is less accurate than Naive, but it gives an estimate of the expected demand, not the expected sales.</p>
<p>Message <a href="https://openforecast.org/2024/12/02/why-naive-is-not-a-good-benchmark-for-intermittent-demand/">Why Naive is not a good benchmark for intermittent demand</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/12/02/why-naive-is-not-a-good-benchmark-for-intermittent-demand/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>What about the training/test sets?</title>
		<link>https://openforecast.org/2024/10/02/what-about-the-training-test-sets/</link>
					<comments>https://openforecast.org/2024/10/02/what-about-the-training-test-sets/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Wed, 02 Oct 2024 14:32:25 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Theory of forecasting]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[extrapolation methods]]></category>
		<category><![CDATA[theory]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3680</guid>

					<description><![CDATA[<p>Another question my students sometimes ask is how to define the sizes for the training and test sets in a forecasting experiment. If you&#8217;ve done data mining or machine learning, you&#8217;re likely familiar with this concept. But when it comes to forecasting, there are a few nuances. Let&#8217;s discuss. First and foremost, in forecasting, the [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/10/02/what-about-the-training-test-sets/">What about the training/test sets?</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Another question my students sometimes ask is how to define the sizes for the training and test sets in a forecasting experiment. If you&#8217;ve done data mining or machine learning, you&#8217;re likely familiar with this concept. But when it comes to forecasting, there are a few nuances. Let&#8217;s discuss.</p>
<p>First and foremost, in forecasting, the test set (or &#8220;holdout sample&#8221;) should always be at the end of your data, while the training set (or &#8220;in-sample&#8221;) comes before it, because forecasting is about the future, not the past. This may seem obvious, but for people unfamiliar with time series, it can be surprising.</p>
<p>Also, the training and test sets should be continuous, without gaps, to avoid breaking the structure of the data. Machine learning techniques like k-fold cross-validation should account for this (no randomly picking observations from the middle of the time series). The <a href="https://doi.org/10.1016/j.ijforecast.2015.12.011">relevant paper</a> is by Devon Barrow and Sven Crone, who explored several cross-validation techniques for forecasting with neural networks.</p>
<p>As for the sizes of the sets, there’s no strict rule or definitive theory. Some people advocate for a 70/30% split, but this is arbitrary. In practice, you should consider the needs of the business and design your experiment accordingly. For example, if your forecast horizon is 14 days ahead (remember <a href="/2024/09/24/how-to-choose-forecast-horizon/">this post</a>?), your test set should have at least 14 observations for daily data. However, if you use exactly 14 observations, you&#8217;ll only be able to do a &#8220;fixed origin&#8221; evaluation &#8211; forecasting once and stopping there. This can be unreliable because a model might perform well by chance, and you wouldn’t see how it behaves in different situations (e.g., performing well in summer but not in other seasons).</p>
<p>A better approach is to make the test set longer than the forecast horizon and evaluate the model&#8217;s performance over time, for example, throughout a full year, using a rolling origin evaluation (see more <a href="/adam/rollingOrigin.html">here</a>). This gives you more data for analysis (a distribution of error measures) and shows whether the model performs consistently across different periods.</p>
<p>Unfortunately, there is a potential problem with that: in practice many companies only store up to three years of data, often thinking anything older than that is irrelevant. This makes life more difficult for forecasters. With limited data, it may be impossible to fit or compare some models (e.g. seasonal ARIMA/ETS do not always work on data of less than 3 cycles). In such cases, your evaluation options become limited.</p>
<p>A possible solution is to train global models across multiple smaller time series, while keeping larger test sets for each series. For example, in cases where there are shared seasonal patterns, dynamic models can be adjusted to use cross-sectional seasonal indices. In case of ETS, John Boylan, Huijing Chen and I developed <a href="/2022/05/09/vector-exponential-smoothing-with-pic-restrictions/">Vector ETS</a>.</p>
<p>Lastly, to all practitioners out there: please, store as much data as possible! If an analyst or data scientist doesn’t need older data, they can always discard it. But in most cases, we are hungry for data, so the more, the merrier!</p>
<p>Message <a href="https://openforecast.org/2024/10/02/what-about-the-training-test-sets/">What about the training/test sets?</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/10/02/what-about-the-training-test-sets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Straight line is just fine</title>
		<link>https://openforecast.org/2024/09/03/straight-line-is-just-fine/</link>
					<comments>https://openforecast.org/2024/09/03/straight-line-is-just-fine/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Tue, 03 Sep 2024 13:44:13 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Theory of forecasting]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[extrapolation methods]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3661</guid>

					<description><![CDATA[<p>Look at the image above. Which forecast seems more appropriate: the red straight line (1) or the purple wavy line (2)? Many demand planners might choose option 2, thinking it better captures the ups and downs. But, in many cases, the straight line is just fine. Here’s why. In a previous post on Structure vs. [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/09/03/straight-line-is-just-fine/">Straight line is just fine</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Look at the image above. Which forecast seems more appropriate: the red straight line (1) or the purple wavy line (2)? Many demand planners might choose option 2, thinking it better captures the ups and downs. But, in many cases, the straight line is just fine. Here’s why.</p>
<p>In a previous <a href="/2024/08/13/structure-vs-noise-a-fundamental-concept-in-forecasting/">post on Structure vs. Noise</a>, we talked about how a time series is made up of different components (such as level, trend, and seasonality), and how the main goal of a point forecast is to capture the structure of the data, not the noise. Noise is unpredictable, and it should be treated by capturing uncertainty around the point forecasts (e.g., prediction intervals).</p>
<p>So the answer to the question in the very beginning of this post comes to understanding what sort of structure we have in the data. In the series attached to the image, the only structure we have is the level (average sales). There&#8217;s no obvious trend, no seasonality, no apparent outliers, and we do not have promotional information or any explanatory variables. The best you can do in that situation is capture the level correctly and produce a straight line (parallel to the x-axis) for the next 10 observations.</p>
<p>In this case, we used our judgment to decide what’s appropriate. That works well when you’re dealing with just a few time series. <a href="https://doi.org/10.1016/j.jom.2018.05.005">Petropoulos et al. (2018)</a> showed that humans are quite good at selecting models in such a task as above. But what do you do when you have thousands or even millions of time series?</p>
<p>The standard approach today is to apply several models or methods and choose the one that performs best on a holdout sample using an error measure, like RMSE (Root Mean Square Error, for example, <a href="/2024/04/24/best-practice-for-forecasts-evaluation-for-business/">see this</a>). In our example, the red line produced a forecast with an RMSE of 10.33, while the purple line had an RMSE of 10.62, suggesting that the red line is more accurate. However, relying only on one evaluation can be misleading because just by chance, we can get a better forecast with a model that overfits the data.</p>
<p>To address this, we can use a technique called &#8220;rolling origin evaluation&#8221; (<a href="https://doi.org/10.1016/S0169-2070(00)00065-0">Tashman, 2000</a>). The idea is to fit the model to the training data, evaluate its performance on a test set over a specific horizon (e.g., the next 10 days), then add one observation from the test set to the training set and repeat the process. This way, we gather a distribution of RMSEs, leading to a more reliable conclusion about a model’s performance. Nikos Kourentzes has created a neat visualization of this process:</p>
<p><img decoding="async" src="https://openforecast.org/adam/images/03-ROAnimation.gif"  width="500" height="210" class="aligncenter size-medium wp-image-3662" /></p>
<p>For more details with examples in R, you can check out <a href="https://openforecast.org/adam/rollingOrigin.html">Section 2.4</a> of my book.</p>
<p>After doing a rolling origin evaluation, you might find that the straight line is indeed the best option for your data. That’s perfectly fine &#8211; sometimes, simplicity is all you need. But then the real question becomes: what will you do with the point forecasts you’ve produced?</p>
<p>Message <a href="https://openforecast.org/2024/09/03/straight-line-is-just-fine/">Straight line is just fine</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/09/03/straight-line-is-just-fine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Point Forecast Evaluation: State of the Art</title>
		<link>https://openforecast.org/2024/07/16/point-forecast-evaluation-state-of-the-art/</link>
					<comments>https://openforecast.org/2024/07/16/point-forecast-evaluation-state-of-the-art/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Tue, 16 Jul 2024 11:24:06 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Theory of forecasting]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[papers]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3623</guid>

					<description><![CDATA[<p>I have summarised several posts on point forecasts evaluation in an article for the Foresight journal. Mike Gilliland, being the Editor-in-Chief of the journal, contributed to the paper a lot, making it read much smoother, but preferred not to be included as the co-author. This article was recently published in the issue 74 for Q3:2024. [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/07/16/point-forecast-evaluation-state-of-the-art/">Point Forecast Evaluation: State of the Art</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I have summarised several posts on point forecasts evaluation in an article for the <a href="https://forecasters.org/foresight/">Foresight</a> journal. Mike Gilliland, being the Editor-in-Chief of the journal, contributed to the paper a lot, making it read much smoother, but preferred not to be included as the co-author. This article was recently published in the issue 74 for Q3:2024. I attach the author copy to this post just because I can. Here is <a href="/wp-content/uploads/2024/07/Svetunkov-2024-Point-Forecast-Evaluation-State-of-the-Art.pdf">the direct link</a>.</p>
<p>Here are the Key Points from the article:</p>
<ul>
<li>Evaluation is important for tracking forecast process performance and understanding whether changes (to forecasts, models, or the overall process) are needed.</li>
<li>Understand what kind of forecast our models produce, and measure it properly. Most likely, our approach produces the mean (rather than the median) as a point forecast, so root mean squared error (RMSE) should be used to evaluate it.</li>
<li>To aggregate the error measure across several products, you need to scale it. A reliable way of scaling is to divide the selected error measure by the mean absolute differences of the training data. This way we get rid of the scale and units of the original measure and make sure that its value does not change substantially if we have trend in the data.</li>
<li>Avoid MAPE!</li>
<li>To make decisions based on your error measure, consider using the FVA framework, directly comparing performance of your forecasting approach with the performance of some simple<br />
benchmark method.</li>
</ul>
<p><strong>Disclaimer</strong>: This article originally appeared in Foresight, Issue 74 (forecasters.org/foresight) and is made available with permission of Foresight and the International Institute of Forecasters.</p>
<p>Message <a href="https://openforecast.org/2024/07/16/point-forecast-evaluation-state-of-the-art/">Point Forecast Evaluation: State of the Art</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/07/16/point-forecast-evaluation-state-of-the-art/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Don&#8217;t forget about bias!</title>
		<link>https://openforecast.org/2024/05/07/don-t-forget-about-bias/</link>
					<comments>https://openforecast.org/2024/05/07/don-t-forget-about-bias/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Tue, 07 May 2024 11:43:36 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[theory]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3531</guid>

					<description><![CDATA[<p>So far, we&#8217;ve discussed forecasts evaluation, focusing on the precision of point forecasts. However, there are many other dimensions in the evaluation that can provide useful information about your model&#8217;s performance. One of them is bias, which we&#8217;ll explore today. Introduction But before that, why should we bother with bias? Research suggests that bias is [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/05/07/don-t-forget-about-bias/">Don&#8217;t forget about bias!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>So far, we&#8217;ve discussed forecasts evaluation, focusing on the precision of point forecasts. However, there are many other dimensions in the evaluation that can provide useful information about your model&#8217;s performance. One of them is bias, which we&#8217;ll explore today.</p>
<h3>Introduction</h3>
<p>But before that, why should we bother with bias? Research suggests that bias is more related to the operational performance than accuracy. For example, <a href="https://doi.org/10.1111/deci.12208">Sanders &#038; Graman (2016)</a> discovered that an increase in bias leads to an exponential rise in operational costs, whereas similar deterioration in accuracy results in a linear cost increase. <a href="https://doi.org/10.1016/j.ijpe.2019.107597">Kourentzes et al., (2020)</a> estimated forecasting models using different loss functions, including the one based on the inventory costs, and found that better inventory performance was associated with lower bias. These findings indicate that high bias impacts supply chain and inventory costs more substantially than low accuracy does. Thus, minimizing bias in your model is crucial.</p>
<p>So, how can we measure it?</p>
<p>When producing a point forecast and comparing it to actual values, you get a collection of forecast errors. Averaging the squares of these errors gives the Mean Squared Error (MSE). If you average their absolute values, you obtain the Mean Absolute Error (MAE). Both measures assess the variability of actual values around your forecast, but in different ways. But we can also measure whether the model systematically overshoots or undershoots the actual values. To do that, we can average the errors without removing their signs, resulting in the Mean Error (ME), which measures forecast bias.</p>
<p>A simple interpretation of the ME, is that it shows whether the forecast consistently overshoots (negative value) or undershoots (the positive one) the actual values. An ME of zero suggests that, on average, the point forecast goes somehow closely to the middle of the data. Here is a visual example of the three situations:</p>
<div id="attachment_3533" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example.png&amp;nocache=1"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3533" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-300x175.png&amp;nocache=1" alt="Example of three forecasts with different bias" width="300" height="175" class="size-medium wp-image-3533" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3533" class="wp-caption-text">Example of three forecasts with different bias</p></div>
<p>In the plot above, we have three cases:</p>
<ol>
<li>Forecast is negatively biased, overshooting the data with ME = -166.42 (the blue line);</li>
<li>Forecast is almost unbiased, going in the middle of the data (but not being able to capture the structure correctly) with ME=0.45 (purple line);</li>
<li>Forecast is positively biased, undershooting the data with ME=176.97 (the red line);</li>
</ol>
<p>If we were to make a decision only based on the ME, we would need to say that the second forecast (purple line) is unbiased and should be preferred. The problem is that the ME does not measure how well the forecast captures the structure or how close it is to the actual data. This is why bias should not be used on its own, but rather in combination with some accuracy measure (<a href="/2024/04/24/best-practice-for-forecasts-evaluation-for-business/">e.g. RMSE</a>). Arguably, a much better forecast is the one shown below:</p>
<div id="attachment_3534" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-good.png&amp;nocache=1"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3534" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-good-300x175.png&amp;nocache=1" alt="An example of an unbiased and accurate forecast" width="300" height="175" class="size-medium wp-image-3534" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-good-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-good-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-good-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-30-bias-example-good.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3534" class="wp-caption-text">An example of an unbiased and accurate forecast</p></div>
<p>In this figure, we see that not only the forecast line goes through the data in the holdout, but it also captures accurately an upward trend, achieving an ME of 0.28 and the lowest RMSE among the discussed forecasts.</p>
<p>So, as we see, it is indeed important to track both bias and accuracy. What&#8217;s next?</p>
<h3>How to aggregate Mean Error</h3>
<p>Well, we might need to aggregate the mean error to get an overall impression about the performance of our model across several time series. How do we do that?</p>
<p>If you are thinking of calculating the &#8220;Mean Percentage Error&#8221; (similarly to MAPE, but without absolute value), then don&#8217;t! It will have the same problems caused by the division of the error by the actuals (as discussed <a href="/2024/04/17/avoid-using-mape/">here</a>, for example). Instead, it&#8217;s better to use a reliable scaling method. At the very least, you could divide the mean error by the in-sample mean to get something called a &#8220;scaled Mean Error&#8221; (sME). An even better option is to divide the ME by the mean absolute differences of the data to get rid of a potential trend (similar to how it was done in MASE by <a href="https://doi.org/10.1016/j.ijforecast.2006.03.001">Koehler &#038; Hyndman 2006</a>).</p>
<p>After that, you will end up with distributions of scaled MEs for various forecasting approaches across different products, like the one shown in the image below (we discussed a similar idea in <a href="/2024/03/27/what-does-lower-error-measure-really-mean/">this post</a>):</p>
<div id="attachment_3537" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-boxplots-zoomed.png&amp;nocache=1"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3537" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-boxplots-zoomed-300x175.png&amp;nocache=1" alt="Boxplots of scaled Mean Errors for several forecasting models" width="300" height="175" class="size-medium wp-image-3537" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-boxplots-zoomed-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-boxplots-zoomed-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-boxplots-zoomed-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-boxplots-zoomed.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3537" class="wp-caption-text">Boxplots of scaled Mean Errors for several forecasting models</p></div>
<p>The boxplots above  are zoomed in because there were some cases with extremely high bias. We can see that different forecasting methods produce varying distributions of sMEs: some are narrower, others wider. Comparing the means (red dots) and medians (black dots) of these distributions, it appears that the CES model is the least biased on average since its mean and median are closest to zero. However, averaging like this can be misleading as positive and negative biases can cancel each other out, resulting in an &#8220;average temperature in the hospital&#8221; situation. Besides, just because the average of sMEs for one method is closer to zero, it doesn&#8217;t necessarily mean it is consistently less biased. This only shows that it is least biased on average. A more useful approach might be to look at the distribution of the absolute values of sMEs (after all, it is not as important whether the model is positively or negatively biased on average, as whether it is biased at all):</p>
<div id="attachment_3536" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-abs-boxplots-zoomed.png&amp;nocache=1"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3536" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-abs-boxplots-zoomed-300x175.png&amp;nocache=1" alt="Boxplots of absolute scaled Mean Errors for several forecasting models" width="300" height="175" class="size-medium wp-image-3536" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-abs-boxplots-zoomed-300x175.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-abs-boxplots-zoomed-1024x597.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-abs-boxplots-zoomed-768x448.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-29-sME-abs-boxplots-zoomed.png&amp;nocache=1 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3536" class="wp-caption-text">Boxplots of absolute scaled Mean Errors for several forecasting models</p></div>
<p>In the image above, it becomes clear that CES is the least biased approach in terms of median, while the ETS is the least biased one in terms of mean. This suggests that CES has some instances of higher bias compared to ETS. Additionally, the boxplot for CES is narrower, indicating that in most cases, it produces less biased forecasts.</p>
<h3>Bias and accuracy</h3>
<p>Finally, as discussed above, it makes sense to look at both bias and accuracy together to better understand how models perform. But how exactly can we do this?</p>
<p><strong>DISCLAIMER</strong>: the ideas I am about to share are based on my own understanding of the issue. Most of the research on forecasting focuses on evaluating accuracy, and there are only a few studies on bias. I haven&#8217;t come across any studies that address both bias and accuracy together in a holistic way. So, take this with a grain of salt, and I&#8217;d appreciate any references to relevant studies that I might have missed.</p>
<p>To jointly analyze both bias and accuracy, we might try to summarize them using mean to gain a clearer picture of how models perform on our data. However, simply looking at their average values can be misleading (see <a href="/2024/03/27/what-does-lower-error-measure-really-mean/">this post</a>). A better approach could be to look at the quartiles and the means of these measures. Since bias often relates more directly to operational costs, it might make sense to examine it first. Here is an example using the same dataset as in <a href="/2024/03/27/what-does-lower-error-measure-really-mean/">this post</a> (the lower the value, the better the model performs in terms of absolute bias):</p>
<p><strong>Absolute Bias</strong></p>
<pre>           min    1Q  median    3Q     max  mean
ADAM ETS <strong>0.000</strong> <strong>0.277</strong>   <strong>0.748</strong> 1.862  39.694 <strong>1.463</strong>
ETS      0.001 0.281   0.760 1.901  39.694 1.488
ARIMA    <strong>0.000</strong> 0.297   0.778 1.875  39.694 1.509
CES      <strong>0.000</strong> 0.278   0.753 <strong>1.801</strong>  <strong>39.294</strong> 1.473</pre>
<p>From the table above, we see that no single model consistently outperforms the others across all measures of absolute bias. However, the ADAM ETS model does better than others in terms of the median and mean absolute bias, and it&#8217;s the second-best in terms of the third quartile and the maximum value. The second least biased model is CES, which suggests these two models could be prime candidates for the next step in the model selection.</p>
<p>Looking at accuracy, we see the following picture:</p>
<p><strong>Accuracy</strong></p>
<pre>           min    1Q  median    3Q     max  mean
ADAM ETS <strong>0.024</strong> <strong>0.670</strong>   1.180 2.340  51.616 <strong>1.947</strong>
ETS      <strong>0.024</strong> 0.677   1.181 2.376  51.616 1.970
ARIMA    0.025 0.681   1.179 2.358  51.616 1.986
CES      0.045 0.675   <strong>1.171</strong> <strong>2.330</strong>  <strong>51.201</strong> 1.960</pre>
<p>The accuracy tells us a slightly different story: CES appears to be the most accurate in terms of the median, third quartile, and maximum values. ETS still performs better in terms of the mean, minimum, and first quartile. Given these mixed results, we can&#8217;t conclusively choose the best model between the two. Therefore, our selection might also consider other factors, such as computational time, ease of understanding, or simplicity of the model (ETS, for instance, is arguably simpler than the Complex Exponential Smoothing).</p>
<p>Message <a href="https://openforecast.org/2024/05/07/don-t-forget-about-bias/">Don&#8217;t forget about bias!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/05/07/don-t-forget-about-bias/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Best practice for forecasts evaluation for business</title>
		<link>https://openforecast.org/2024/04/24/best-practice-for-forecasts-evaluation-for-business/</link>
					<comments>https://openforecast.org/2024/04/24/best-practice-for-forecasts-evaluation-for-business/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Wed, 24 Apr 2024 10:06:39 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[theory]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3526</guid>

					<description><![CDATA[<p>One question I received from my LinkedIn followers was how to evaluate forecast accuracy in practice. MAPE is wrong, but it is easy to use. In practice, we want something simple, informative and straightforward, but not all error measures are easy to calculate and interpret. What should we do? Here is my subjective view. Step [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/04/24/best-practice-for-forecasts-evaluation-for-business/">Best practice for forecasts evaluation for business</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>One question I received from my LinkedIn followers was how to evaluate forecast accuracy in practice. <a href="https://openforecast.org/2024/04/17/avoid-using-mape/">MAPE is wrong</a>, but it is easy to use. In practice, we want something simple, informative and straightforward, but not all error measures are easy to calculate and interpret. What should we do? Here is my subjective view.</p>
<p><strong>Step 1</strong>. Choose error measure.</p>
<p>If you are interested in measuring the performance of your approaches at the individual level (e.g., SKU), you can use RMSE without needing to scale it. Why RMSE? As discussed in <a href="/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/">a previous post</a>, it is minimized by the mean, which is what most forecasting methods produce. If your method produces medians, then you should use MAE instead of RMSE.</p>
<p>If you want to measure the performance of different approaches across several time series, you can still calculate individual RMSEs. However, before aggregating, you need to scale them to avoid adding apples to oranges and beer bottles. Plus, the volume of sales might differ substantially from one product to another. The simplest scaling method is to divide RMSE by the in-sample mean. This has issues if data exhibits trends: if sales are increasing, your in-sample mean will also increase, deflating the RMSE. A better approach is to divide RMSE by the root mean squared differences of the data, which are typically more stable. This measure, called RMSSE (Root Mean Squared Scaled Error), was used in the M5 competition and was motivated by <a href="https://doi.org/10.1016/j.ijforecast.2022.08.003">Athanasopoulos &#038; Kourentzes (2022)</a>. The measure itself is hard to interpret, but we will address this in the next steps.</p>
<p><strong>Step 2</strong>. Benchmarks</p>
<p>Calculate the error measures for some benchmark approaches, such as Naive, ETS, and ARIMA. These will be used as baselines for the next step.</p>
<p><strong>Step 3</strong>. &#8220;Forecast Value Added&#8221; (FVA)</p>
<p>Calculate something called FVA (<a href="https://doi.org/10.1002/9781119199885">by Mike Gilliland</a>). This approach calculates the ratio between the error measure for the method of interest and the benchmark. You end up with a value showing how many percent your method is better than the benchmark. For example, if the FVA for your ML approach compared to ETS was 0.85, you can say that it improves accuracy by 15% (1-0.85=0.15).</p>
<p>And that&#8217;s it!</p>
<p>So, instead of focusing on values of <a href="/2017/07/29/naughty-apes-and-the-quest-for-the-holy-grail/">some APE</a>, we would be moving to the discussion of how you can improve your process directly. Doing FVA, gives you a meaningful information about the performance of your approaches and can help you make specific changes to the forecasting process if needed.</p>
<p>There are also many other questions related to forecasting performance evaluation, such as what decisions you plan to make, on what level you should produce forecasts, how you plan to use forecasts etc. I might return to some of them in future posts.</p>
<p>Message <a href="https://openforecast.org/2024/04/24/best-practice-for-forecasts-evaluation-for-business/">Best practice for forecasts evaluation for business</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/04/24/best-practice-for-forecasts-evaluation-for-business/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Avoid using MAPE!</title>
		<link>https://openforecast.org/2024/04/17/avoid-using-mape/</link>
					<comments>https://openforecast.org/2024/04/17/avoid-using-mape/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Wed, 17 Apr 2024 08:31:35 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[error measures]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3510</guid>

					<description><![CDATA[<p>Frankly speaking, I didn&#8217;t see the point in discussing MAPE when I wrote recent posts on error measures. However, I&#8217;ve received several comments and messages from data scientists and demand planners asking for clarification. So, here it is. TL;DR: Avoid using MAPE! MAPE, or Mean Absolute Percentage Error, is a still-very-popular-in-practice error measure, which is [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/04/17/avoid-using-mape/">Avoid using MAPE!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Frankly speaking, I didn&#8217;t see the point in discussing MAPE when I wrote recent posts on error measures. However, I&#8217;ve received several comments and messages from data scientists and demand planners asking for clarification. So, here it is.</p>
<p><strong>TL;DR: Avoid using MAPE!</strong></p>
<p>MAPE, or Mean Absolute Percentage Error, is a still-very-popular-in-practice error measure, which is calculated by taking the absolute difference between the actual and forecast, dividing it by the actual value:</p>
<p>\begin{equation*}<br />
    \mathrm{MAPE} = \mathrm{mean} \left(\frac{actual &#8211; forecast}{actual} \right).<br />
\end{equation*}</p>
<p>The rationale is clear: we need to get rid of scale, and we want something that measures accuracy well, is easy to calculate and interpret. Unfortunately, MAPE is none of these things, and here is why.</p>
<ol>
<li>It is scale sensitive: if you have sales in thousands of units then the actual value in the denominator will bring the overall measure down and you will have very low number even if the model is not doing well. Similarly, if you deal with very low volumes, they will inflate the measure, making it easily hundreds of percents, even if the model does a very good job.</li>
<li>It is well known that MAPE prefers when you underforecast (<a href="https://doi.org/10.1016/0169-2070(92)90009-X">Fildes, 1992</a>). It is not symmetric and might be misleading. BTW, &#8220;symmetric&#8221; MAPE is not better and not symmetric either (<a href="https://doi.org/10.1016/S0169-2070(99)00007-2">Goodwin &#038; Lawton, 1999</a>).</li>
<li>It is not easy to calculate on intermittent demand. Technically speaking, you get an infinite value, so it is not possible to calculate it in that case.</li>
<li>Okay, it is easy to interpret, fair enough. But the value itself does not tell you anything about performance of your model (see point 1 above).</li>
<li>And it is not clear what it is minimised with (remember <a href="/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/">this post</a>?).</li>
</ol>
<p>In fact, anything that has &#8220;APE&#8221; in it, will have similar issues.</p>
<p>Right. So, how can we fix that?</p>
<p>The main problem of MAPE arises because of the division of the forecast error by the actuals from the holdout sample. If we change the denominator, we solve problems (1) and (2).</p>
<p><a href="https://doi.org/10.1016/j.ijforecast.2006.03.001">Hyndman &#038; Koehler (2006)</a> proposed a solution, taking the Mean Absolute Error (MAE) of forecast and dividing it by the mean absolute differences of the data. The latter step is done purely for scaling reasons, and we end up with something called &#8220;MASE&#8221; that does not have the issues (1), (2) and (5), but is not easy to interpret.</p>
<p>The problem with MASE is that it is minimised by median and as a result <a href="https://openforecast.org/2020/01/13/what-about-all-those-zeroes-measuring-performance-of-models-on-intermittent-demand/">not appropriate for intermittent demand</a>. But there is a good alternative based on the Root Mean Squared Error (RMSE), called RMSSE (<a href="https://doi.org/10.1016/j.ijforecast.2021.11.013">Makridakis et al., 2022</a>) that uses the same logic as MASE: take RMSE and divide it by the in-sample Root Mean Squared differences. It is still hard to interpret, but at least it ticks the other four boxes.</p>
<p>If you really need the &#8220;interpretation&#8221; bit in your error measure, consider dividing MAE/RMSE by the in-sample mean of the data (<a href="https://doi.org/10.1057/jors.2014.62">Petropoulos &#038; Kourentzes, 2015</a>). This might not fix the issue (1) completely, but at least it would solve the other four problems.</p>
<p>If you want to learn more about error measures, check out <a href="https://openforecast.org/adam/errorMeasures.html">Section 2.1</a> of my monograph or read an old post of mine &#8220;<a href="https://openforecast.org/2017/07/29/naughty-apes-and-the-quest-for-the-holy-grail/">Naughty APEs and the quest for the holy grail</a>&#8220;.</p>
<p>And here is a depiction of <a href="https://openforecast.org/2017/07/29/naughty-apes-and-the-quest-for-the-holy-grail/">Mean APEs</a>, inspired by my old post (thanks to Stephan Kolassa for the idea of the image):</p>
<div id="attachment_3520" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-05-MeanAPEs.jpg&amp;nocache=1"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3520" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-05-MeanAPEs-300x300.jpg&amp;nocache=1" alt="Mean APEs" width="300" height="300" class="size-medium wp-image-3520" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-05-MeanAPEs-300x300.jpg&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-05-MeanAPEs-150x150.jpg&amp;nocache=1 150w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-05-MeanAPEs-768x768.jpg&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-04-05-MeanAPEs.jpg&amp;nocache=1 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3520" class="wp-caption-text">Mean APEs</p></div>
<p>Message <a href="https://openforecast.org/2024/04/17/avoid-using-mape/">Avoid using MAPE!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/04/17/avoid-using-mape/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Stop reporting several error measures just for the sake of them!</title>
		<link>https://openforecast.org/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/</link>
					<comments>https://openforecast.org/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/#respond</comments>
		
		<dc:creator><![CDATA[Ivan Svetunkov]]></dc:creator>
		<pubDate>Wed, 03 Apr 2024 10:45:11 +0000</pubDate>
				<category><![CDATA[Forecast evaluation]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Theory of forecasting]]></category>
		<category><![CDATA[error measures]]></category>
		<category><![CDATA[theory]]></category>
		<guid isPermaLink="false">https://openforecast.org/?p=3399</guid>

					<description><![CDATA[<p>We continue our discussion of error measures (if you don&#8217;t mind). One other thing that you encounter in forecasting experiments is tables containing several error measures (MASE, RMSSE, MAPE, etc.). Have you seen something like this? Well, this does not make sense, and here is why. The idea of reporting several error measures comes from [&#8230;]</p>
<p>Message <a href="https://openforecast.org/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/">Stop reporting several error measures just for the sake of them!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>We continue our discussion of error measures (if you don&#8217;t mind). One other thing that you encounter in forecasting experiments is tables containing several error measures (MASE, RMSSE, MAPE, etc.). Have you seen something like this? Well, this does not make sense, and here is why.</p>
<p>The idea of reporting several error measures comes from <a href="/2024/03/14/the-role-of-m-competitions-in-forecasting/">forecasting competitions</a>, one of the findings of which was that the ranking of methods might differ depending on what error measure you use. But this is so 20th-century thing to do! We are now in the 21st century and have a much better understanding of what to measure and how.</p>
<p>I should start with the maxima very well summarised by Stephan Kolassa (<a href="http://dx.doi.org/10.1016/j.ijforecast.2015.12.004">2016</a> and <a href="https://doi.org/10.1016/j.ijforecast.2019.02.017">2020</a>): MAE-based measures are minimised by the median of a distribution, while the RMSE-based ones are minimised by the mean. To illustrate this point, see the following image of a distribution of a variable x:</p>
<div id="attachment_3401" style="width: 310px" class="wp-caption aligncenter"><a href="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-03-28-Several-error-measures.png&amp;nocache=1"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3401" src="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-03-28-Several-error-measures-300x168.png&amp;nocache=1" alt="Distribution of a variable x with several error measures" width="300" height="168" class="size-medium wp-image-3401" srcset="https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-03-28-Several-error-measures-300x168.png&amp;nocache=1 300w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-03-28-Several-error-measures-1024x573.png&amp;nocache=1 1024w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-03-28-Several-error-measures-768x430.png&amp;nocache=1 768w, https://openforecast.org/wp-content/webpc-passthru.php?src=https://openforecast.org/wp-content/uploads/2024/04/2024-03-28-Several-error-measures.png&amp;nocache=1 1230w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3401" class="wp-caption-text">Distribution of a variable x with several error measures</p></div>
<p>What you see in that image is a histogram with three vertical lines: red for mean, blue for median and green for the geometric mean. To the right of the histogram, you can see a small table with the three error measures (read more about them <a href="/adam/errorMeasures.html">here</a>): RMSE (Root Mean Squared Error), MAE (Mean Absolute Error), and RMSLE (Root Mean Squared Logarithmic Error, based on difference in logarithms). You can see that RMSE is minimised by the mean, MAE is minimised by the median and the RMSLE is minimised by the geometric mean. And this happens by design, not by coincidence.</p>
<p>So what?</p>
<p>Well, this just tells us that it does not make sense to use all three error measures, because they measure different things. If your models produce conditional means (this is what the majority of them do by default), use RMSE-based measure &#8211; there is no point in showing how those models also perform in terms of MAPE/MASE, or whatever else. If your model produces conditional mean, fails in terms of RMSE, but does a good job in terms of MAPE, then it is probably not doing a good job overall. It is like saying that my bicycle isn&#8217;t great for riding, but it excels at hammering nails. So, think what you want to measure and measure it! And if you want to measure a temperature, don&#8217;t use a ruler!</p>
<p>Having said that, I should confess that I used to report several measures in my papers until a few years back. This is because I did not understand this idea very well. But I have realised my mistake, and now I am trying to avoid this and stick to those measures that make sense for the task at hand.</p>
<p>Another story is whether you are interested in the accuracy of point forecasts, their bias or the performance of a model in terms of quantiles. In that case you might need a completely different set of error measures. But I might come back to this in a future post.</p>
<p>Message <a href="https://openforecast.org/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/">Stop reporting several error measures just for the sake of them!</a> first appeared on <a href="https://openforecast.org">Open Forecasting</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://openforecast.org/2024/04/03/stop-reporting-several-error-measures-just-for-the-sake-of-them/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
