Nothing
context("Population")
test_that("declare_model N=10", {
my_population <- declare_model(N = 10)
expect_equal(nrow(my_population()), 10)
})
test_that("declare_model multilevel N=2", {
pop <- declare_model(
regions = add_level(N = 2, gdp = rnorm(N)),
cities = add_level(N = sample(1:2), subways = rnorm(N, mean = gdp))
)
expect_equal(pop() |> colnames(), c("regions", "gdp", "cities", "subways"))
})
test_that("declare_population multilevel N=5", {
pop <- declare_model(
regions = add_level(N = 5),
cities = add_level(N = sample(1:5), subways = rnorm(N, mean = 5))
)
expect_equal(pop() |> with(unique(regions)), as.character(1:5))
})
test_that("declare_model multilevel 3 levels", {
pop <- declare_model(
districts = add_level(N = 25, urban = sample(0:1, N, replace = TRUE)),
villages = add_level(N = 10, altitude = rnorm(N)),
individuals = add_level(
N = 10, income = rnorm(N),
age = sample(18:95, N, replace = TRUE)
)
)
expect_length(pop() |> with(unique(individuals)), 25 * 10 * 10)
})
test_that("custom declare", {
# custom function
my_population_function <- function(N) {
data.frame(u = rnorm(N))
}
my_population_custom <- declare_model(
handler = my_population_function, N = 100
)
rm(list = ls()[!(ls() %in% c("my_population_custom"))])
pop_custom <- my_population_custom()
expect_equal(nrow(pop_custom), 100)
})
test_that("default function", {
my_population_default <- declare_model(N = 100, q = rnorm(100))
## works
pop_default <- my_population_default()
expect_equal(nrow(pop_default), 100)
})
test_that("inside function", {
## do quick design
design_func <- function(numb) {
pop <- declare_model(N = numb, q = rnorm(5))
rm(numb)
return(pop)
}
rm(list = ls()[!(ls() %in% "design_func")])
my_design <- design_func(numb = 5)
expect_equal(nrow(my_design()), 5)
})
test_that("Two level", {
d <- declare_model(
districts = add_level(N = 5, gdp = rnorm(N)),
villages = add_level(N = 12, subways = rnorm(N, mean = gdp))
)()
expect_length(unique(d$villages), 5 * 12)
})
test_that("use custom data with declare_model", {
region_data <- data.frame(regions = as.character(26:30), capital = c(1, 0, 0, 0, 0), stringsAsFactors = FALSE)
## create single-level data taking user data
d1 <- declare_model(data = region_data)()
expect_identical(region_data, d1)
## create single-level data taking user data and adding variables
d2 <- declare_model(data = region_data, gdp = 1:N)()
expect_equal(d2$gdp, 1:5)
d2$gdp <- NULL
expect_true(!anyDuplicated(d2$ID))
d2$ID <- NULL
expect_identical(region_data, d2)
})
test_that("test data generation functions - single level add level", {
# Simple 1-level cases
one_lev1 <- declare_model(
N = 10,
income = 1:N,
age = seq(10, 30, length.out = N),
ID_label = "level_A"
)
one_lev2 <- declare_model(
level_A = add_level(
N = 10,
income = 1:N,
age = seq(10, 30, length.out = N)
)
)
expect_identical(one_lev1(), one_lev2())
})
test_that("test multi level with transformations", {
# With transformations within levels
multi_lev2 <- declare_model(
region = add_level(N = 2),
city = add_level(
N = 5,
city_educ_mean = rnorm(n = N, mean = 100, sd = 10),
city_educ_sd = rgamma(n = N, shape = 2, rate = 2),
city_educ_zscore = scale(city_educ_mean)
),
indiv = add_level(
N = 10,
income = rnorm(N),
age = rpois(N, 30),
income_times_age = income * age
)
)
out <- multi_lev2()
expect_identical(out$income_times_age, out$income * out$age)
})
test_that("Population declaration variations", {
my_population <- declare_model(N = 10, noise = 1:N)
my_potential_outcomes <- declare_potential_outcomes(Y_Z_0 = noise, Y_Z_1 = noise + 2)
# Way 1
design <- my_population + my_potential_outcomes
df1 <- draw_data(design)
# Way 2
fixed_df <- my_population()
design <- declare_model(fixed_df) + my_potential_outcomes
df2 <- draw_data(design)
# Way 3
design <- declare_model(my_population()) + my_potential_outcomes
df3 <- draw_data(design)
expect_identical(df1, df2)
expect_identical(df1, df3)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.