skip_if_not_installed("pscl")
# Generate some zero-inflated data
set.seed(123)
N <- 100 # Samples
x <- runif(N, 0, 10) # Predictor
off <- rgamma(N, 3, 2) # Offset variable
yhat <- -1 + x * 0.5 + log(off) # Prediction on log scale
y <- rpois(N, exp(yhat)) # Poisson process
y <- ifelse(rbinom(N, 1, 0.3), 0, y) # Zero-inflation process
d <<- data.frame(y = y, x, logOff = log(off)) # Storage dataframe
# Fit zeroinfl model using 2 methods of offset input
m1 <- pscl::zeroinfl(y ~ offset(logOff) + x | 1, data = d, dist = "poisson")
m2 <- pscl::zeroinfl(y ~ x | 1,
data = d,
offset = logOff,
dist = "poisson"
)
# Fit zeroinfl model without offset data
m3 <- pscl::zeroinfl(y ~ x | 1, data = d, dist = "poisson")
test_that("offset in get_data()", {
expect_equal(colnames(get_data(m1)), c("y", "logOff", "x"))
expect_equal(colnames(get_data(m2)), c("y", "x", "logOff"))
expect_equal(colnames(get_data(m3)), c("y", "x"))
})
test_that("offset in get_data()", {
expect_equal(find_offset(m1), "logOff")
expect_equal(find_offset(m2), "logOff")
expect_null(find_offset(m3))
})
# test_that("offset in null_model()", {
# nm1 <- null_model(m1)
# nm2 <- null_model(m2)
# expect_equal(coef(nm1), coef(nm2), tolerance = 1e-4)
# })
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.