diff options
Diffstat (limited to 'R/simulate_data.R')
| -rw-r--r-- | R/simulate_data.R | 16 |
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 ) |
