【发布时间】:2021-01-24 20:08:17
【问题描述】:
我正在努力复制一篇论文中的评分规则Forecasting the intermittent demand for slow-moving inventories: A modelling approach
论文对评分规则的描述如下:
这是我的尝试
y <- rpois(n = 100, lambda = 10) # forecasted distribution
x <- 10 # actual value
drps_score <- function(x = value, y = q){
# x = actual value (single observation); y = quantile forecasted value (vector)
Fy = ecdf(y) # cdf function
indicator <- ifelse(y - x > 0, 1, 0) # Heaviside
score <- sum((indicator - Fy(y))^2)
return(score)
}
> drps_score(x = x, y = y)
[1] 53.028
这似乎运作良好,直到我提供一个 0 的向量,如下所示:
y <- rep(x = 0, 100)
> drps_score(x = x, y = y)
[1] 0
我知道他们在本文中使用的一种方法是 0 预测,他们的结果并未显示 DRPS 为 0。这让我觉得计算失败了。
【问题讨论】:
-
当您的
y是 100 个零时,您到底想计算什么?您希望计算什么样的 CDF?这不是一个适当的分布 -
所以这可能是我自己的误解。我假设即使在指数族之外也可以使用任何分布。在我看来,即使是对所有百分位数(0 到 99)的 0 预测也是一个很好的分布。如果这是用户想要的预测,那么这似乎是一个合理的输入。
-
好吧,如果你准确地知道你在分布 PDF(x|x0) = δ(x-x0) 和 CDF=H(x-x0) 中的值,其中 H() 是重步骤功能。在这种情况下,我会质疑预测的价值。基本上,您预测 CDF H(x-x0) 左侧的值,您的重侧为 0,CDF 重侧为 0,得分为 0。
-
好的,但是我的实现与描述相符吗?
-
据我所知,您的
indicator与那篇论文中的不一样。应该是indicator <- ifelse(y - x > 0, 1, 0)。
标签: r probability distribution forecasting forecast