## ----cp-knit-opts, include = FALSE-------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 6, fig.height = 4, fig.align = "center" ) ## ----setup-------------------------------------------------------------------- library(MetaHunt) set.seed(1) ## ----cp-simulate-------------------------------------------------------------- # m = 80 is large enough that with cal_frac = 0.5 and alpha = 0.05 the conformal quantile is finite. m <- 80; G <- 20; K_true <- 3 x <- seq(0, 1, length.out = G) basis <- rbind(sin(pi * x), cos(pi * x), x) W <- data.frame(w1 = rnorm(m), w2 = rnorm(m)) beta <- cbind(c(1, -0.8), c(-0.5, 1.2), c(0, 0)) pi_true <- exp(as.matrix(W) %*% beta); pi_true <- pi_true / rowSums(pi_true) F_hat <- pi_true %*% basis + matrix(rnorm(m * G, sd = 0.05), m, G) ## ----cp-wnew------------------------------------------------------------------ W_new <- data.frame(w1 = c(0, 1, -1), w2 = c(0, -0.5, 1)) ## ----cp-split-pointwise------------------------------------------------------- res_pw <- split_conformal(F_hat, W, W_new, K = K_true, alpha = 0.05, cal_frac = 0.5, seed = 1, dfspa_args = list(denoise = FALSE)) plot(res_pw, target_idx = 1, x_axis = x) ## ----cp-split-scalar---------------------------------------------------------- res_scalar <- split_conformal(F_hat, W, W_new, K = K_true, wrapper = mean, alpha = 0.05, cal_frac = 0.5, seed = 1, dfspa_args = list(denoise = FALSE)) data.frame(prediction = res_scalar$prediction, lower = res_scalar$lower, upper = res_scalar$upper) ## ----cp-cross----------------------------------------------------------------- res_cross <- cross_conformal(F_hat, W, W_new, K = K_true, n_folds = 4, wrapper = mean, alpha = 0.1, seed = 1, dfspa_args = list(denoise = FALSE)) res_cross ## ----cp-prefit---------------------------------------------------------------- fit <- metahunt(F_hat, W, K = K_true, dfspa_args = list(denoise = FALSE)) pi_hat <- project_to_simplex(F_hat, fit$dfspa_fit$bases) res_pre <- conformal_from_fit( dfspa_fit = fit$dfspa_fit, weight_model = fit$weight_model, F_cal = F_hat, W_cal = W, W_new = W_new, wrapper = mean, alpha = 0.1 ) res_pre ## ----cp-small-m-warning, warning = TRUE--------------------------------------- m_small <- 30 # too small for alpha = 0.05 with cal_frac = 0.5 F_small <- F_hat[1:m_small, , drop = FALSE] W_small <- W[1:m_small, , drop = FALSE] res_inf <- split_conformal(F_small, W_small, W_new, K = K_true, alpha = 0.05, cal_frac = 0.5, seed = 1, dfspa_args = list(denoise = FALSE)) res_inf$quantile # Inf — quantile is unbounded range(res_inf$lower) # -Inf range(res_inf$upper) # Inf