library(testthat)
library(sleev)
test_that("check default values from helper_skips.R", {
expect_equal(rho , -.3)
expect_equal(p , 0.3)
expect_equal(hn_scale , 1)
expect_equal(nsieve , 20)
expect_equal(NSIM , 20)
expect_equal(n , 1000)
expect_equal(n2 , 400)
expect_equal(alpha , 0.3)
expect_equal(beta , 0.4)
})
test_that("MEXY loop", {
skip_on_cran()
skip_if(SKIP_CRAN_TESTS)
# setwd(wd)
# fn_out = paste0(njob, ".Rdata")
set.seed(12345)
results = matrix(NA, nrow=NSIM, ncol=2)
colnames(results) = c("Effect", "SE")
nsim = 1
while (nsim <= NSIM) {
### generate data
dat <- generate_data()
data <- dat$data
Bspline <- dat$Bspline
# user is missing either splines or MASS package
skip_if(is.null(data) || is.null(Bspline))
### verify data
expect_vector(data["Y"])
expect_vector(data["X"])
expect_vector(data["Y_tilde"])
expect_vector(data["X_tilde"])
expect_vector(data[colnames(Bspline)])
res = linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1, verbose=FALSE)
if (sum(is.na(res$coefficients)) == 0) {
results[nsim,] = res$coefficients[2,1:2]
nsim = nsim+1
if (nsim%%10 == 0) {
print(paste(nsim, "replicates done."))
}
}
}
# Sep 22: 125 sec elapsed
# $coefficients
# Estimate SE Statistic p-value
# Intercept 0.2566482 0.03637235 7.056134 1.711964e-12
# X 0.3811712 0.03559319 10.709107 0.000000e+00
#
# $sigma
# [1] 0.9869545
#
# $covariance
# [,1] [,2]
# [1,] 1.322948e-03 -3.398867e-05
# [2,] -3.398867e-05 1.266875e-03
## test all results
expect_equal(as.vector(results), c(0.416922224791497,0.421737071865375,0.449369990588884,0.404940432955734,0.441158248372993,0.420228349283308,0.408144639683189,0.353816560047355,0.374311184655038,0.35189760767373,0.364188118169361,0.430859513855779,0.475390564039591,0.466674129567292,0.390630455867759,0.400706508262216,0.385259563151863,0.413198746826857,0.408625387823128,0.381171236418505,0.0374935035224319,0.0400514928365967,0.0375980846931493,0.0365689812070292,0.0344668558168398,0.0386203865132133,0.0393329246575616,0.0407566656906075,0.0368147916449737,0.0386479005173487,0.0379292995598047,0.03914357919284,0.0366241801208748,0.0405623820990424,0.0358255980316633,0.0403228646102295,0.0372884327822953,0.0373447475585087,0.0388191019382307,0.0355931871009512))
## tests last res
expect_equal(as.vector(res[["coefficients"]]), c(0.256648214727935,0.381171236418505,0.0363723532152385,0.0355931871009512,7.05613445490269,10.7091066427237,1.71196390397199e-12,0))
expect_equal(res[["sigma"]], 0.986954535271583)
expect_equal(as.vector( res[["covariance"]]), c(0.00132294807841407,-3.39886726125453e-05,-3.39886726125453e-05,0.00126687496800332))
expect_true(res[["converge"]])
expect_true(res[["converge_cov"]])
})
test_that("single iteration cubic", {
set.seed(12345)
### generate data
dat <- generate_data()
data <- dat$data
Bspline <- dat$Bspline
# user is missing either splines or MASS package
skip_if(is.null(data) || is.null(Bspline))
### verify data
expect_false(is.null(data))
expect_false(is.null(Bspline))
expect_vector(data["Y"])
expect_vector(data["X"])
expect_vector(data["Y_tilde"])
expect_vector(data["X_tilde"])
expect_vector(data[colnames(Bspline)])
res = linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1)
expect_equal(as.vector(res[["coefficients"]]), c(0.288000325625334,0.416922224791497,0.036445693699495,0.0374935035213232,7.90217708572041,11.1198523913452,2.77555756156289e-15,0))
expect_equal(res[["sigma"]], 1.01304717554374)
expect_equal(as.vector( res[["covariance"]]), c(0.00132828858923741,-0.000111130454918251,-0.000111130454918251,0.00140576280630348))
expect_true(res[["converge"]])
expect_true(res[["converge_cov"]])
})
test_that("single iteration histogram", {
set.seed(12345)
### generate data
dat <- generate_data("histogram")
data <- dat$data
Bspline <- dat$Bspline
# user is missing either splines or MASS package
skip_if(is.null(data) || is.null(Bspline))
### verify data
expect_false(is.null(data))
expect_false(is.null(Bspline))
expect_vector(data["Y"])
expect_vector(data["X"])
expect_vector(data["Y_tilde"])
expect_vector(data["X_tilde"])
expect_vector(data[colnames(Bspline)])
res = linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1)
expect_equal(as.vector(res[["coefficients"]]), c(0.282663936031731,0.414875913181448,0.0359350685141081,0.0374334492112151,7.86596346465173,11.0830265958273,3.66373598126302e-15,0))
expect_equal(res[["sigma"]], 1.02778853831618)
expect_equal(as.vector( res[["covariance"]]), c(0.00129132914911364,-8.59902916973147e-05,-8.59902916973147e-05,0.00140126311984862))
expect_true(res[["converge"]])
expect_true(res[["converge_cov"]])
})
test_that("single iteration quadratic", {
set.seed(12345)
### generate data
dat <- generate_data("quadratic")
data <- dat$data
Bspline <- dat$Bspline
# user is missing either splines or MASS package
skip_if(is.null(data) || is.null(Bspline))
### verify data
expect_false(is.null(data))
expect_false(is.null(Bspline))
expect_vector(data["Y"])
expect_vector(data["X"])
expect_vector(data["Y_tilde"])
expect_vector(data["X_tilde"])
expect_vector(data[colnames(Bspline)])
res = linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1)
expect_equal(as.vector(res[["coefficients"]]), c(0.285986700184186,0.415752239593525,0.0363612977093676,0.0377064792460855,7.8651400857596,11.0260158971667,3.66373598126302e-15,0))
expect_equal(res[["sigma"]], 1.01656868034353)
expect_equal(as.vector( res[["covariance"]]), c(0.00132214397110926,-0.000108858715432434,-0.000108858715432434,0.00142177857713548))
expect_true(res[["converge"]])
expect_true(res[["converge_cov"]])
})
test_that("single iteration linear", {
set.seed(12345)
### generate data
dat <- generate_data("linear")
data <- dat$data
Bspline <- dat$Bspline
# user is missing either splines or MASS package
skip_if(is.null(data) || is.null(Bspline))
### verify data
expect_false(is.null(data))
expect_false(is.null(Bspline))
expect_vector(data["Y"])
expect_vector(data["X"])
expect_vector(data["Y_tilde"])
expect_vector(data["X_tilde"])
expect_vector(data[colnames(Bspline)])
res = linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1)
expect_equal(as.vector(res[["coefficients"]]), c(0.283549671920374,0.419193942728094,0.036188096643911,0.0377345448037876,7.83544033029666,11.1090234401348,4.66293670342566e-15,0))
expect_equal(res[["sigma"]], 1.01921044143961)
expect_equal(as.vector( res[["covariance"]]), c(0.00130957833870905,-0.000102885082209359,-0.000102885082209359,0.00142389587154905))
expect_true(res[["converge"]])
expect_true(res[["converge_cov"]])
})
test_that("missing values", {
set.seed(12345)
### generate data
dat <- generate_data()
data <- dat$data
Bspline <- dat$Bspline
# user is missing either splines or MASS package
skip_if(is.null(data) || is.null(Bspline))
# missing data
expect_error(linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), hn_scale=0.1), "No dataset is provided!")
# missing Y_unval
expect_error(linear2ph(Y="Y", X="X", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1), "The error-prone response Y_unval is not specified!")
# missing X_unval
expect_error(linear2ph(Y="Y", X="X", Y_unval="Y_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1), "The error-prone covariates X_unval is not specified!")
# missing Bspline
expect_error(linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", data=data, hn_scale=0.1), "The B-spline basis is not specified!")
# missing Y
expect_error(linear2ph(X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1), "The accurately measured response Y is not specified!")
# missing X
expect_error(linear2ph(Y="Y", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1), "The validated covariates in the second-phase are not specified!")
})
test_that("verbose", {
set.seed(12345)
### generate data
dat <- generate_data()
data <- dat$data
Bspline <- dat$Bspline
# user is missing either splines or MASS package
skip_if(is.null(data) || is.null(Bspline))
# expect printing message
expect_message(linear2ph(Y="Y", X="X", Y_unval="Y_tilde", X_unval="X_tilde", Bspline=colnames(Bspline), data=data, hn_scale=0.1, verbose=TRUE),"Calling C++ function TwoPhase_MLE0_MEXY", fixed=TRUE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.