Nothing
library("testthat")
context("test-normalization.R")
test_that("Simple normalization", {
counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
tolerance <- 1E-4
gold <- glm(counts ~ outcome + treatment, family = poisson())
dataPtr <- createCyclopsData(counts ~ 1,
sparseFormula = ~outcome,
indicatorFormula = ~treatment,
modelType = "pr")
expect_null(dataPtr$scales)
fit1 <- fitCyclopsModel(dataPtr, prior = createPrior("none"))
# Normalize
Cyclops:::.normalizeCovariates(dataPtr, type = "stdev")
expect_error(confint(fit1, parm = "outcome2")) # Data are now invalid for fit1
sum2 <- summary(dataPtr)
expect_equal(sum(sum2$nzMean != 1.0), 2) # Only sparse covariates are normalized
fit2 <- fitCyclopsModel(dataPtr, prior = createPrior("none"))
# Normalizing again should not change values
Cyclops:::.normalizeCovariates(dataPtr, type = "stdev")
sum3 <- summary(dataPtr)
expect_equal(sum2$scale, sum3$scale, tolerance = tolerance * tolerance)
fit3 <- fitCyclopsModel(dataPtr, prior = createPrior("none"))
# Check equality of first results at end
expect_equal(coef(gold), coef(fit1), tolerance = tolerance)
# And second after rescaling
expect_equal(coef(gold), coef(fit2, rescale = TRUE), tolerance = tolerance)
# And third after rescaling
expect_equal(confint(gold, parm = "outcome2"),
confint(fit3, parm = "outcome2", rescale = TRUE)[,2:3], tolerance = sqrt(tolerance))
# Repeat process with normalization during construction
dataPtr2 <- createCyclopsData(counts ~ 1,
sparseFormula = ~outcome,
indicatorFormula = ~treatment,
modelType = "pr", normalize = "stdev")
fit4 <- fitCyclopsModel(dataPtr2, prior = createPrior("none"))
expect_equal(coef(fit2), coef(fit4))
# Normalize via max
covariate <- c(1:length(counts))
dataPtr3 <- createCyclopsData(counts ~ 1,
sparseFormula = ~covariate,
indicatorFormula = ~treatment,
modelType = "pr", normalize = "max")
sum4 <- summary(dataPtr3)
expect_equal(sum4$scale[2], 1 / max(covariate))
# Normalize via median
dataPtr4 <- createCyclopsData(counts ~ 1,
sparseFormula = ~covariate,
indicatorFormula = ~treatment,
modelType = "pr", normalize = "median")
sum5 <- summary(dataPtr4)
expect_equal(sum5$scale[2], 1 / median(covariate))
})
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.