tests/testthat/tests.R

test_that("simulated data makes sense", {
    n <- 1000
    params <- list(mu = 0, sigma = 1)
    data <- simulate_data(stanmodels$norm, params, n)
    expect_that(nrow(data), equals(n))
    expect_true("y" %in% names(data))
    expect_true(abs(mean(data$y)) <= 0.1)
    expect_true(abs(var(data$y) - 1) <= 0.1)
})

test_that("regression model recovers coefficients", {
    parameters <- list(
        mu = c(1, 2),
        Sigma = matrix(c(1, 0.5, 0.5, 1), nrow = 2),
        beta = c(1, 1),
        sd_epsilon = 1
    )
    data <- list(K = 2)
    sims <- simulate_data(
        model = stanmodels$regression,
        parameters = parameters,
        n = 1000,
        data = data
    )
    for (k in c("y", "X.1", "X.2")) {
        expect_true(k %in% names(sims))
    }
    ## expect_that(names(sims), equals("one"))
    ## fit <- lm(y ~ 0 + X.1 + X.2, data = sims)
    ## beta <- coef(fit)
    ## expect_true(abs(beta - data$beta) <= 0.1)
})

test_that("normal distribution with known variance works", {
    d <- 0.5
    n <- 25
    sig.level = 0.05
    ## expected <- pwr.norm.test(d = d, n = n, sig.level = sig.level)

    dgp <- function() {
        simulate_data(stanmodels$norm, list(mu = d, sigma = 1), n = n)
    }

    reject <- function(df) {
        zscore <- mean(df$y) * sqrt(n)
        low <- qnorm(sig.level / 2, mean = 0, sd = 1)
        high <- qnorm(1 - (sig.level / 2), mean = 0, sd = 1)
        return((zscore < low) | (high < zscore))
    }

    x <- calculate_power(dgp, reject, 5)
    expect_true(x >= 0)
    expect_true(x <= 1)
})
amarder/powerstan documentation built on May 12, 2019, 2:34 a.m.