knitr::opts_chunk$set( collapse = TRUE, comment = "#>", message = FALSE )
library(cardinalR)
These are helper functions included in the package.
The gen_bkgnoise() function allows users to generate multivariate Gaussian noise to serve as background data in high-dimensional spaces.
# Example: Generate 4D background noise bkg_data <- gen_bkgnoise(n = 500, p = 4, m = c(0, 0, 0, 0), s = c(2, 2, 2, 2)) head(bkg_data)
The generated data has independent dimensions with specified means (m) and standard deviations (s).
randomize_rows() ensures the rows of the input data is randomized.
randomized_data <- randomize_rows(bkg_data) head(randomized_data)
relocate_clusters() allows users to translate clusters in any dimension(s). This is achieved by centering each cluster (subtracting its mean) and then adding a translation vector from a provided matrix (vert_mat).
df <- tibble::tibble( x1 = rnorm(12), x2 = rnorm(12), x3 = rnorm(12), x4 = rnorm(12), cluster = rep(1:3, each = 4) ) vert_mat <- matrix(c( 5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0 ), nrow = 3, byrow = TRUE) relocated_df <- relocate_clusters(df, vert_mat) head(relocated_df)
The gen_rotation() function creates a rotation matrix in high-dimensional space for given planes and angles.
rotations_4d <- list( list(plane = c(1, 2), angle = 60), list(plane = c(3, 4), angle = 90) ) rot_mat <- gen_rotation(p = 4, planes_angles = rotations_4d) rot_mat
When combining clusters or transforming data geometrically, magnitudes can differ drastically.
The normalize_data() function rescales the entire dataset to fit within ([-1, 1]) based on its maximum absolute value.
norm_data <- normalize_data(bkg_data) head(norm_data)
To place clusters in different positions, gen_clustloc() generates points forming a simplex-like arrangement ensuring each cluster center is equidistant from others as much as possible.
centers <- gen_clustloc(p = 4, k = 5) head(centers)
Two helper functions, gen_nproduct() and gen_nsum(), generate numeric vectors of positive integers that approximately satisfy a user-specified target product or sum, respectively.
The function gen_nsum(n, k) divides a total sum n into k positive integers. It first assigns an equal base value to each element and then randomly distributes any remainder, ensuring the elements sum exactly to n.
gen_nsum(n = 100, k = 3)
The function gen_nproduct(n, p) aims to produce p positive integers whose product is approximately n. It starts with all elements equal to the rounded $p^{th}$ root of n and iteratively adjusts elements up or down in a randomized manner until the product is within a small tolerance of n. This accommodates the fact that exact integer solutions for a given product are often impossible.
gen_nproduct(n = 500, p = 4)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.