test_that("lpcde default output", { set.seed(42) n=100 x_data = matrix(rnorm(1*n, mean=0, sd=1), ncol=1) y_data = matrix(rnorm(n, mean=0, sd=1)) y_grid = stats::quantile(y_data, seq(from=0.1, to=0.9, by=0.1)) # density estimation model2 = lpcde(x_data=x_data, y_data=y_data, y_grid=y_grid, x=0, bw=1.8) print(model2) confint(model2) coef(model2) vcov(model2) plot(model2) summary(model2, CIuniform=TRUE) confint(model2, CIuniform = TRUE) expect_equal(model2$opt$bw_type, "user provided") expect_equal(model2$opt$p, 2) expect_equal(model2$opt$q, 1) expect_equal(model2$opt$mu, 1) expect_equal(model2$opt$nu, 0) expect_equal(model2$opt$kernel, "epanechnikov") expect_equal(model2$opt$p_RBC, 3) expect_equal(model2$opt$q_RBC, 2) }) test_that("lpcde modified output", { set.seed(42) n=100 x_data = matrix(rnorm(1*n, mean=0, sd=1), ncol=1) y_data = matrix(rnorm(n, mean=0, sd=1)) y_grid = stats::quantile(y_data, seq(from=0.1, to=0.9, by=0.1)) # density estimation model2 = lpcde(x_data=x_data, y_data=y_data, y_grid=y_grid, x=0, mu=0, p=3, bw_type="imse-rot") summary(model2) expect_equal(model2$opt$bw_type, "imse-rot") expect_equal(model2$opt$p, 3) expect_equal(model2$opt$q, 1) expect_equal(model2$opt$mu, 0) expect_equal(model2$opt$nu, 0) expect_equal(model2$opt$kernel, "epanechnikov") expect_equal(model2$opt$p_RBC, 4) expect_equal(model2$opt$q_RBC, 2) }) test_that("error checking", { set.seed(42) n=100 x_data = matrix(rnorm(1*n, mean=0, sd=1), ncol=1) y_data = matrix(rnorm(n, mean=0, sd=1)) y_grid = stats::quantile(y_data, seq(from=0.1, to=0.9, by=0.1)) # density estimation # model2 = lpcde(x_data=x_data, y_data=y_data, y_grid=y_grid, x=0, p=2, q=1, p_RBC=2, q_RBC=1, bw=1.8) # expect_equal(model2$opt$p, model2$opt$p_RBC) # expect_equal(model2$opt$q, model2$opt$q_RBC) model2 = lpcde(x_data=x_data, y_data=y_data, y_grid=y_grid, x=0, kernel_type="triangular", bw=1.8, cov_flag="diag") expect_equal(model2$opt$kernel, "triangular") expect_equal(model2$opt$cov_flag, "diag") model2 = lpcde(x_data=x_data, y_data=y_data, y_grid=y_grid, x=0, kernel_type="triangular", bw=1.8, cov_flag="off") expect_equal(model2$CovMat$CovMat, NA) expect_equal(model2$CovMat$CovMat_RBC, NA) }) test_that("lpcde multivariate output", { set.seed(42) n=100 x_data = matrix(rnorm(2*n, mean=0, sd=1), ncol=2) y_data = matrix(rnorm(n, mean=0, sd=1)) y_grid = stats::quantile(y_data, seq(from=0.1, to=0.9, by=0.1)) # density estimation model2 = lpcde(x_data=x_data, y_data=y_data, y_grid=y_grid, x=matrix(c(0, 0), ncol=2), bw_type="imse-rot") summary(model2, CIuniform=TRUE) expect_equal(model2$opt$p, 2) expect_equal(model2$opt$q, 1) expect_equal(model2$opt$mu, 1) expect_equal(model2$opt$nu, 0) expect_equal(model2$opt$kernel, "epanechnikov") expect_equal(model2$opt$p_RBC, 3) expect_equal(model2$opt$q_RBC, 2) }) test_that("Properties of pdf estimator", { #Setting up simulation set.seed(30) n=100 x_data = matrix(rnorm(n, mean=0, sd=1)) y_data = matrix(rnorm(n, mean=x_data, sd=1)) y_grid = stats::quantile(y_data, seq(from=0.1, to=0.9, by=0.1)) #Regularized density estimation model_reg = lpcde::lpcde(x_data=x_data, y_data=y_data, y_grid=y_grid, x=0, bw=1, nonneg=TRUE, normalize=TRUE) #check integration to 1 grid_diff = c(diff(y_grid), diff(utils::tail(y_grid, 2))) c = sum(model_reg$Estimate[, 3]*grid_diff) expect_equal(1, c) #check nonegativity a_nng = any(model_reg$Estimate[,3]<0) expect_equal(a_nng, FALSE) #check all probabilities are less than 1 expect_equal(all(model_reg$Estimate[,3]<1), TRUE) })