【问题标题】:How to calculated DRPS (Discrete Rank Probability Score)如何计算 DRPS(离散等级概率分数)
【发布时间】: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 &lt;- ifelse(y - x &gt; 0, 1, 0)

标签: r probability distribution forecasting forecast


【解决方案1】:

我认为这里存在一些问题。

首先,我不认为您在计分函数中计算了正确的总和。分数要求您对 y 的所有可能值(即所有正整数)求和,而不是对 y 的所有预测样本求和。

其次,我不认为上述定义给出了预期的结果,当 y=x 时 \hat F (y) 定义为 0,那么对于点质量为的预测,您不会得到零分真正的价值。 (是的,我是说源是“错误的”,或者至少有一个没有给出预期结果的定义。)这是一个我认为可以解决这两个问题的重新制定的函数:

x <- 10 # actual value

drps_score <- function(x = value, y = q, nsum=100){
    # x = actual value (single observation); y = quantile forecasted value (vector)
    Fy = ecdf(y) # cdf function
    ysum <- 0:nsum
    indicator <- ifelse(ysum - x >= 0, 1, 0) # Heaviside
    score <- sum((indicator - Fy(ysum))^2)
    return(score)
}



> drps_score(x = x, y = rpois(n = 1000, lambda = 8))
[1] 1.248676
> drps_score(x = x, y = rpois(n = 1000, lambda = 9))
[1] 0.878183
> drps_score(x = x, y = rpois(n = 1000, lambda = 10))
[1] 0.692667
> drps_score(x = x, y = rep(10, 100))
[1] 0
> drps_score(x = x, y = rpois(n = 1000, lambda = 11))
[1] 0.883333

以上显示以真值 (lambda=10) 为中心的分布在非点质量分布中得分最低。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2016-07-28
    相关资源
    最近更新 更多