# bigen: Generate Correlated Binary Data In fungible: Psychometric Functions from the Waller Lab

## Description

Function for generating binary data with population thresholds.

## Usage

 `1` ```bigen(data, n, thresholds = NULL, Smooth = FALSE, seed = NULL) ```

## Arguments

 `data` Either a matrix of binary (0/1) indicators or a correlation matrix. `n` The desired sample size of the simulated data. `thresholds` If data is a correlation matrix, thresholds must be a vector of threshold cut points. `Smooth` (logical) Smooth = TRUE will smooth the tetrachoric correltion matrix. `seed` Default = FALSE. Optional seed for random number generator.

## Value

 `data` Simulated binary data `r` Input or calculated (tetrachoric) correlation matrix

Niels G Waller

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60``` ```## Example: generating binary data to match ## an existing binary data matrix ## ## Generate correlated scores using factor ## analysis model ## X <- Z *L' + U*D ## Z is a vector of factor scores ## L is a factor loading matrix ## U is a matrix of unique factor scores ## D is a scaling matrix for U N <- 5000 # Generate data from a single factor model # factor patter matrix L <- matrix( rep(.707, 5), nrow = 5, ncol = 1) # common factor scores Z <- as.matrix(rnorm(N)) # unique factor scores U <- matrix(rnorm(N *5), nrow = N, ncol = 5) D <- diag(as.vector(sqrt(1 - L^2))) # observed scores X <- Z %*% t(L) + U %*% D cat("\nCorrelation of continuous scores\n") print(round(cor(X),3)) # desired difficulties (i.e., means) of # the dichotomized scores difficulties <- c(.2, .3, .4, .5, .6) # cut the observed scores at these thresholds # to approximate the above difficulties thresholds <- qnorm(difficulties) Binary <- matrix(0, N, ncol(X)) for(i in 1:ncol(X)){ Binary[X[,i] <= thresholds[i],i] <- 1 } cat("\nCorrelation of Binary scores\n") print(round(cor(Binary), 3)) ## Now use 'bigen' to generate binary data matrix with ## same correlations as in Binary z <- bigen(data = Binary, n = N) cat("\n\nnames in returned object\n") print(names(z)) cat("\nCorrelation of Simulated binary scores\n") print(round(cor(z\$data), 3)) cat("Observed thresholds of simulated data:\n") cat(apply(z\$data, 2, mean)) ```

fungible documentation built on Sept. 29, 2021, 1:06 a.m.