* using log directory ‘/srv/hornik/tmp/CRAN/glmMisrep.Rcheck’ * using R Under development (unstable) (2024-03-14 r86131) * using platform: x86_64-pc-linux-gnu * R was compiled by Debian clang version 17.0.6 (5) Debian flang-new version 17.0.6 (5) * running under: Debian GNU/Linux trixie/sid * using session charset: UTF-8 * checking for file ‘glmMisrep/DESCRIPTION’ ... OK * checking extension type ... Package * this is package ‘glmMisrep’ version ‘0.1.0’ * package encoding: UTF-8 * checking CRAN incoming feasibility ... [3s/6s] NOTE Maintainer: ‘Patrick Rafael ’ New submission Possibly misspelled words in DESCRIPTION: Xia (7:813) al (7:821) et (7:817) glmMisrep (7:18) * checking package namespace information ... OK * checking package dependencies ... OK * checking if this is a source package ... OK * checking if there is a namespace ... OK * checking for executable files ... OK * checking for hidden files and directories ... OK * checking for portable file names ... OK * checking for sufficient/correct file permissions ... OK * checking whether package ‘glmMisrep’ can be installed ... [4s/4s] OK * checking package directory ... OK * checking for future file timestamps ... OK * checking DESCRIPTION meta-information ... OK * checking top-level files ... OK * checking for left-over files ... OK * checking index information ... OK * checking package subdirectories ... OK * checking R files for non-ASCII characters ... OK * checking R files for syntax errors ... OK * checking whether the package can be loaded ... [0s/0s] OK * checking whether the package can be loaded with stated dependencies ... [0s/0s] OK * checking whether the package can be unloaded cleanly ... [0s/0s] OK * checking whether the namespace can be loaded with stated dependencies ... [0s/0s] OK * checking whether the namespace can be unloaded cleanly ... [0s/0s] OK * checking loading without being on the library search path ... [0s/0s] OK * checking use of S3 registration ... OK * checking dependencies in R code ... OK * checking S3 generic/method consistency ... NOTE Mismatches for methods registered for non-generic: predict: function(object, ...) predict.misrepEM: function(object, newdata) See section ‘Registering S3 methods’ in the ‘Writing R Extensions’ manual. * checking replacement functions ... OK * checking foreign function calls ... OK * checking R code for possible problems ... [7s/7s] OK * checking Rd files ... [0s/0s] OK * checking Rd metadata ... OK * checking Rd line widths ... OK * checking Rd cross-references ... OK * checking for missing documentation entries ... OK * checking for code/documentation mismatches ... OK * checking Rd \usage sections ... OK * checking Rd contents ... OK * checking for unstated dependencies in examples ... OK * checking contents of ‘data’ directory ... OK * checking data for non-ASCII characters ... [0s/0s] OK * checking LazyData ... OK * checking data for ASCII and uncompressed saves ... OK * checking examples ... [0s/0s] OK * checking for unstated dependencies in ‘tests’ ... OK * checking tests ... [5s/5s] ERROR Running ‘LN-testing.R’ [1s/1s] Running ‘NB-testing.R’ [1s/1s] Running ‘Norm-testing.R’ [0s/0s] Running ‘Pois-testing.R’ [1s/1s] Running ‘gamma-testing.R’ [2s/2s] 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 > # (four) > 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 + ) > > 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 <- 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 = 9, + maxrestarts = 4) + ) > > stopifnot( + msg[1] == "Failed to converge. Restarting with new mixing proportions" + ) > > > > msg <- capture.output( + t12 <- 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) + ) > > # Output validation; > > # Output should be a list > stopifnot( + is.list(t12) + ) > > # With 14 elements > stopifnot( + length(t12) == 14 + ) > > # Fisher information matrix should be symmetric > stopifnot( + isSymmetric(t12$cov.estimates) + ) > > > # 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, t.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.08400328, tolerance = 4e-8 ) + ) > > stopifnot( + all.equal(as.numeric(t12$params), c(6.7430448, -2.9549985, 0.9375115, 1.7238887, -0.2716501, 1.1538932, 1.0963831, -0.5272682, 3.3533715) ) + ) Error: as.numeric(t12$params) and c(6.7430448, -2.9549985, 0.9375115, 1.7238887, -0.2716501, 1.1538932, .... are not equal: Mean relative difference: 1.795471e-08 Execution halted 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 > # (four) > 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) + ) > > stopifnot( + msg[1] == "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) + ) > > # Output validation; > > # Output should be a list > stopifnot( + is.list(t12) + ) > > # With 14 elements > stopifnot( + length(t12) == 14 + ) > > # Fisher information matrix should be symmetric > stopifnot( + isSymmetric(t12$cov.estimates) + ) > > > # 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-8 ) + ) > > stopifnot( + all.equal( t12$loglik, -77.17481, tolerance = 4e-8 ) + ) > > 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 = 3e-8 ) + ) > > > 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 = 3.2e-8 ) + ) > > > 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 = 2.5e-8 + ) + ) Error: t12$cov.estimates and matrix(data = c(0.0114492285, -0.0004087145, 0.0016883055, -0.001674646, .... are not equal: Mean relative difference: 2.523436e-08 Execution halted Running the tests in ‘tests/gamma-testing.R’ failed. Complete output: > require(glmMisrep) Loading required package: glmMisrep > > data <- data.frame( Y = c(45.857704, 26.966636, 1058.634073, 623.319053, 1087.177701, 19.323827, 86.047383, 606.742023, + 1647.937035, 266.180140, 157.192319, 281.382229, 648.672212, 140.771360, 102.904828, 380.052888, + 22.064627, 208.741717, 67.074619, 174.856091, 31.569650, 626.408259, 993.658540, 189.571355, + 374.603446, 1802.252002, 543.301728, 158.015234, 104.378652, 582.149021, 52.249839, 45.702009, + 11806.824361, 10053.322011, 1.087628, 55.884707, 271.186925, 178.080733, 563.668826, 1596.744067, + 8.947570, 398.868445, 39.580796, 1293.273355, 23.025039, 184.609120, 238.859666, 169.540935, + 775.025538, 4.616906), + X1 = c(1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0), + X2 = c(-1.072049676, 0.727369558, 1.420449831, 0.919953091, 0.274830496, 0.546589583, 0.766522073, 0.102791747, + 0.326183969, 1.929334793, -0.843138417, -0.064225873, 0.256683194, 0.625580034, 0.469241089, 0.255148171, + -0.235947534, 1.816474277, -1.692768826, -1.068503018, -0.137072147, 0.772976621, -0.719329599, -1.581414358, + 0.049968814, 0.184292275, -1.321527190, 0.593936587, -1.441344834, 0.493651003, -0.468055987, -0.312559805, + -0.196035448, -0.541855456, 1.913445157, 0.403104413, -1.503943713, 0.401514018, 1.613023384, -1.063038013, + 0.414808888, 0.417654550, 0.410841245, 0.218083137, -0.462372658, -0.908533492, 0.157572760, 0.750073708, + 0.005803132, 0.152076943), + X3 = c(0.48973164, 0.69612108, 0.81936453, 0.83451060, 0.97515909, 0.88015868, 0.88890374, 0.37991780, 0.89681143, 0.99601041, + 0.67524620, 0.92379599, 0.85120739, 0.41159392, 0.53689827, 0.77538594, 0.19803702, 0.95549912, 0.14601890, 0.80506128, + 0.12918729, 0.89932864, 0.74272902, 0.47642162, 0.29003290, 0.61241891, 0.62205612, 0.77209866, 0.83853287, 0.80933236, + 0.42349111, 0.81845100, 0.95771341, 0.73298222, 0.02518371, 0.63923492, 0.54736138, 0.57766185, 0.64674272, 0.54556027, + 0.76556145, 0.74711758, 0.74089894, 0.99431826, 0.49083626, 0.27663899, 0.85629864, 0.71527708, 0.62011519, 0.25683099), + Sex = c("Female", "Female", "Male", "Male", "Female", "Female", "Female", "Female", "Female", "Female", "Female", "Male", + "Female", "Male", "Male", "Female", "Female", "Male", "Male", "Female", "Female", "Female", "Male", "Male", + "Male", "Female", "Male", "Female", "Male", "Female", "Male", "Male", "Male", "Male", "Female", "Female", + "Female", "Female", "Male", "Male", "Female", "Female", "Male", "Female", "Male", "Male", "Male", "Female", + "Male", "Female"), + Race = c("Other", "White", "Black", "White", "White", "Other", "White", "White", "Other", "Other", "Other", "Black", "White", "Other", + "Black", "Black", "Black", "Black", "White", "Black", "White", "White", "Black", "White", "Black", "Black", "Black", "Other", + "Other", "Black", "White", "Other", "Black", "White", "Other", "White", "White", "Black", "Black", "White", "Other", "White", + "Black", "Other", "White", "White", "White", "White", "Black", "Black"), + V_star = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 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(gammaRegMisrepEM(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 (should be Y, not y) > stopifnot( + t1$message == "object 'y' not found" + ) > > > t2 <- tryCatch(gammaRegMisrepEM(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(gammaRegMisrepEM(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(gammaRegMisrepEM(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(gammaRegMisrepEM(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(gammaRegMisrepEM(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(gammaRegMisrepEM(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(gammaRegMisrepEM(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(gammaRegMisrepEM(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 is not present in formula argument > stopifnot( + t9$message == "v_star variable must be specified in 'formula'" + ) > > # EM algorithm should fail to converge within the specified number of attempts > # (four) > t10 <- tryCatch( + capture.output(gammaRegMisrepEM(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 <- gammaRegMisrepEM(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 = 30, + maxrestarts = 4) + ) > > stopifnot( + msg[1] == "Failed to converge. Restarting with new mixing proportions" + ) > > > # This should succeed; > msg <- capture.output( + t12 <- gammaRegMisrepEM(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) + ) > > > > # Output validation; > > # Outpute should be a list > stopifnot( + is.list(t12) + ) > > # With 14 elements > stopifnot( + length(t12) == 14 + ) > > # Fisher information matrix should be symmetric > stopifnot( + isSymmetric(t12$cov.estimates) + ) > > > # 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, t.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.1079016 , tolerance = 1.4e-7) + ) > > stopifnot( + all.equal(as.numeric(t12$params), c(6.14834270, 1.11254217, 1.85164785, -0.05971879, 3.68687601, 1.03378987, -1.03786486, 0.01177176, 2.11841547) ) + ) > > stopifnot( + all.equal( t12$loglik, -303.1538, tolerance = 4e-8 ) + ) > > stopifnot( + all.equal( t12$posterior, c(9.999299e-01, 9.999881e-01, 9.999295e-01, 2.103412e-02, 9.988509e-01, 9.999868e-01, 9.998953e-01, 3.558117e-12, + 3.158194e-15, 1.047717e-10, 3.497216e-21, 9.999045e-01, 6.002373e-16, 5.375916e-19, 9.972457e-01, 3.068774e-11, + 9.999950e-01, 9.999795e-01, 9.999914e-01, 9.999972e-01, 5.394296e-09, 2.489884e-12, 9.998797e-01, 9.999950e-01, + 1.426431e-29, 2.989857e-17, 9.999592e-01, 9.995238e-01, 9.993700e-01, 1.407886e-17, 9.997910e-01, 9.999866e-01, + 6.992912e-09, 5.881790e-22, 9.999294e-01, 9.963445e-01, 9.976430e-01, 9.998867e-01, 9.999221e-01, 1.061977e-02, + 9.999959e-01, 9.996503e-01, 9.999986e-01, 1.269408e-05, 9.999974e-01, 9.998703e-01, 9.998375e-01, 9.999912e-01, + 9.993344e-01, 9.999934e-01), tolerance = 2.8e-8 ) + ) > > > stopifnot( + all.equal( t12$all.loglik, c(-323.9350, -307.5493, -305.8435, -303.7539, -303.4699, -303.4653, -303.4630, -303.4617, -303.4607, -303.4600, + -303.4595, -303.4590, -303.4586, -303.4581, -303.4577, -303.4573, -303.4568, -303.4562, -303.4555, -303.4546, + -303.4534, -303.4517, -303.4491, -303.4447, -303.4369, -303.4219, -303.3919, -303.3337, -303.2463, -303.1768, + -303.1562, -303.1540, -303.1538, -303.1538, -303.1538, -303.1538, -303.1538), tolerance = 9e-8 ) + ) > > > stopifnot( + all.equal(t12$cov.estimates, + matrix(data = c(2.630725e-03, 0.0006112473, 0.0001634518, 5.617343e-05, -6.832485e-05, -0.0001355185, -0.0001500114, -4.349024e-05, -0.0001856351, 8.435390e-06, + 6.112473e-04, 1.5012984017, 0.0093211267, 2.562910e-03, -3.769762e-03, -0.0070031944, -0.0080879663, -2.985069e-03, -0.0090989843, 1.480260e-03, + 1.634518e-04, 0.0093211267, 0.0536024555, -9.696850e-03, -3.032083e-03, -0.0396014536, -0.0160312824, -1.492919e-02, -0.0164256693, -7.126126e-03, + 5.617343e-05, 0.0025629100, -0.0096968496, 1.537242e-02, 2.629801e-03, -0.0022881318, 0.0023638365, 4.015305e-03, 0.0016797283, 2.267238e-03, + -6.832485e-05, -0.0037697616, -0.0030320829, 2.629801e-03, 5.854989e-03, -0.0029843267, 0.0031799149, 2.419577e-03, 0.0034715873, 2.819921e-05, + -1.355185e-04, -0.0070031944, -0.0396014536, -2.288132e-03, -2.984327e-03, 0.0622968809, 0.0022770254, -2.445532e-03, 0.0006865788, -7.372706e-04, + -1.500114e-04, -0.0080879663, -0.0160312824, 2.363836e-03, 3.179915e-03, 0.0022770254, 0.0176896392, 7.219233e-03, 0.0072975355, 2.140232e-03, + -4.349024e-05, -0.0029850693, -0.0149291928, 4.015305e-03, 2.419577e-03, -0.0024455320, 0.0072192326, 2.655431e-02, 0.0123892138, -3.532181e-04, + -1.856351e-04, -0.0090989843, -0.0164256693, 1.679728e-03, 3.471587e-03, 0.0006865788, 0.0072975355, 1.238921e-02, 0.0217022826, 9.302658e-04, + 8.435390e-06, 0.0014802596, -0.0071261264, 2.267238e-03, 2.819921e-05, -0.0007372706, 0.0021402318, -3.532181e-04, 0.0009302658, 1.533717e-02), + ncol = 10, nrow = 10, byrow = TRUE, dimnames = list( c("lambda", names(t12$params)), c("lambda", names(t12$params)) ) ) + ) + ) Error: t12$cov.estimates and matrix(data = c(0.002630725, 0.0006112473, 0.0001634518, 5.617343e-05, .... are not equal: Mean relative difference: 1.634243e-08 Execution halted * checking PDF version of manual ... [3s/3s] OK * checking HTML version of manual ... [0s/0s] OK * checking for non-standard things in the check directory ... OK * checking for detritus in the temp directory ... OK * DONE Status: 1 ERROR, 2 NOTEs