knitr::opts_chunk$set( fig.width = 8, fig.height = 5, collapse = TRUE, comment = "#>", fig.path = "man/figures/" ) library(faux) library(ggplot2)
It is useful to be able to simulate data with a specified structure. The faux
package provides some functions to make this process easier. See the vignettes for more details.
You can install the released version of faux from CRAN with:
install.packages("faux")
And the development version from GitHub with:
# install.packages("devtools") devtools::install_github("debruine/faux")
See the Simulate by Design vignette for more details.
between <- list(pet = c(cat = "Cat Owners", dog = "Dog Owners")) within <- list(time = c("morning", "noon", "evening", "night")) mu <- data.frame( cat = c(10, 12, 14, 16), dog = c(10, 15, 20, 25), row.names = within$time ) df <- sim_design(within, between, n = 100, mu = mu, sd = 5, r = .5)
p1 <- plot_design(df) p2 <- plot_design(df, "pet", "time") cowplot::plot_grid(p1, p2, nrow = 2, align = "v")
See the Simulate from Existing Data vignette for more details.
new_iris <- sim_df(iris, 50, between = "Species")
new_iris %>% dplyr::mutate_if(is.numeric, round, 1) %>% dplyr::mutate(data = "Simulated") %>% dplyr::bind_rows(dplyr::mutate(iris, data = "Original")) %>% ggplot(aes(Sepal.Width, Sepal.Length, color = Species)) + geom_point() + geom_smooth(method = "lm", formula = "y~x") + facet_wrap(~data)
You can build up a cross-classified or nested mixed effects design using piped functions. See the contrasts vignette for more details.
# simulate 20 classes with 20 to 30 students per class data <- add_random(class = 20) %>% add_random(student = sample(20:30, 20, replace = TRUE), .nested_in = "class") %>% add_between(.by = "class", school_type = c("private","public"), .prob = c(5, 15)) %>% add_between(.by = "student", gender = c("M", "F", "NB"), .prob = c(.49, .49, .02))
dplyr::count(data, school_type, gender) %>% knitr::kable()
I started this project as a collection of functions I was writing to help with my own work. It's one of many, many simulation packages in R; here are some others. I haven't used most of them, so I can't vouch for them, but if faux doesn't meet your needs, one of these might.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.