## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>") library(rvinecopulib) set.seed(501) ## ----select-copula------------------------------------------------------------ n <- 180 z <- rnorm(n) x <- cbind( response1 = z + rnorm(n), response2 = -0.5 * z + rnorm(n), driver1 = z + rnorm(n, sd = 0.5), driver2 = 0.4 * z + rnorm(n) ) u <- pseudo_obs(x) fit <- vinecop( u, family_set = "onepar", conditioning_set = c("driver1", "driver2") ) get_structure(fit) ## ----conditional-copula------------------------------------------------------- condition <- c(0.25, 0.8) draws <- rvinecop( 100, fit, u_cond = condition, conditioning_set = c("driver1", "driver2") ) stopifnot( isTRUE(all.equal(draws[, "driver1"], rep(condition[1], 100))), isTRUE(all.equal(draws[, "driver2"], rep(condition[2], 100))) ) head(draws) ## ----row-specific-conditions-------------------------------------------------- conditions <- cbind( driver1 = seq(0.1, 0.9, length.out = 5), driver2 = rep(0.5, 5) ) row_draws <- rvinecop( 5, fit, u_cond = conditions, conditioning_set = c("driver1", "driver2") ) stopifnot(isTRUE(all.equal(row_draws[, 3:4], conditions))) ## ----conditional-original-scale----------------------------------------------- full_fit <- vine( as.data.frame(x), margins_controls = list(family_set = "kde1d"), copula_controls = list( family_set = "onepar", conditioning_set = c("driver1", "driver2") ) ) original_condition <- data.frame(driver1 = -0.5, driver2 = 1.25) original_draws <- rvine( 6, full_fit, x_cond = original_condition, conditioning_set = c("driver1", "driver2") ) stopifnot( isTRUE(all.equal(original_draws[, "driver1"], rep(-0.5, 6))), isTRUE(all.equal(original_draws[, "driver2"], rep(1.25, 6))) ) ## ----rosenblatt--------------------------------------------------------------- simulated <- rvinecop(100, fit) independent <- rosenblatt(simulated, fit) reconstructed <- inverse_rosenblatt(independent, fit) max(abs(simulated - reconstructed)) ## ----conditional-rosenblatt--------------------------------------------------- transformed <- rosenblatt( simulated, fit, conditioning_set = c("driver1", "driver2") ) inverse_rosenblatt( transformed, fit, conditioning_set = c("driver1", "driver2") )[1:3, ]