# ---------------------------------------------------
# TEST 1 - intercept only - one group
# ---------------------------------------------------
test_that("intercept-only Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ 1",
group = NULL,
data = example01,
family = "poisson"
)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 3)
expect_equal(length(avar), 2)
# LOG-LIKELIHOOD
comp <- 3.38334
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- 6.76966
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5)
# 2. Regression coefficient
comp <- 2.55546
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5)
# 3. Overdispersion parameter
comp <- 0
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5)
# STANDARD ERRORS
# 1. Group weight
comp <- 0.00115
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5)
# 2. Regression coefficient
comp <- 0.00009
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5)
})
test_that("intercept-only negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ 1",
group = NULL,
data = example01,
family = "nbinom"
)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 3)
expect_equal(length(avar), 3)
# LOG-LIKELIHOOD
comp <- 3.12601
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- 6.76961
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
comp <- 2.55545
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 3. Overdispersion parameter
comp <- 8.62666
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# STANDARD ERRORS
# 1. Group weight
comp <- 0.00115
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
comp <- 0.00022
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 3. Overdispersion parameter
comp <- 0.51543
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
})
# ---------------------------------------------------
# TEST 2 - intercept-only - two groups
# ---------------------------------------------------
test_that("two-group intercept-only Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ 1",
group = "treat",
data = example01,
family = "poisson"
)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 6)
expect_equal(length(avar), 4)
# LOG-LIKELIHOOD
comp <- 3.31971
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
comp <- c(2.44539, 2.65140)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
comp <- c(0.00020, 0.00016)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
})
test_that("two-group intercept-only negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ 1",
group = "treat",
data = example01,
family = "nbinom"
)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 6)
expect_equal(length(avar), 6)
# LOG-LIKELIHOOD
comp <- 3.09931
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
comp <- c(2.44539, 2.65140)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 3. Overdispersion parameter
comp <- c(7.90338, 11.58069)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00233, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
comp <- c(0.00050, 0.00035)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 3. Overdispersion parameter
comp <- c(0.88228, 2.20150)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
})
# ---------------------------------------------------
# TEST 3 - one manifest covariate - two groups
# ---------------------------------------------------
test_that("two-group one manifest covariate Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ z12",
group = "treat",
data = example01,
family = "poisson",
se = TRUE
)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 12)
expect_equal(length(avar), 10)
# LOG-LIKELIHOOD
comp <- 4.73872
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
comp <- c(2.65523, -0.16981, 2.83597, -0.14146)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.36293, 1.40557)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.59051, 1.48010)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
comp <- c(0.00039, 0.00015, 0.00034, 0.00012)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00372, 0.00334)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01182, 0.00989)
par <- avar[pt$par_free[pt$dest == "Sigma_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
})
test_that("two-group one manifest covariate negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ z12",
group = "treat",
data = example01,
family = "nbinom",
se = TRUE
)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 12)
expect_equal(length(avar), 12)
# LOG-LIKELIHOOD
comp <- 4.62806
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
comp <- c(2.65465, -0.16934, 2.83624, -0.14166)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 3. Overdispersion parameter
comp <- c(12.08287, 17.89945)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.36293, 1.40557)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.59050, 1.48011)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
comp <- c(0.00082, 0.00028, 0.00063, 0.00021)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 3. Overdispersion parameter
comp <- c(3.12545, 8.45198)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00372, 0.00334)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01182, 0.00989)
par <- avar[pt$par_free[pt$dest == "Sigma_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
})
# ---------------------------------------------------
# TEST 4 - three manifest covariates - two groups
# ---------------------------------------------------
test_that("two-group three manifest covariates Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ z12 + z11 + z21",
group = "treat",
data = example01,
family = "poisson",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 30)
expect_equal(length(avar), 28)
# LOG-LIKELIHOOD
comp <- 7.27241
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
comp <- c(
2.34110, -0.08721, -0.07893, 0.08227,
2.62149, -0.09299, -0.04680, 0.05441
)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(
1.36293, 1.59813, 3.90927,
1.40558, 1.56209, 3.99473
)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(
1.59049, 1.68417, 0.95031,
1.48009, 1.36278, 0.83293
)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 4.3 Covariances
comp <- c(
1.02240, -0.63361, -0.50519,
0.86383, -0.56871, -0.46656
)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
comp <- c(
0.00763, 0.00027, 0.00021, 0.00034,
0.00711, 0.00021, 0.00020, 0.00030
)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(
0.00372, 0.00394, 0.00222,
0.00334, 0.00307, 0.00188
)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(
0.01182, 0.01325, 0.00422,
0.00989, 0.00838, 0.00313
)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 4.3 Covariances
comp <- c(
0.00870, 0.00447, 0.00434,
0.00624, 0.00351, 0.00305
)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_cov")
})
test_that("two-group three manifest covariates negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ z12 + z11 + z21",
group = "treat",
data = example01,
family = "nbinom",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 30)
expect_equal(length(avar), 30)
# LOG-LIKELIHOOD
comp <- 7.18300
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
comp <- c(
2.33834, -0.08674, -0.07975, 0.08312,
2.63161, -0.09387, -0.04665, 0.05214
)
par <- pt$par[pt$dest == "beta"] |> round(5)
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 3. Overdispersion parameter
comp <- c(14.17296, 19.56794)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(
1.36293, 1.59813, 3.90927,
1.40557, 1.56208, 3.99473
)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(
1.59051, 1.68417, 0.95030,
1.48011, 1.36278, 0.83293
)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 4.3 Covariances
comp <- c(
1.02241, -0.63361, -0.50518,
0.86384, -0.56872, -0.46656
)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
comp <- c(
0.01303, 0.00047, 0.00037, 0.00058,
0.01184, 0.00036, 0.00034, 0.00050
)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 3. Overdispersion parameter
comp <- c(5.07994, 11.22616)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(
0.00372, 0.00393, 0.00222,
0.00334, 0.00308, 0.00188
)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(
0.01182, 0.01325, 0.00422,
0.00989, 0.00838, 0.00313
)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 4.3 Covariances
comp <- c(
0.00870, 0.00447, 0.00434,
0.00624, 0.00351, 0.00305
)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_cov")
})
# ---------------------------------------------------
# TEST 5 - one latent covariate - two groups
# ---------------------------------------------------
test_that("two-group one latent covariate Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1",
lv = list(eta1 = c("z21", "z22")),
group = "treat",
data = example01,
family = "poisson",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0L)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 24)
expect_equal(length(avar), 18)
# LOG-LIKELIHOOD
comp <- 5.41229
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.42565, 0.81313)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(0.50043, 0.45471)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, 1.45445), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 0.72492), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(0.52596, 0.35650, 0.50998, 0.35629)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(3.93444, 3.97110)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(0.42556, 0.32470)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.04255, 0.04600)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00258, 0.00281)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 5. Measurement Model
# 5.1 nu
comp <- rep(0.04933, 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(0.00311, 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(0.00292, 0.00111, 0.00261, 0.00101)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00196, 0.00165)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.00404, 0.00285)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
})
test_that("two-group one latent covariate negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1",
lv = list(eta1 = c("z21", "z22")),
group = "treat",
data = example01,
family = "nbinom",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 24)
expect_equal(length(avar), 20)
# LOG-LIKELIHOOD
comp <- 5.36203
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(1.39488, 1.38017)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(0.26256, 0.31877)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(9.58424, 15.98937)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, -0.74553), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 1.2814), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(0.66769, 0.03286, 0.57080, 0.16991)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(3.87379, 3.95331)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(0.45845, 0.22501)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.03008, 0.04599)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00185, 0.00285)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 3. Overdispersion parameter
comp <- c(1.57327, 7.36865)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 5. Measurement Model
# 5.1 nu
comp <- rep(0.12104, 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(0.00765, 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(0.00215, 0.00001, 0.00221, 0.00181)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00088, 0.00127)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.00389, 0.00098)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
})
# ---------------------------------------------------
# TEST 6 - two latent covariates - two groups
# ---------------------------------------------------
test_that("two-group two latent covariates Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + eta2",
lv = list(
eta1 = c("z21", "z22"),
eta2 = c("z41", "z42", "z43")
),
group = "treat",
data = example01,
family = "poisson",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 60)
expect_equal(length(avar), 40)
# LOG-LIKELIHOOD
comp <- 11.09449
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.63028, 0.55231)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(0.46326, -0.03616, 0.50796, 0.02916)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, 1.35728, 0, -0.09500, -0.45658), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 0.74971, rep(0, 5), 1, 1.28107, 1.36110), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
0.52566, 0.33860, 1.53647, 1.43656, 1.39938,
0.52605, 0.35564, 1.36698, 1.56639, 1.02974
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(3.93991, 1.57989, 3.97623, 1.65178)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(0.43188, 1.89513, 0.31349, 2.16220)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 6.3 Covariances
comp <- c(-0.34766, -0.41424)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.06556, 0.09605)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00340, 0.00044, 0.00508, 0.00040)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.04997, 0.01275, 0.01540), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00315, 0.00307, 0.00404), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.00314, 0.00109, 0.01784, 0.02554, 0.02826,
0.00256, 0.00099, 0.01433, 0.02544, 0.03841
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00194, 0.00606, 0.00156, 0.00518)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.00431, 0.04134, 0.00277, 0.05227)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 6.3 Covariances
comp <- c(0.00478, 0.00470)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
test_that("two-group two latent covariates negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + eta2",
lv = list(
eta1 = c("z21", "z22"),
eta2 = c("z41", "z42", "z43")
),
group = "treat",
data = example01,
family = "nbinom",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 60)
expect_equal(length(avar), 42)
# LOG-LIKELIHOOD
comp <- 11.03596
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(1.42405, 1.53285)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(0.28020, -0.06825, 0.28419, -0.01419)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(14.00803, 18.66380)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, 1.08882, 0, -0.07963, -0.73781), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 0.81774, rep(0, 5), 1, 1.27078, 1.53127), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
0.45836, 0.25828, 1.61553, 1.61485, 1.17764,
0.45605, 0.28609, 1.68552, 2.03674, 0.28088
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(3.94419, 1.58128, 3.96585, 1.684321)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(0.48812, 1.66195, 0.34983, 2.08168)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 6.3 Covariances
comp <- c(-0.30853, -0.30940)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.03527, 0.04232)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00184, 0.00041, 0.00227, 0.00024)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 3. Overdispersion parameter
comp <- c(6.3742, 12.7716)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.09798, 0.01402, 0.01389), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00622, 0.00330, 0.00322), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.00353, 0.00140, 0.01872, 0.02576, 0.03203,
0.00250, 0.00110, 0.01433, 0.02167, 0.00095
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00192, 0.00559, 0.00145, 0.00276)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.00496, 0.02802, 0.00237, 0.02454)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 6.3 Covariances
comp <- c(0.00399, 0.00287)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
# ---------------------------------------------------
# TEST 7 - one latent, one manifest covariates - two groups
# ---------------------------------------------------
test_that("two-group one latent, one manifest covariate Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + z12",
lv = list(eta1 = c("z41", "z42", "z43")),
group = "treat",
data = example01,
family = "poisson",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 38)
expect_equal(length(avar), 32)
# LOG-LIKELIHOOD
comp <- 10.40298
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(2.76045, -0.14176, 2.86583, -0.12890)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(-0.09412, -0.02862)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.35905, 1.39256)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.59276, 1.49301)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, -0.09046, -0.43259), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 1.27837, 1.34651), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
1.51950, 1.46891, 1.45808,
1.36367, 1.51842, 1.08572
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(1.58518, 1.64336)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(1.87179, 2.13073)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 7. Latent-Manifest Covariances
comp <- c(0.50240, 0.68700)
par <- pt$par[pt$dest == "Sigma_z_lv"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.00070, 0.00018, 0.00048, 0.00015)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00024, 0.00014)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# # 3. Overdispersion parameter
# comp <- c(9.21046, 7.77312)
# par <- avar[pt$par_free[pt$dest == "overdis"]]
# expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00370, 0.00323)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01190, 0.01034)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.01280, 0.01482), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00310, 0.00384), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.01775, 0.02544, 0.02820,
0.01410, 0.02401, 0.03513
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00625, 0.00539)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.03885, 0.05531)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 7. Latent-manifest Covariances
comp <- c(0.00957, 0.01124)
par <- avar[pt$par_free[pt$dest == "Sigma_z_lv"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
test_that("two-group one latent, one manifest covariate negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + z12",
lv = list(eta1 = c("z41", "z42", "z43")),
group = "treat",
data = example01,
family = "nbinom",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 38)
expect_equal(length(avar), 34)
# LOG-LIKELIHOOD
comp <- 10.30759
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(2.74023, -0.14692, 2.86376, -0.13065)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(-0.07545, -0.02587)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(13.57181, 18.25335)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.35814, 1.39329)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.59198, 1.49435)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, -0.10521, -0.46664), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 1.28735, 1.36718), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
1.55109, 1.45711, 1.36321,
1.38212, 1.52278, 1.04421
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(1.58199, 1.64565)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(1.84814, 2.11163)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 7. Latent-Manifest Covariances
comp <- c(0.49467, 0.68556)
par <- pt$par[pt$dest == "Sigma_z_lv"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.00119, 0.00030, 0.00086, 0.00024)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00031, 0.00020)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 3. Overdispersion parameter
comp <- c(4.58670, 8.98671)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00370, 0.00322)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01187, 0.01038)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.01298, 0.01573), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00314, 0.00415), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.01820, 0.02698, 0.03034,
0.01421, 0.02492, 0.03872
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00617, 0.00527)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.03743, 0.05461)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 7. Latent-manifest Covariances
comp <- c(0.00928, 0.01120)
par <- avar[pt$par_free[pt$dest == "Sigma_z_lv"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
# ---------------------------------------------------
# TEST 8 - one latent, two manifest covariates - two groups
# ---------------------------------------------------
test_that("two-group one latent, two manifest covariates Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + z12 + z21",
lv = list(eta1 = c("z41", "z42", "z43")),
group = "treat",
data = example01,
family = "poisson",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 48)
expect_equal(length(avar), 42)
# LOG-LIKELIHOOD
comp <- 11.58595
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(
2.36960, -0.10848, 0.08538,
2.57967, -0.10664, 0.06168
)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(-0.08794, -0.02418)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.35900, 3.91136, 1.39321, 4.00164)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.59255, 0.95087, 1.49459, 0.83742)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 4.3 Covariance
comp <- c(-0.63469, -0.57679)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_cov")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, -0.09006, -0.44041), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 1.27810, 1.35125), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
1.52390, 1.46958, 1.44107,
1.36535, 1.53183, 1.06577
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(1.58494, 1.64547)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(1.86770, 2.14256)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 7. Latent-Manifest Covariances
comp <- c(0.50107, -0.26665, 0.69155, -0.38644)
par <- pt$par[pt$dest == "Sigma_z_lv"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(
0.00798, 0.00023, 0.00035,
0.00690, 0.00018, 0.00030
)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00023, 0.00013)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00371, 0.00222, 0.00323, 0.00185)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01189, 0.00423, 0.01039, 0.00321)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 4.3 Covarianes
comp <- c(0.00449, 0.00368)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.01280, 0.01500), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00310, 0.00390), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.01783, 0.02565, 0.02852,
0.01414, 0.02406, 0.03561
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00625, 0.00537)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.03870, 0.05667)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 7. Latent-manifest Covariances
comp <- c(0.00952, 0.00536, 0.01146, 0.00591)
par <- avar[pt$par_free[pt$dest == "Sigma_z_lv"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
test_that("two-group one latent, two manifest covariate negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + z12 + z21",
lv = list(eta1 = c("z41", "z42", "z43")),
group = "treat",
data = example01,
family = "nbinom",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 48)
expect_equal(length(avar), 44)
# LOG-LIKELIHOOD
comp <- 11.49911
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(
2.34399, -0.11310, 0.08741,
2.58951, -0.10876, 0.05917
)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(-0.07169, -0.02223)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(14.52583, 19.11102)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.35808, 3.91184, 1.39380, 4.00131)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.59218, 0.95074, 1.49559, 0.83776)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 4.3 Covariance
comp <- c(-0.63448, -0.57736)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_cov")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, -0.10279, -0.46896), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 1.28584, 1.36858), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
1.55152, 1.45768, 1.36277,
1.38046, 1.53710, 1.03101
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(1.58175, 1.64726)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(1.84751, 2.12428)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 7. Latent-Manifest Covariances
comp <- c(0.49468, -0.26216, 0.68968, -0.38534)
par <- pt$par[pt$dest == "Sigma_z_lv"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(
0.01312, 0.00037, 0.00058,
0.01155, 0.00030, 0.00050
)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00030, 0.00020)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 3. Overdispersion parameter
comp <- c(5.62609, 10.32605)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00370, 0.00222, 0.00322, 0.00184)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01188, 0.00423, 0.01041, 0.00322)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 4.3 Covariances
comp <- c(0.00449, 0.00368)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.01297, 0.01581), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00314, 0.00418), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.01820, 0.02711, 0.03058,
0.01426, 0.02493, 0.03876
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00617, 0.00527)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.03746, 0.05544)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 7. Latent-manifest Covariances
comp <- c(0.00927, 0.00525, 0.01135, 0.00583)
par <- avar[pt$par_free[pt$dest == "Sigma_z_lv"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
# ---------------------------------------------------
# TEST 9 - two latent, one manifest covariates - two groups
# ---------------------------------------------------
test_that("two-group two latent, one manifest covariates Poisson", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + eta2 + z11",
lv = list(
eta1 = c("z21", "z22"),
eta2 = c("z41", "z42", "z43")
),
group = "treat",
data = example01,
family = "poisson",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 70)
expect_equal(length(avar), 50)
# LOG-LIKELIHOOD
comp <- 12.55314
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09358)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.82196, -0.02026, 0.02869, 0.06399)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(0.42366, -0.03738, 0.61331, 0.03109)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(0, 0)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.59222, 1.55037)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.68941, 1.37974)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, 1.45202, 0, -0.10394, -0.45037), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 0.72596, rep(0, 5), 1, 1.28661, 1.35739), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
0.50781, 0.33968, 1.54610, 1.41844, 1.41326,
0.52843, 0.37247, 1.36521, 1.53639, 1.05942
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(3.93821, 1.57983, 3.97780, 1.64804)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(0.45290, 1.88845, 0.30698, 2.14891)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 6.3 Covariances
comp <- c(-0.34781, -0.41573)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_cov")
# 7. Latent-Manifest Covariances
comp <- c(-0.50655, 0.47312, -0.45868, 0.64211)
par <- pt$par[pt$dest == "Sigma_z_lv"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.13553, 0.00061, 0.31977, 0.00150)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00629, 0.00042, 0.01502, 0.00050)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# # 3. Overdispersion parameter
# comp <- c(8.39126, 6.93554)
# par <- avar[pt$par_free[pt$dest == "overdis"]] |> round(5)
# expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00392, 0.00294)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01346, 0.00892)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.04251, 0.01284, 0.01435), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00268, 0.00310, 0.00365), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.00349, 0.00117, 0.01784, 0.02584, 0.02760,
0.00239, 0.00098, 0.01372, 0.02304, 0.02940
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00198, 0.00617, 0.00156, 0.00523)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.00487, 0.04076, 0.00267, 0.05716)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 6.3 Covariances
comp <- c(0.00486, 0.00500)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
# 7. Latent-manifest Covariances
comp <- c(0.00384, 0.01017, 0.00270, 0.01060)
par <- avar[pt$par_free[pt$dest == "Sigma_z_lv"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
test_that("two-group two latent, one manifest covariate negative binomial", {
skip_on_cran()
fit <- countreg(
forml = "dv ~ eta1 + eta2 + z11",
lv = list(
eta1 = c("z21", "z22"),
eta2 = c("z41", "z42", "z43")
),
group = "treat",
data = example01,
family = "negbin",
se = TRUE
)
# Converged?
conv <- fit@fit@fit$convergence
expect_equal(conv, 0)
# Correct parameter estimates?
pt <- fit@partable
avar <- diag(fit@vcov)
expect_equal(length(pt$par), 70)
expect_equal(length(avar), 52)
# LOG-LIKELIHOOD
comp <- 12.50705
par <- fit@fit@fit$objective
expect_equal(par, comp, tolerance = 1e-5, label = "logl")
# PARAMETER
# 1. Group weight
comp <- c(6.05912, 6.09357)
par <- pt$par[pt$dest == "groupw"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(1.86183, -0.08019, 1.92432, -0.04937)
par <- pt$par[pt$dest == "beta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_beta")
# 2.2 gamma
comp <- c(0.19708, -0.05938, 0.20441, -0.01444)
par <- pt$par[pt$dest == "gamma"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_gamma")
# 3. Overdispersion parameter
comp <- c(16.07668, 19.65088)
par <- pt$par[pt$dest == "overdis"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(1.59228, 1.55054)
par <- pt$par[pt$dest == "mu_z"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_z")
# 4.2 Variances
comp <- c(1.68916, 1.38302)
par <- pt$par[pt$dest == "Sigma_z" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0, 1.50289, 0, -0.10129, -0.44922), 2)
par <- pt$par[pt$dest == "nu"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_nu")
# 5.2 Lambda
comp <- rep(c(1, 0.71290, rep(0, 5), 1, 1.28496, 1.35665), 2)
par <- pt$par[pt$dest == "Lambda"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_lambda")
# 5.3 Theta
comp <- c(
0.40008, 0.29254, 1.54578, 1.41983, 1.40770,
0.39539, 0.31152, 1.36214, 1.54148, 1.05999
)
par <- pt$par[pt$dest == "Theta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(3.93729, 1.58028, 3.98050, 1.64902)
par <- pt$par[pt$dest == "mu_eta"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_mu_eta")
# 6.2 Variances
comp <- c(0.56083, 1.89159, 0.44179, 2.18016)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "var"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_var")
# 6.3 Covariances
comp <- c(-0.34963, -0.42280)
par <- pt$par[pt$dest == "Sigma_eta" & pt$type == "cov"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_eta_cov")
# 7. Latent-Manifest Covariances
comp <- c(-0.51018, 0.47128, -0.46614, 0.65297)
par <- pt$par[pt$dest == "Sigma_z_lv"]
expect_equal(par, comp, tolerance = 1e-5, label = "par_sig_z_eta_cov")
# STANDARD ERRORS
# 1. Group weight
comp <- c(0.00234, 0.00226)
par <- avar[pt$par_free[pt$dest == "groupw"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_groupw")
# 2. Regression coefficient
# 2.1 beta
comp <- c(0.04109, 0.00038, 0.05660, 0.00046)
par <- avar[pt$par_free[pt$dest == "beta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_beta")
# 2.2 gamma
comp <- c(0.00190, 0.00033, 0.00260, 0.00024)
par <- avar[pt$par_free[pt$dest == "gamma"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_gamma")
# 3. Overdispersion parameter
comp <- c(8.68960, 13.23318)
par <- avar[pt$par_free[pt$dest == "overdis"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_overdis")
# 4. Manifest Covariate Parameters
# 4.1 Means
comp <- c(0.00392, 0.00293)
par <- avar[pt$par_free[pt$dest == "mu_z"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_z")
# 4.2 Variances
comp <- c(0.01345, 0.00897)
par <- avar[pt$par_free[pt$dest == "Sigma_z" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_z_var")
# 5. Measurement Model
# 5.1 nu
comp <- rep(c(0.04897, 0.01268, 0.01420), 2)
par <- avar[pt$par_free[pt$dest == "nu"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_nu")
# 5.2 Lambda
comp <- rep(c(0.00310, 0.00305, 0.00360), 2)
par <- avar[pt$par_free[pt$dest == "Lambda"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_lambda")
# 5.3 Theta
comp <- c(
0.00293, 0.00097, 0.01771, 0.02552, 0.02740,
0.00221, 0.00081, 0.01349, 0.02321, 0.02914
)
par <- avar[pt$par_free[pt$dest == "Theta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mm_theta")
# 6. Latent Covariate Parameters
# 6.1 Means
comp <- c(0.00205, 0.00618, 0.00164, 0.00513)
par <- avar[pt$par_free[pt$dest == "mu_eta"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_mu_eta")
# 6.2 Variances
comp <- c(0.00497, 0.04050, 0.00355, 0.05295)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "var"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_var")
# 6.3 Covariances
comp <- c(0.00518, 0.00536)
par <- avar[pt$par_free[pt$dest == "Sigma_eta" & pt$type == "cov"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
# 7. Latent-manifest Covariances
comp <- c(0.00409, 0.01013, 0.00301, 0.01050)
par <- avar[pt$par_free[pt$dest == "Sigma_z_lv"]]
expect_equal(par, comp, tolerance = 1e-5, label = "se_sig_eta_cov")
})
# ---------------------------------------------------
# TEST 10 - one latent variable - one group
# ---------------------------------------------------
test_that("one latent variable in one group - Poisson", {
skip("Not finished")
fit <- countreg(
forml = "dv ~ eta",
lv = list(eta = c("z41", "z42", "z43")),
group = NULL,
data = example01,
family = "poisson",
se = TRUE
)
par <- fit@partable$par
comp <- c(
6.769642, 2.72414, -0.109569, 0, 1, -0.054137,
1.256452, -0.343201, 1.29337, 1.61712, 2.004875, 0,
1.393845, 1.523669, 1.430018
)
expect_equal(length(par), 15)
expect_equal(par, comp, tolerance = 1e-5)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.