# Simulating Multiple Vectors

``````library(tidyverse)
library(faux)``````

I’m working on a package for simulations called faux. (Update: faux is now on CRAN!)

The first function, `rnorm_multi`, makes multiple normally distributed vectors with specified relationships and takes the following arguments:

• `n` = the number of samples required (required)
• `vars` = the number of variables to return (default = `3`)
• `cors` = the correlations among the variables (can be a single number, vars*vars matrix, vars*vars vector, or a vars*(vars-1)/2 vector; default = `0`)
• `mu` = a vector giving the means of the variables (numeric vector of length 1 or vars; default = `0`)
• `sd` = the standard deviations of the variables (numeric vector of length 1 or vars; default = `1`)
• `varnames` = optional names for the variables (string vector of length vars; default = `NULL`)
• `empirical` = logical. If true, mu, sd and cors specify the empirical not population mean, sd and covariance (default = `FALSE`)

## Example 1

The following example creates a 100-row dataframe of 3 columns names `A`, `B`, and `C`, with means = 0, SDs = 1, and where rAB = 0.2, rAC = -0.5, and rBC = 0.5.

``ex1 <- rnorm_multi(100, 3, c(0.2, -0.5, 0.5), varnames=c("A", "B", "C"))``

### Correlation Matrix of Sample Data

A B C
A 1.0000000 -0.087499 -0.1202283
B -0.0874990 1.000000 0.0157210
C -0.1202283 0.015721 1.0000000

## Example 2

The following example calculates the correlation matrix, means, and SDs from the `iris` dataset and uses them to simulate a dataset of 100 rows with the same parameters.

``````dat <- select_if(iris, is.numeric)

iris_sim <- rnorm_multi(
n = 100,
vars = ncol(dat),
r = cor(dat),
mu = summarise_all(dat, mean) %>% t(),
sd = summarise_all(dat, sd) %>% t(),
varnames = names(dat)
)``````

### Correlation Matrix of Original Data

Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000

### Correlation Matrix of Sample Data

Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1591051 0.8491459 0.7544625
Sepal.Width -0.1591051 1.0000000 -0.4527400 -0.3513351
Petal.Length 0.8491459 -0.4527400 1.0000000 0.9485627
Petal.Width 0.7544625 -0.3513351 0.9485627 1.0000000 ##### Lisa DeBruine
###### Professor of Psychology

Lisa DeBruine is a professor of psychology at the University of Glasgow. Her substantive research is on the social perception of faces and kinship. Her meta-science interests include team science (especially the Psychological Science Accelerator), open documentation, data simulation, web-based tools for data collection and stimulus generation, and teaching computational reproducibility.