0

在 stackexchange 的线程中:“forecast-accuracy-metric-that-involves-prediction-intervals”有关更多详细信息,请参阅显示预测间隔质量度量的链接。

我想在 R 中计算质量度量:

library(quantreg)

## Split data 
smp_size <- floor(0.75 * nrow(iris))
set.seed(123)

train_ind <- sample(seq_len(nrow(iris)), size = smp_size)
train <- iris[train_ind, ]
test <- iris[-train_ind, ]

# Training model for prediction intervals, lw(lower) and up(upper) intervals
model_lw <- rq(Sepal.Length~Petal.Length+Petal.Width, data= train, tau = 0.1)
model_up <- rq(Sepal.Length~Petal.Length+Petal.Width, data= train, tau = 0.9)

# Interval Predictions, lw(lower) and up(upper) intervals
pred_lw <- predict(model_lw, test)
pred_up <- predict(model_up, test) 

通过使用产品:

pred_lw,pred_up & test$Sepal.Length

目标

  • 可以计算区间质量度量。我想找到一个用于区间预测评估的实现库。

  • 另一种解决方案可以是计算“预测区间的覆盖范围和长度”或任何其他评估指标。

对此实施有任何帮助吗?

4

1 回答 1

0

对于 quantle 回归的评估预测区间,找到了两个实现解决方案,包括任何其他指标scoringutilsgreybox.

解决方案

library(scoringutils)
# Scoring Rule to score quantile predictions, (Gneiting & Raftery, 2007)
mean(interval_score(true_values = test$Sepal.Length, 
               lower = pred_lw, 
               upper = pred_up, 
               interval_range = 80))

library(greybox)
# Mean Interval Score (Gneiting & Raftery, 2007),
MIS(actual = test$Sepal.Length, 
    lower = pred_lw, 
    upper = pred_up, 
    level = 0.80)

# interval range or level -> 0.9 - 0.1 = 0.8 (80) 

在第二个包中,可以使用对称和相对分数度量,应进行进一步研究,以了解该度量与其他一些统计数据的偏差和应用。

希望这对社区有所帮助

于 2020-08-18T08:29:06.973 回答