Last updated on 2026-08-21 08:52:42 CEST.
| Flavor | Version | Tinstall | Tcheck | Ttotal | Status | Flags |
|---|---|---|---|---|---|---|
| r-devel-linux-x86_64-debian-clang | 0.1.1 | 9.35 | 58.31 | 67.66 | OK | |
| r-devel-linux-x86_64-debian-gcc | 0.1.1 | 5.66 | 41.44 | 47.10 | OK | |
| r-devel-linux-x86_64-fedora-clang | 0.1.2 | 45.02 | OK | |||
| r-devel-linux-x86_64-fedora-gcc | 0.1.2 | 6.00 | 39.44 | 45.44 | ERROR | |
| r-devel-windows-x86_64 | 0.1.1 | 10.00 | 98.00 | 108.00 | OK | |
| r-patched-linux-x86_64 | 0.1.1 | 9.25 | 53.15 | 62.40 | OK | |
| r-release-linux-x86_64 | 0.1.1 | 8.90 | 54.88 | 63.78 | OK | |
| r-release-macos-arm64 | 0.1.2 | 2.00 | 17.00 | 19.00 | OK | |
| r-release-macos-x86_64 | 0.1.2 | 6.00 | 52.00 | 58.00 | ERROR | |
| r-release-windows-x86_64 | 0.1.1 | 9.00 | 80.00 | 89.00 | OK | |
| r-oldrel-macos-arm64 | 0.1.2 | 2.00 | 21.00 | 23.00 | OK | |
| r-oldrel-macos-x86_64 | 0.1.2 | 6.00 | 64.00 | 70.00 | ERROR | |
| r-oldrel-windows-x86_64 | 0.1.1 | 9.00 | 94.00 | 103.00 | OK |
Version: 0.1.2
Check: tests
Result: ERROR
Running ‘LN-testing.R’
Running ‘NB-testing.R’
Running ‘Norm-testing.R’
Running ‘Pois-testing.R’
Running ‘gamma-testing.R’
Running the tests in ‘tests/NB-testing.R’ failed.
Complete output:
> require(glmMisrep)
Loading required package: glmMisrep
>
> data <- data.frame( Y = c(0, 0, 0, 0, 0, 5, 1, 0, 0, 0, 4, 2, 3, 3, 29, 0, 0, 12, 0, 6, 0, 0, 0, 1, 3, 17, 0, 25, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+ 4, 2, 16, 0, 19, 0, 0, 2, 0, 0, 0, 0, 0),
+ X1 = c(0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
+ 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0),
+ X2 = c(0.315223940, 0.203016819, -0.046615492, -0.040681413, 0.617273624, 0.813577139, 0.434980275, -1.868117146,
+ -0.027052575, 0.228288655, 1.380955283, 0.257543733, -0.353957121, 0.818737902, 0.525026487, -0.506164644,
+ -0.949480806, -0.107608844, 0.363661818, -0.295835692, 0.110056356, -0.205246487, -0.285092978, -0.639260383,
+ 1.576928404, 2.058907651, 0.823073891, -0.340826703, -1.324805151, 0.103545160, 0.497766445, 0.501280218,
+ -0.297921410, 1.056264736, -0.767076814, -0.212290592, -1.563216428, 1.026954673, -0.087597819, 1.334059105,
+ 0.955057522, 1.823380042, 1.082772308, -2.223962848, 1.433183408, -0.004531971, -1.029210193, 0.532295431,
+ -0.930908683, 0.391930241),
+ X3 = c(0.74306067, 0.67595394, 0.96320251, 0.57668303, 0.81643636, 0.78038200, 0.49999395, 0.99676766, 0.97642715, 0.88478779,
+ 0.53447733, 0.27009525, 0.64544670, 0.63666898, 0.14489153, 0.89359811, 0.70506987, 0.81595152, 0.78411313, 0.90301090,
+ 0.48920726, 0.75707194, 0.98999417, 0.85091229, 0.29074286, 0.73562357, 0.97903729, 0.96906234, 0.84957226, 0.55937779,
+ 0.49149558, 0.83789430, 0.66902416, 0.44173571, 0.81911265, 0.64182433, 0.34363554, 0.78838686, 0.78557154, 0.83241653,
+ 0.68691255, 0.20317013, 0.78619988, 0.09229911, 0.52779899, 0.79314940, 0.95612951, 0.95234203, 0.54259470, 0.81656990),
+ Sex = c("Male", "Male", "Female", "Male", "Male", "Female", "Female", "Female", "Female", "Male", "Male", "Female",
+ "Male", "Female", "Male", "Female", "Female", "Male", "Female", "Male", "Male", "Female", "Male", "Female",
+ "Female", "Male", "Male", "Male", "Male", "Female", "Male", "Female", "Female", "Female", "Male", "Female",
+ "Male", "Female", "Male", "Female", "Female", "Male", "Female", "Male", "Male", "Female", "Female", "Female",
+ "Female", "Male"),
+ Race = c("Black", "Black", "White", "White", "White", "White", "Black", "Other", "Other", "Other", "Black", "Other", "Other", "Other", "Other", "Other", "White", "Other",
+ "White", "Black", "White", "Other", "White", "White", "Other", "Other", "Black", "Other", "Other", "Black", "Black", "Black", "Other", "Black", "Black", "Other",
+ "White", "Other", "White", "White", "Other", "Other", "Other", "White", "White", "Black", "Black", "Black", "Other", "White"),
+ V_star = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
>
> data$Race <- as.factor(data$Race)
> data$Sex <- as.factor(data$Sex)
>
> t1 <- tryCatch(nbRegMisrepEM(formula = y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # The response above is inappropriately specified (y, not Y)
> stopifnot(
+ t1$message == "object 'y' not found"
+ )
>
>
> t2 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_Star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Argument to 'v_star' is misspelled
> stopifnot(
+ t2$message == "variable V_Star not present in dataframe"
+ )
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = "yes", no = "no")
>
> t3 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
>
> # v* variable is type character (yes and no)
> stopifnot(
+ t3$message == "v_star variable must be of class 'factor' or 'numeric'"
+ )
>
> data$V_star <- ifelse(data$V_star == "yes", yes = 1, no = 0)
>
>
> data$V_star[10] <- -1
>
>
> t4 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # v* variable must be binary
> stopifnot(
+ t4$message == "v_star variable must contain two unique values"
+ )
>
> data$V_star[10] <- 0
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = 1, no = 2)
>
> t5 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # v* must be binary, but more specifically 0/1;
> stopifnot(
+ t5$message == "v_star variable must be coded with ones and zeroes"
+ )
>
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = 1, no = 0)
>
> t6 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.49, 0.52),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Inappropriately specified lambda argument
> stopifnot(
+ t6$message == "Lambda vector must sum to one"
+ )
>
>
> t7 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(1/3, 1/3, 1/3),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Inappropriately specified lambda argument
> stopifnot(
+ t7$message == "Lambda vector must contain two elements"
+ )
>
>
>
> data$X4 <- data$X2*0.3
>
> t8 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + X4 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Linearly dependent covariates/degenerate design matrix
> stopifnot(
+ t8$message == "Linear dependencies exist in the covariates"
+ )
>
> # This is only to make sure the glm.nb() function can fit a model
> # without throwing warnings messages/failing to converge. For purposes
> # of testing our error handling, this should work.
>
> data$VS <- data$V_star
>
> t9 <- tryCatch(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + VS,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # V_star variable is absent from formula ragument
> stopifnot(
+ t9$message == "v_star variable must be specified in 'formula'"
+ )
>
>
>
> # EM algorithm should fail to converge within the specified number of attempts
> t10 <- tryCatch(
+ capture.output(nbRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 3,
+ maxrestarts = 4)),
+ error = function(x) x
+ )
number of iterations = 2
>
> stopifnot(
+ t10$message == "NOT CONVERGENT! Failed to converge after 4 attempts"
+ )
Error in t10$message : $ operator is invalid for atomic vectors
Calls: stopifnot
Execution halted
Flavor: r-devel-linux-x86_64-fedora-gcc
Version: 0.1.2
Check: tests
Result: ERROR
Running ‘LN-testing.R’ [1s/2s]
Running ‘NB-testing.R’ [1s/2s]
Running ‘Norm-testing.R’ [1s/1s]
Running ‘Pois-testing.R’ [1s/1s]
Running the tests in ‘tests/Pois-testing.R’ failed.
Complete output:
> require(glmMisrep)
Loading required package: glmMisrep
>
> data <- data.frame( Y = c(0, 0, 2, 0, 3, 0, 36, 0, 2, 1, 0, 2, 6, 9, 0, 0, 0, 0, 7, 1, 1, 2, 50, 4, 0, 0, 0, 1,
+ 0, 0, 0, 3, 0, 0, 1, 0, 1, 3, 176, 0, 0, 0, 0, 0, 2, 286, 0, 0, 0, 18),
+ X1 = c(0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1),
+ X2 = c(1.71870212, -0.55840901, 1.22589915, 0.53000107, 0.62571132, 0.02873955, 0.30989954, 1.35514993, 0.15587503,
+ 0.27987513, 0.48892178, 0.35218767, 0.52382778, 1.58126751, -0.07855081, -0.57128802, -0.92500953, -2.48543328,
+ 0.03810910, 0.39929906, -0.54854763, -0.10505694, 0.45120734, 0.32295222, -0.68595918, -0.66892486, 1.72253431,
+ -0.28425276, -0.67719912, -0.39644260, -0.16843500, 0.90540261, -1.38574804, 0.14456841, 0.44142810, -1.89442541,
+ -0.65961894, 2.13148776, 1.72410805, -1.60207312, -1.09525034, -1.31327168, -0.43378445, 1.33644956, 1.28938359,
+ 0.90232362, -0.94112768, -0.61851917, 0.37033085, -0.47019541),
+ X3 = c(0.6882029, 0.9934165, 0.9173388, 0.9406660, 0.5130041, 0.8590187, 0.4468488, 0.4186652, 0.5098278, 0.3339481, 0.6922477,
+ 0.6793977, 0.4983724, 0.6079911, 0.7763041, 0.8529067, 0.8287771, 0.9125900, 0.4802076, 0.8981448, 0.3570093, 0.9209584,
+ 0.4353817, 0.9426418, 0.9550002, 0.4869851, 0.9560156, 0.8247537, 0.1939687, 0.6103839, 0.7721900, 0.5980044, 0.8683831,
+ 0.7004518, 0.8577210, 0.3576712, 0.9540088, 0.9880046, 0.4304899, 0.7416618, 0.6656063, 0.8920356, 0.6097593, 0.8008748,
+ 0.8110432, 0.5967969, 0.6983106, 0.9471680, 0.9929186, 0.9059200),
+ Sex = c("Female", "Male", "Male", "Female", "Male", "Female", "Male", "Male", "Female", "Female", "Male", "Male",
+ "Male", "Female", "Male", "Male", "Female", "Female", "Male", "Female", "Female", "Male", "Female", "Male",
+ "Male", "Male", "Male", "Female", "Female", "Female", "Male", "Male", "Male", "Male", "Female", "Female",
+ "Female", "Female", "Male", "Male", "Male", "Male", "Male", "Male", "Female", "Male", "Male", "Female",
+ "Female", "Male"),
+ Race = c("Black", "White", "White", "White", "White", "White", "Black", "Black", "Black", "Black", "Black", "Black", "White", "Other",
+ "Black", "White", "Black", "White", "Other", "Black", "White", "Other", "Other", "White", "White", "White", "Black", "Other",
+ "White", "Other", "White", "Black", "Other", "Black", "Other", "Other", "Other", "Black", "Other", "Black", "White", "Other",
+ "Black", "White", "Black", "Other", "White", "Black", "Black", "Other"),
+ V_star = c(0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0))
>
> data$Race <- as.factor(data$Race)
> data$Sex <- as.factor(data$Sex)
>
> t1 <- tryCatch(poisRegMisrepEM(formula = y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # The response above is inappropriately specified (y, not Y)
> stopifnot(
+ t1$message == "object 'y' not found"
+ )
>
>
> t2 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_Star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Argument to 'v_star' is misspelled
> stopifnot(
+ t2$message == "variable V_Star not present in dataframe"
+ )
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = "yes", no = "no")
>
> t3 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
>
> # v* variable is type character (yes and no)
> stopifnot(
+ t3$message == "v_star variable must be of class 'factor' or 'numeric'"
+ )
>
> data$V_star <- ifelse(data$V_star == "yes", yes = 1, no = 0)
>
>
> data$V_star[10] <- -1
>
>
> t4 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # v* variable must be binary
> stopifnot(
+ t4$message == "v_star variable must contain two unique values"
+ )
>
> data$V_star[10] <- 0
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = 1, no = 2)
>
> t5 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # v* must be binary, but more specifically 0/1;
> stopifnot(
+ t5$message == "v_star variable must be coded with ones and zeroes"
+ )
>
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = 1, no = 0)
>
> t6 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.49, 0.52),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Inappropriately specified lambda argument
> stopifnot(
+ t6$message == "Lambda vector must sum to one"
+ )
>
>
> t7 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(1/3, 1/3, 1/3),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Inappropriately specified lambda argument
> stopifnot(
+ t7$message == "Lambda vector must contain two elements"
+ )
>
>
>
> data$X4 <- data$X2*0.3
>
> t8 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + X4 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Linearly dependent covariates/degenerate design matrix
> stopifnot(
+ t8$message == "Linear dependencies exist in the covariates"
+ )
>
>
> t9 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> #V_star variable absent from formula
> stopifnot(
+ t9$message == "v_star variable must be specified in 'formula'"
+ )
>
>
>
> # EM algorithm should fail to converge within the specified number of attempts
> t10 <- tryCatch(
+ capture.output(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 3,
+ maxrestarts = 4)),
+ error = function(x) x
+ )
>
> stopifnot(
+ t10$message == "NOT CONVERGENT! Failed to converge after 4 attempts"
+ )
>
>
> # On the first attempt, fails to converge, and restarts with new mixing props.
> # Succeeds on the second attempt.
> msg <- capture.output(
+ t11 <- poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 16,
+ maxrestarts = 4, verb = TRUE),
+ type = "message"
+ )
>
> stopifnot(
+ any(msg == "Warning: Failed to converge. Restarting with new mixing proportions")
+ )
>
>
> msg <- capture.output(
+ t12 <- poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ type = "message"
+ )
>
> # Output validation;
>
> # Output should be a list
> stopifnot(
+ is.list(t12)
+ )
>
> # With 14 elements
> stopifnot(
+ length(t12) == 14
+ )
>
> # Fisher information matrix should be symmetric (NEW in 0.1.2: raised tolerance on the symmetry check)
> stopifnot(
+ isSymmetric(t12$cov.estimates, tol = 2e-7)
+ )
>
>
> # The returned list should have elements with the following names
> # and types
> stopifnot(
+ all.equal(lapply(t12, class),
+ lapply(list(y = 0.1, lambda = 0.2, params = 0.3, loglik = 0.4,
+ posterior = 0.5, all.loglik = 0.6, cov.estimates = matrix(data = c(1,2,3,4), 2, 2),
+ std.error = 0.7, z.values = 0.8, p.values = 0.9, ICs = 1.0, ft = "*",
+ formula = y ~ x, v_star_name = "v*" ), class) )
+ )
>
>
> # Verifying the function can correctly calculate things;
> stopifnot(
+ all.equal(t12$lambda, 0.2140361, tolerance = 2e-7 )
+ )
>
> stopifnot(
+ all.equal(as.numeric(t12$params), c(-1.1486407, 1.9813423, 1.0606001, -4.0278727, 1.8886687, 2.1052795, -0.1815366, 2.2582766), tolerance = 2e-7 )
+ )
>
> stopifnot(
+ all.equal( t12$loglik, -77.17481, tolerance = 2e-7 )
+ )
>
> stopifnot(
+ all.equal( t12$posterior, c(9.131063e-01, 9.167867e-01, 9.987564e-01, 8.007038e-01, 1.000000e+00, 7.980578e-01, 1.761218e-22, 9.999998e-01,
+ 5.707215e-02, 4.986677e-01, 9.591568e-01, 9.998818e-01, 1.596141e-04, 1.000000e+00, 8.834283e-01, 8.269226e-01,
+ 8.267814e-01, 7.909421e-01, 9.995369e-01, 3.002507e-01, 7.724813e-01, 5.033734e-01, 1.413033e-29, 7.033365e-04,
+ 9.184187e-01, 9.118807e-01, 9.752457e-01, 4.103920e-01, 8.589374e-01, 9.278243e-01, 8.652112e-01, 1.000000e+00,
+ 9.998403e-01, 9.999676e-01, 5.418147e-01, 8.817133e-01, 3.273919e-01, 1.253503e-01, 2.099810e-102, 8.124995e-01,
+ 8.350465e-01, 9.998171e-01, 9.066149e-01, 1.000000e+00, 4.335937e-01, 2.097168e-171, 8.364673e-01, 7.911482e-01,
+ 7.981111e-01, 1.769426e-10), tolerance = 2e-7 )
+ )
>
>
> stopifnot(
+ all.equal( t12$all.loglik, c(-91.21048, -77.54635, -77.24049, -77.18672, -77.17811, -77.17606, -77.17532, -77.17502, -77.17490, -77.17484, -77.17482,
+ -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481), tolerance = 2e-7 )
+ )
>
>
> stopifnot(
+ all.equal(t12$cov.estimates,
+ matrix(data = c(0.0114492285, -0.0004087145, 0.0016883055, -0.001674646, -0.01493787, 0.004194090, 0.004620007, 0.003212934, 0.0008121915,
+ -0.0004087145, 0.1376023242, -0.0103938967, -0.021763262, -0.10804979, 0.001850089, -0.001523425, -0.033947804, -0.0502985311,
+ 0.0016883055, -0.0103938967, 0.0153809909, 0.005402047, -0.02063417, 0.003663544, 0.001754054, 0.008152043, 0.0006989913,
+ -0.0016746456, -0.0217632624, 0.0054020474, 0.012549504, 0.02752248, -0.006829300, -0.008499404, 0.001601437, 0.0045586028,
+ -0.0149378678, -0.1080497865, -0.0206341716, 0.027522475, 0.26797912, -0.040935476, -0.039438494, -0.023606980, 0.0234374153,
+ 0.0041940900, 0.0018500887, 0.0036635440, -0.006829300, -0.04093548, 0.024832614, 0.009305140, 0.004723165, -0.0062878481,
+ 0.0046200066, -0.0015234254, 0.0017540537, -0.008499404, -0.03943849, 0.009305140, 0.033156029, 0.023238618, -0.0090039233,
+ 0.0032129343, -0.0339478042, 0.0081520434, 0.001601437, -0.02360698, 0.004723165, 0.023238618, 0.095149535, 0.0125163473,
+ 0.0008121915, -0.0502985311, 0.0006989913, 0.004558603, 0.02343742, -0.006287848, -0.009003923, 0.012516347, 0.0479783934),
+ ncol = 9, nrow = 9, byrow = TRUE, dimnames = list( c("lambda", names(t12$params)), c("lambda", names(t12$params)) ) ), tolerance = 2e-7
+ )
+ )
Error: t12$cov.estimates and matrix(data = c(0.0114492285, -0.0004087145, 0.0016883055, -0.001674646, .... are not equal:
Mean relative difference: 2.641426e-07
Execution halted
Flavor: r-release-macos-x86_64
Version: 0.1.2
Check: tests
Result: ERROR
Running ‘LN-testing.R’ [1s/2s]
Running ‘NB-testing.R’ [2s/2s]
Running ‘Norm-testing.R’ [1s/1s]
Running ‘Pois-testing.R’ [1s/2s]
Running the tests in ‘tests/Pois-testing.R’ failed.
Complete output:
> require(glmMisrep)
Loading required package: glmMisrep
>
> data <- data.frame( Y = c(0, 0, 2, 0, 3, 0, 36, 0, 2, 1, 0, 2, 6, 9, 0, 0, 0, 0, 7, 1, 1, 2, 50, 4, 0, 0, 0, 1,
+ 0, 0, 0, 3, 0, 0, 1, 0, 1, 3, 176, 0, 0, 0, 0, 0, 2, 286, 0, 0, 0, 18),
+ X1 = c(0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1),
+ X2 = c(1.71870212, -0.55840901, 1.22589915, 0.53000107, 0.62571132, 0.02873955, 0.30989954, 1.35514993, 0.15587503,
+ 0.27987513, 0.48892178, 0.35218767, 0.52382778, 1.58126751, -0.07855081, -0.57128802, -0.92500953, -2.48543328,
+ 0.03810910, 0.39929906, -0.54854763, -0.10505694, 0.45120734, 0.32295222, -0.68595918, -0.66892486, 1.72253431,
+ -0.28425276, -0.67719912, -0.39644260, -0.16843500, 0.90540261, -1.38574804, 0.14456841, 0.44142810, -1.89442541,
+ -0.65961894, 2.13148776, 1.72410805, -1.60207312, -1.09525034, -1.31327168, -0.43378445, 1.33644956, 1.28938359,
+ 0.90232362, -0.94112768, -0.61851917, 0.37033085, -0.47019541),
+ X3 = c(0.6882029, 0.9934165, 0.9173388, 0.9406660, 0.5130041, 0.8590187, 0.4468488, 0.4186652, 0.5098278, 0.3339481, 0.6922477,
+ 0.6793977, 0.4983724, 0.6079911, 0.7763041, 0.8529067, 0.8287771, 0.9125900, 0.4802076, 0.8981448, 0.3570093, 0.9209584,
+ 0.4353817, 0.9426418, 0.9550002, 0.4869851, 0.9560156, 0.8247537, 0.1939687, 0.6103839, 0.7721900, 0.5980044, 0.8683831,
+ 0.7004518, 0.8577210, 0.3576712, 0.9540088, 0.9880046, 0.4304899, 0.7416618, 0.6656063, 0.8920356, 0.6097593, 0.8008748,
+ 0.8110432, 0.5967969, 0.6983106, 0.9471680, 0.9929186, 0.9059200),
+ Sex = c("Female", "Male", "Male", "Female", "Male", "Female", "Male", "Male", "Female", "Female", "Male", "Male",
+ "Male", "Female", "Male", "Male", "Female", "Female", "Male", "Female", "Female", "Male", "Female", "Male",
+ "Male", "Male", "Male", "Female", "Female", "Female", "Male", "Male", "Male", "Male", "Female", "Female",
+ "Female", "Female", "Male", "Male", "Male", "Male", "Male", "Male", "Female", "Male", "Male", "Female",
+ "Female", "Male"),
+ Race = c("Black", "White", "White", "White", "White", "White", "Black", "Black", "Black", "Black", "Black", "Black", "White", "Other",
+ "Black", "White", "Black", "White", "Other", "Black", "White", "Other", "Other", "White", "White", "White", "Black", "Other",
+ "White", "Other", "White", "Black", "Other", "Black", "Other", "Other", "Other", "Black", "Other", "Black", "White", "Other",
+ "Black", "White", "Black", "Other", "White", "Black", "Black", "Other"),
+ V_star = c(0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0))
>
> data$Race <- as.factor(data$Race)
> data$Sex <- as.factor(data$Sex)
>
> t1 <- tryCatch(poisRegMisrepEM(formula = y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # The response above is inappropriately specified (y, not Y)
> stopifnot(
+ t1$message == "object 'y' not found"
+ )
>
>
> t2 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_Star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Argument to 'v_star' is misspelled
> stopifnot(
+ t2$message == "variable V_Star not present in dataframe"
+ )
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = "yes", no = "no")
>
> t3 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
>
> # v* variable is type character (yes and no)
> stopifnot(
+ t3$message == "v_star variable must be of class 'factor' or 'numeric'"
+ )
>
> data$V_star <- ifelse(data$V_star == "yes", yes = 1, no = 0)
>
>
> data$V_star[10] <- -1
>
>
> t4 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # v* variable must be binary
> stopifnot(
+ t4$message == "v_star variable must contain two unique values"
+ )
>
> data$V_star[10] <- 0
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = 1, no = 2)
>
> t5 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6,0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # v* must be binary, but more specifically 0/1;
> stopifnot(
+ t5$message == "v_star variable must be coded with ones and zeroes"
+ )
>
>
>
> data$V_star <- ifelse(data$V_star == 1, yes = 1, no = 0)
>
> t6 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.49, 0.52),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Inappropriately specified lambda argument
> stopifnot(
+ t6$message == "Lambda vector must sum to one"
+ )
>
>
> t7 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(1/3, 1/3, 1/3),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Inappropriately specified lambda argument
> stopifnot(
+ t7$message == "Lambda vector must contain two elements"
+ )
>
>
>
> data$X4 <- data$X2*0.3
>
> t8 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + X4 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> # Linearly dependent covariates/degenerate design matrix
> stopifnot(
+ t8$message == "Linear dependencies exist in the covariates"
+ )
>
>
> t9 <- tryCatch(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ error = function(x) x )
>
> #V_star variable absent from formula
> stopifnot(
+ t9$message == "v_star variable must be specified in 'formula'"
+ )
>
>
>
> # EM algorithm should fail to converge within the specified number of attempts
> t10 <- tryCatch(
+ capture.output(poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 3,
+ maxrestarts = 4)),
+ error = function(x) x
+ )
>
> stopifnot(
+ t10$message == "NOT CONVERGENT! Failed to converge after 4 attempts"
+ )
>
>
> # On the first attempt, fails to converge, and restarts with new mixing props.
> # Succeeds on the second attempt.
> msg <- capture.output(
+ t11 <- poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 16,
+ maxrestarts = 4, verb = TRUE),
+ type = "message"
+ )
>
> stopifnot(
+ any(msg == "Warning: Failed to converge. Restarting with new mixing proportions")
+ )
>
>
> msg <- capture.output(
+ t12 <- poisRegMisrepEM(formula = Y ~ X1 + X2 + X3 + Sex + Race + V_star,
+ v_star = "V_star",
+ data = data,
+ lambda = c(0.6, 0.4),
+ epsilon = 1e-08,
+ maxit = 10000,
+ maxrestarts = 20),
+ type = "message"
+ )
>
> # Output validation;
>
> # Output should be a list
> stopifnot(
+ is.list(t12)
+ )
>
> # With 14 elements
> stopifnot(
+ length(t12) == 14
+ )
>
> # Fisher information matrix should be symmetric (NEW in 0.1.2: raised tolerance on the symmetry check)
> stopifnot(
+ isSymmetric(t12$cov.estimates, tol = 2e-7)
+ )
>
>
> # The returned list should have elements with the following names
> # and types
> stopifnot(
+ all.equal(lapply(t12, class),
+ lapply(list(y = 0.1, lambda = 0.2, params = 0.3, loglik = 0.4,
+ posterior = 0.5, all.loglik = 0.6, cov.estimates = matrix(data = c(1,2,3,4), 2, 2),
+ std.error = 0.7, z.values = 0.8, p.values = 0.9, ICs = 1.0, ft = "*",
+ formula = y ~ x, v_star_name = "v*" ), class) )
+ )
>
>
> # Verifying the function can correctly calculate things;
> stopifnot(
+ all.equal(t12$lambda, 0.2140361, tolerance = 2e-7 )
+ )
>
> stopifnot(
+ all.equal(as.numeric(t12$params), c(-1.1486407, 1.9813423, 1.0606001, -4.0278727, 1.8886687, 2.1052795, -0.1815366, 2.2582766), tolerance = 2e-7 )
+ )
>
> stopifnot(
+ all.equal( t12$loglik, -77.17481, tolerance = 2e-7 )
+ )
>
> stopifnot(
+ all.equal( t12$posterior, c(9.131063e-01, 9.167867e-01, 9.987564e-01, 8.007038e-01, 1.000000e+00, 7.980578e-01, 1.761218e-22, 9.999998e-01,
+ 5.707215e-02, 4.986677e-01, 9.591568e-01, 9.998818e-01, 1.596141e-04, 1.000000e+00, 8.834283e-01, 8.269226e-01,
+ 8.267814e-01, 7.909421e-01, 9.995369e-01, 3.002507e-01, 7.724813e-01, 5.033734e-01, 1.413033e-29, 7.033365e-04,
+ 9.184187e-01, 9.118807e-01, 9.752457e-01, 4.103920e-01, 8.589374e-01, 9.278243e-01, 8.652112e-01, 1.000000e+00,
+ 9.998403e-01, 9.999676e-01, 5.418147e-01, 8.817133e-01, 3.273919e-01, 1.253503e-01, 2.099810e-102, 8.124995e-01,
+ 8.350465e-01, 9.998171e-01, 9.066149e-01, 1.000000e+00, 4.335937e-01, 2.097168e-171, 8.364673e-01, 7.911482e-01,
+ 7.981111e-01, 1.769426e-10), tolerance = 2e-7 )
+ )
>
>
> stopifnot(
+ all.equal( t12$all.loglik, c(-91.21048, -77.54635, -77.24049, -77.18672, -77.17811, -77.17606, -77.17532, -77.17502, -77.17490, -77.17484, -77.17482,
+ -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481, -77.17481), tolerance = 2e-7 )
+ )
>
>
> stopifnot(
+ all.equal(t12$cov.estimates,
+ matrix(data = c(0.0114492285, -0.0004087145, 0.0016883055, -0.001674646, -0.01493787, 0.004194090, 0.004620007, 0.003212934, 0.0008121915,
+ -0.0004087145, 0.1376023242, -0.0103938967, -0.021763262, -0.10804979, 0.001850089, -0.001523425, -0.033947804, -0.0502985311,
+ 0.0016883055, -0.0103938967, 0.0153809909, 0.005402047, -0.02063417, 0.003663544, 0.001754054, 0.008152043, 0.0006989913,
+ -0.0016746456, -0.0217632624, 0.0054020474, 0.012549504, 0.02752248, -0.006829300, -0.008499404, 0.001601437, 0.0045586028,
+ -0.0149378678, -0.1080497865, -0.0206341716, 0.027522475, 0.26797912, -0.040935476, -0.039438494, -0.023606980, 0.0234374153,
+ 0.0041940900, 0.0018500887, 0.0036635440, -0.006829300, -0.04093548, 0.024832614, 0.009305140, 0.004723165, -0.0062878481,
+ 0.0046200066, -0.0015234254, 0.0017540537, -0.008499404, -0.03943849, 0.009305140, 0.033156029, 0.023238618, -0.0090039233,
+ 0.0032129343, -0.0339478042, 0.0081520434, 0.001601437, -0.02360698, 0.004723165, 0.023238618, 0.095149535, 0.0125163473,
+ 0.0008121915, -0.0502985311, 0.0006989913, 0.004558603, 0.02343742, -0.006287848, -0.009003923, 0.012516347, 0.0479783934),
+ ncol = 9, nrow = 9, byrow = TRUE, dimnames = list( c("lambda", names(t12$params)), c("lambda", names(t12$params)) ) ), tolerance = 2e-7
+ )
+ )
Error: t12$cov.estimates and matrix(data = c(0.0114492285, -0.0004087145, 0.0016883055, -0.001674646, .... are not equal:
Mean relative difference: 2.641426e-07
Execution halted
Flavor: r-oldrel-macos-x86_64