72 lines
1.8 KiB
R
72 lines
1.8 KiB
R
# %%
|
|
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")
|