Nothing
skip_if(debug_mode)
set.seed(1)
T <- 1000
N <- 2
P <- 99
prob_grid <- 1:P / (P + 1)
# Deviation of the experts
dev <- c(-1, 3)
experts_sd <- c(1, sqrt(4))
E1 <- qnorm(prob_grid, mean = dev[1], sd = experts_sd[1])
E2 <- qnorm(prob_grid, mean = dev[2], sd = experts_sd[2])
# Realized observations
y <- rnorm(T)
# Expert predictions
experts <- array(dim = c(T, P, N))
for (t_ in 1:T) {
experts[t_, , 1] <- qnorm(prob_grid,
mean = dev[1],
sd = experts_sd[1]
)
experts[t_, , 2] <- qnorm(prob_grid,
mean = dev[2],
sd = experts_sd[2]
)
}
boa_smooth_crossed <- online(
y = matrix(y),
tau = prob_grid,
experts = experts,
allow_quantile_crossing = TRUE,
trace = FALSE
)
boa_smooth <- online(
y = matrix(y),
tau = prob_grid,
experts = experts,
allow_quantile_crossing = FALSE,
trace = FALSE
)
# We expect that quantile crossing happens and therefore losses are different:
expect_true(
sum(boa_smooth_crossed$forecaster_loss) != sum(boa_smooth$forecaster_loss)
)
# We expect that the "sorted loss" is less than the "unsorted loss"
expect_lt(
sum(boa_smooth$forecaster_loss), sum(boa_smooth_crossed$forecaster_loss)
)
# Multivariate setting (sorting will be disabled automatically)
# T <- 1000
# N <- 2
# P <- 2
# prob_grid <- c(0.5, 0.5)
# mean_y <- 0
# sd_y <- 5
# # Realized observations
# y <- matrix(c(rnorm(n = T), rnorm(n = T)), ncol = 2)
# # Expert predictions
# experts <- array(dim = c(T, P, N))
# for (t in 1:T) {
# experts[t, , 1] <- qnorm(prob_grid, mean = -5, sd = 2)
# experts[t, , 2] <- qnorm(prob_grid, mean = 5, sd = 2)
# }
# boa_smooth_crossed <- online(
# y = y,
# tau = prob_grid,
# experts = experts,
# allow_quantile_crossing = TRUE,
# trace = FALSE
# )
# expect_warning(
# boa_smooth <- online(
# y = y,
# tau = prob_grid,
# experts = experts,
# allow_quantile_crossing = FALSE,
# trace = FALSE
# )
# )
# # We expect that the "sorted loss" is less than the "unsorted loss"
# expect_equal(
# sum(boa_smooth$forecaster_loss), sum(boa_smooth_crossed$forecaster_loss)
# )
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.