X-Git-Url: https://git.auder.net/?p=valse.git;a=blobdiff_plain;f=pkg%2FR%2FgenerateXY.R;h=fde4b0f3148c8f7980aee803e53fcce2710e674b;hp=fe86045b1f08d3d21cf3161474d6992909b9f1de;hb=8b28401096c8f1b95a4d83b34b47548ae1b2a425;hpb=ffdf94474d96cdd3e9d304ce809df7e62aa957ed diff --git a/pkg/R/generateXY.R b/pkg/R/generateXY.R index fe86045..fde4b0f 100644 --- a/pkg/R/generateXY.R +++ b/pkg/R/generateXY.R @@ -1,39 +1,39 @@ -#' generateXY +#' generateXY #' #' Generate a sample of (X,Y) of size n #' #' @param n sample size -#' @param π proportion for each cluster +#' @param prop proportion for each cluster #' @param meanX matrix of group means for covariates (of size p) #' @param covX covariance for covariates (of size p*p) -#' @param β regression matrix, of size p*m*k -#' @param covY covariance for the response vector (of size m*m*K) +#' @param beta regression matrix, of size p*m*k +#' @param covY covariance for the response vector (of size m*m) #' #' @return list with X and Y #' #' @export -generateXY <- function(n, π, meanX, β, covX, covY) +generateXY <- function(n, prop, meanX, beta, covX, covY) { p <- dim(covX)[1] m <- dim(covY)[1] - k <- dim(covY)[3] - + k <- dim(beta)[3] + X <- matrix(nrow = 0, ncol = p) Y <- matrix(nrow = 0, ncol = m) - + # random generation of the size of each population in X~Y (unordered) - sizePop <- rmultinom(1, n, π) - class <- c() #map i in 1:n --> index of class in 1:k - + sizePop <- stats::rmultinom(1, n, prop) + class <- c() #map i in 1:n --> index of class in 1:k + for (i in 1:k) { class <- c(class, rep(i, sizePop[i])) newBlockX <- MASS::mvrnorm(sizePop[i], meanX, covX) X <- rbind(X, newBlockX) - Y <- rbind(Y, t(apply(newBlockX, 1, function(row) MASS::mvrnorm(1, row %*% - β[, , i], covY[, , i])))) + Y <- rbind(Y, t(apply(newBlockX, 1, function(row) MASS::mvrnorm(1, row %*% + beta[, , i], covY[,])))) } - + shuffle <- sample(n) list(X = X[shuffle, ], Y = Y[shuffle, ], class = class[shuffle]) }