-#' generateXY
+#' generateXY
#'
#' Generate a sample of (X,Y) of size n
#'
#' @return list with X and Y
#'
#' @export
-generateXY = function(n, π, meanX, β, covX, covY)
+generateXY <- function(n, π, meanX, β, covX, covY)
{
- p <- dim(covX)[1]
- m <- dim(covY)[1]
- k <- dim(covY)[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, pi)
- 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, apply( newBlockX, 1, function(row)
- mvrnorm(1, row %*% beta[,,i], covY[,,i]) ) )
- }
-
- shuffle = sample(n)
- list("X"=X[shuffle,], "Y"=Y[shuffle,], "class"=class[shuffle])
+ p <- dim(covX)[1]
+ m <- dim(covY)[1]
+ k <- dim(covY)[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
+
+ 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]))))
+ }
+
+ shuffle <- sample(n)
+ list(X = X[shuffle, ], Y = Y[shuffle, ], class = class[shuffle])
}