# %% library(profoc) library(ggplot2) library(tidyr) library(dplyr) library(readr) # Creating faceted plots for different knot values and mu values # Create a function to generate the data for a given number of knots and mu value generate_basis_data <- function(num_knots, mu_value, sig_value, nonc_value, tailw_value, deg_value) { grid <- seq(from = 0.01, to = 0.99, length.out = 50) # Use provided degree B <- profoc:::make_basis_matrix(grid, profoc::make_knots( n = num_knots, mu = mu_value, sig = sig_value, nonc = nonc_value, tailw = tailw_value, deg = deg_value ), deg = deg_value ) B_mat <- round(as.matrix(B),2) df <- as.data.frame(B_mat) df$x <- round(grid,2) df_long <- pivot_longer(df, cols = -x, names_to = "b", values_to = "y" ) df_long$knots <- num_knots df_long$mu <- mu_value df_long$sig <- sig_value df_long$nonc <- nonc_value df_long$tailw <- tailw_value df_long$deg <- deg_value return(df_long) } # Generate data for each combination of knot, mu, sig, nonc, tailw, and deg knot_values <- c(10) mu_values <- seq(0.1, 0.9, by = 0.2) sig_values <- 2^(-2:2) nonc_values <- c(-4,-2,0,2,4) tailw_values <- 2^(-2:2) # Create an empty list to store all combinations all_data <- list() counter <- 1 # Nested loops to cover all parameter combinations for (k in knot_values) { print(paste("Processing knots:", k)) for (m in mu_values) { print(paste("Processing mu:", m)) for (s in sig_values) { for (nc in nonc_values) { for (tw in tailw_values) { all_data[[counter]] <- generate_basis_data(5, m, s, nc, tw, 2) counter <- counter + 1 } } } } } # Combine all data frames all_data <- bind_rows(all_data) write_csv(all_data, "basis_functions.csv")