## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5 ) ## ----eval=FALSE--------------------------------------------------------------- # # Install from CRAN (when available) # install.packages("QuantileOnQuantile") # # # Install from GitHub # # install.packages("devtools") # devtools::install_github("merwanroudane/qq") ## ----basic_example------------------------------------------------------------ library(QuantileOnQuantile) # Generate example data set.seed(42) n <- 300 x <- rnorm(n) y <- 0.5 * x + 0.3 * x * (x < 0) + rnorm(n, sd = 0.5) # Asymmetric relationship # Run QQ regression result <- qq_regression(y, x, verbose = FALSE) # Print summary print(result) ## ----statistics--------------------------------------------------------------- # Get detailed summary summary(result) # Get statistics as data frame stats <- qq_statistics(result) print(stats) ## ----3d_plot, eval=FALSE------------------------------------------------------ # # Coefficient surface with MATLAB-style Jet colorscale # plot_qq_3d(result, type = "coefficient", colorscale = "Jet") # # # R-squared surface with Viridis colorscale # plot_qq_3d(result, type = "rsquared", colorscale = "Viridis") # # # P-value surface # plot_qq_3d(result, type = "pvalue", colorscale = "Plasma") ## ----colorscales-------------------------------------------------------------- qq_colorscales() ## ----heatmap, eval=FALSE------------------------------------------------------ # # Coefficient heatmap # plot_qq_heatmap(result, type = "coefficient", colorscale = "Viridis") # # # R-squared heatmap # plot_qq_heatmap(result, type = "rsquared", colorscale = "Plasma") # # # P-value heatmap # plot_qq_heatmap(result, type = "pvalue", colorscale = "Jet") ## ----contour, eval=FALSE------------------------------------------------------ # plot_qq_contour(result, colorscale = "Jet", show_labels = TRUE) ## ----correlation, eval=FALSE-------------------------------------------------- # plot_qq_correlation(y, x, quantiles = seq(0.1, 0.9, by = 0.1)) ## ----detailed_example--------------------------------------------------------- set.seed(2015) n <- 500 # Generate "oil shocks" oil_shock <- rnorm(n) # Generate "stock returns" with asymmetric response stock_return <- numeric(n) for (i in 1:n) { # Base return base_return <- 0.01 # Asymmetric effect if (oil_shock[i] < quantile(oil_shock, 0.3)) { # Large negative oil shocks have positive effect effect <- -0.02 * oil_shock[i] } else if (oil_shock[i] > quantile(oil_shock, 0.7)) { # Large positive oil shocks have weak effect effect <- -0.005 * oil_shock[i] } else { # Moderate shocks have little effect effect <- -0.001 * oil_shock[i] } stock_return[i] <- base_return + effect + rnorm(1, sd = 0.04) } # Run QQ regression with finer grid result_oil <- qq_regression( y = stock_return, x = oil_shock, y_quantiles = seq(0.1, 0.9, by = 0.1), x_quantiles = seq(0.1, 0.9, by = 0.1), verbose = FALSE ) # Print summary print(result_oil) ## ----extract_results---------------------------------------------------------- # Access raw results head(result_oil$results) # Convert to matrix format coef_matrix <- qq_to_matrix(result_oil, type = "coefficient") print(round(coef_matrix, 4)) ## ----export, eval=FALSE------------------------------------------------------- # # Export to CSV # qq_export(result_oil, file.path(tempdir(), "qq_results.csv")) ## ----custom_grid-------------------------------------------------------------- # Coarse grid (faster computation) result_coarse <- qq_regression( y = stock_return, x = oil_shock, y_quantiles = seq(0.2, 0.8, by = 0.2), x_quantiles = seq(0.2, 0.8, by = 0.2), verbose = FALSE ) # Fine grid (more detail, slower) result_fine <- qq_regression( y = stock_return, x = oil_shock, y_quantiles = seq(0.05, 0.95, by = 0.05), x_quantiles = seq(0.05, 0.95, by = 0.05), verbose = FALSE ) cat("Coarse grid combinations:", nrow(result_coarse$results), "\n") cat("Fine grid combinations:", nrow(result_fine$results), "\n") ## ----session_info------------------------------------------------------------- sessionInfo()