## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----eval=FALSE--------------------------------------------------------------- # install.packages("quantdr") ## ----setup-------------------------------------------------------------------- library(quantdr) ## ----eval=FALSE--------------------------------------------------------------- # help(package = "quantdr") ## ----eval=FALSE--------------------------------------------------------------- # help(cqs) # ?cqs ## ----------------------------------------------------------------------------- set.seed(1234) n <- 100 p <- 10 tau <- 0.5 x <- matrix(rnorm(n * p), n, p) error <- rnorm(n) y <- 3 * x[, 1] + x[, 2] + error ## ----------------------------------------------------------------------------- out1 <- cqs(x, y, tau = tau, dtau = 1) out1 ## ----------------------------------------------------------------------------- out2 <- cqs(x, y, tau = tau) out2 ## ----------------------------------------------------------------------------- out2$qvectors[, 1:out2$dtau] ## ----------------------------------------------------------------------------- library(pracma) beta_true <- c(3, 1, rep(0, p - 2)) beta_hat1 <- out1$qvectors beta_hat2 <- out2$qvectors[, 1:out2$dtau] subspace(beta_true, beta_hat1) / (pi / 2) subspace(beta_true, beta_hat2) / (pi / 2) ## ----------------------------------------------------------------------------- newx <- x %*% beta_hat1 ## ----------------------------------------------------------------------------- qhat1 <- llqr(newx, y, tau) qhat1 ## ----------------------------------------------------------------------------- qhat2 <- llqr(newx, y, tau, method = "CV") qhat2 ## ----------------------------------------------------------------------------- qhat3 <- llqr(newx, y, tau, h = 1) qhat3 ## ----fig1, fig.height = 4.5, fig.width = 4.5, fig.align = "center"------------ true_dir <- x %*% beta_true plot(true_dir, y, xlab = "sufficient direction", ylab = "y", pch = 16) points(true_dir, qhat1$ll_est, pch = 16, col = 'red') ## ----------------------------------------------------------------------------- taus <- c(0.1, 0.25, 0.5, 0.75, 0.9) out3 <- matrix(0, p, length(taus)) for (i in 1:length(taus)) { out3[, i] <- cqs(x, y, tau = taus[i], dtau = 1)$qvectors } out3 ## ----fig2, fig.height = 5.5, fig.width = 7, fig.align = "center"-------------- newx <- x %*% out3 oldpar <- par(no.readonly = TRUE) par(mfrow=c(2,3)) qhat_tau <- as.null() for (i in 1:length(taus)) { plot(true_dir, y, xlab = "sufficient direction", ylab = "y", main = taus[i], pch = 16) qhat_tau <- llqr(newx[, i], y, tau = taus[i])$ll_est points(true_dir, qhat_tau, pch = 16, col = "red") } par(oldpar) ## ----message = FALSE---------------------------------------------------------- library(PerformanceAnalytics) data(edhec, package = "PerformanceAnalytics") head(edhec) ## ----------------------------------------------------------------------------- y <- as.vector(edhec[, 2]) n <- length(y) p <- 5 tau <- 0.05 ValAR(y, p = p, tau = tau) ## ----------------------------------------------------------------------------- VaR(y, 0.95, method = 'historical') ## ----eval=FALSE--------------------------------------------------------------- # size <- 100 # # VaRest <- as.null(size) # for (i in 1:size){ # VaRest[i] <- ValAR(y[1:(n - size + i - 1)], p, tau) # } ## ----fig3, fig.height = 4.8, fig.width = 6.5, fig.align = "center", eval=FALSE---- # plot.ts(y[(n - size + 1):n], ylim = range(y[(n - size + 1):n], VaRest), ylab = 'returns') # lines(VaRest, col = 'red') ## ----fig.height = 4.8, fig.width = 6.5, include=TRUE, fig.align = "center", echo = FALSE---- img <- png::readPNG("returns1.png") grid::grid.raster(img) ## ----eval=FALSE--------------------------------------------------------------- # sum(y[(n - size + 1):n] < VaRest) / size # #> [1] 0.05 ## ----fig4, fig.height = 4.8, fig.width = 6.5, fig.align = "center", eval=FALSE---- # taus <- c(0.01, 0.025, 0.05) # VaRest <- matrix(0, size, length(taus)) # for (i in 1:size) { # for (j in 1:length(taus)) { # VaRest[i, j] <- ValAR(y[1:(n - size + i - 1)], p, taus[j]) # } # } # # # plots # plot.ts(y[(n - size + 1):n], ylim = range(y[(n - size + 1):n], VaRest), ylab = 'returns') # lines(VaRest[, 1], col = 'red') # lines(VaRest[, 2], col = 'blue') # lines(VaRest[, 3], col = 'green') # legend('top', legend = c("1%", "2.5%", "5%"), col = c("red", "blue", "green"), # lty=1, cex=1, horiz = T, bty = "n") ## ----fig.height = 4.8, fig.width = 6.5, include=TRUE, fig.align = "center", echo = FALSE---- img <- png::readPNG("returns2.png") grid::grid.raster(img) ## ----eval=FALSE--------------------------------------------------------------- # # proportion of exceptions # sum(y[(n - size + 1):n] < VaRest[, 1]) / size # #> [1] 0.03 # sum(y[(n - size + 1):n] < VaRest[, 2]) / size # #> [1] 0.03 # sum(y[(n - size + 1):n] < VaRest[, 3]) / size # #> [1] 0.05