summaryrefslogtreecommitdiff
path: root/R/simulate_data.R
diff options
context:
space:
mode:
authorChris Sobczak <chris@sobczak.family>2026-07-10 16:31:33 -0700
committerChris Sobczak <chris@sobczak.family>2026-07-10 16:31:33 -0700
commit0478b9c425d668d6ef0aa0e860f8e4eac8ee78a0 (patch)
treeac94fee58104a11e2158cfaaf61238a9cd0f2c78 /R/simulate_data.R
parent60cfc1ca0d2445b019f79ed92ed760377702e349 (diff)
get going and create test for simulate_data
Diffstat (limited to 'R/simulate_data.R')
-rw-r--r--R/simulate_data.R16
1 files changed, 6 insertions, 10 deletions
diff --git a/R/simulate_data.R b/R/simulate_data.R
index 2338805..297b76f 100644
--- a/R/simulate_data.R
+++ b/R/simulate_data.R
@@ -15,11 +15,12 @@
#' @return A list with X, S and a vector identifying the contaminated rows.
#'
#' @examples
-#' X_obj <- generate_data(n = 10, p = 10)
+#' X_obj <- simulate_data(n = 10, p = 10)
#' X <- X_obj$X
#' S_true <- X_obj$S
#'
#' @importFrom MASS mvrnorm
+#' @importFrom stats rchisq runif
#'
#' @export
simulate_data <- function(
@@ -28,8 +29,7 @@ simulate_data <- function(
rho = 0.8,
contamination = 0,
block_fraction = 0.5,
- t_df = Inf,
- exact_contamination = FALSE
+ t_df = Inf
){
if(any(
rho < 0,
@@ -56,7 +56,7 @@ simulate_data <- function(
# Regular clean observations
Z <- MASS::mvrnorm(n = n, mu = numeric(p), Sigma = Sigma)
if(is.finite(t_df)){
- w <- rchisq(n, df = t_df)
+ w <- stats::rchisq(n, df = t_df)
X <- Z / sqrt(w / t_df)
}else{
X <- Z
@@ -65,15 +65,11 @@ simulate_data <- function(
# Contamination - by row
outlier_rows <- integer(0)
if(contamination > 0){
- if(exact_contamination){
- outlier_rows <- sample.int(n, ceiling(contamination * n))
- }else{
- outlier_rows <- which(runif(n) < contamination)
- }
+ outlier_rows <- which(stats::runif(n) < contamination)
if(length(outlier_rows) > 0){
X[outlier_rows, ] <- matrix(
- rchisq(length(outlier_rows) * p, df = 1),
+ stats::rchisq(length(outlier_rows) * p, df = 1),
nrow = length(outlier_rows),
ncol = p
)