Nothing
# Test for multiple quantile functionality
test_that("mo.bqr.svy basic functionality works", {
set.seed(789) # Reproducibility
# Generate test data
n <- 25 # Small sample for speed
x <- rnorm(n)
y <- 1 + 2*x + rnorm(n, 0, 0.5)
data <- data.frame(x = x, y = y)
# Test multiple quantile regression
quantiles <- c(0.25, 0.5, 0.75)
fit <- mo.bqr.svy(y ~ x, data = data, quantile = quantiles, max_iter = 1500)
# Test basic structure
expect_s3_class(fit, "mo.bqr.svy")
expect_true(is.list(fit))
expect_true("fit" %in% names(fit))
expect_true("quantile" %in% names(fit))
expect_true("call" %in% names(fit))
# Test dimensions
expect_equal(length(fit$fit), 3) # three quantiles
expect_equal(fit$quantile, quantiles)
# Test that each fit has proper structure
for (i in 1:3) {
expect_true("directions" %in% names(fit$fit[[i]]))
expect_true("dir_1" %in% names(fit$fit[[i]]$directions))
expect_true("beta" %in% names(fit$fit[[i]]$directions$dir_1))
expect_true("sigma" %in% names(fit$fit[[i]]$directions$dir_1))
expect_true(all(is.finite(fit$fit[[i]]$directions$dir_1$beta)))
expect_true(is.finite(fit$fit[[i]]$directions$dir_1$sigma))
}
# Extract slope coefficients (assuming "x" is the 2nd coefficient)
beta1_values <- sapply(fit$fit, function(f) {
f$directions$dir_1$beta[2]
})
# Allow some flexibility due to randomness in simulation
expect_true(all(diff(beta1_values) >= -0.5))
})
test_that("mo.bqr.svy handles different numbers of quantiles", {
set.seed(101112)
n <- 20
x <- rnorm(n)
y <- x + rnorm(n, 0, 0.3)
data <- data.frame(x = x, y = y)
# Test with 2 quantiles
fit_2 <- mo.bqr.svy(y ~ x, data = data, quantile = c(0.3, 0.7), max_iter = 1500)
expect_s3_class(fit_2, "mo.bqr.svy")
expect_equal(length(fit_2$fit), 2)
# Test with 5 quantiles
fit_5 <- mo.bqr.svy(y ~ x, data = data,
quantile = c(0.1, 0.25, 0.5, 0.75, 0.9), max_iter = 1500)
expect_s3_class(fit_5, "mo.bqr.svy")
expect_equal(length(fit_5$fit), 5)
})
test_that("mo.bqr.svy input validation", {
n <- 15
data <- data.frame(x = rnorm(n), y = rnorm(n))
# Test invalid quantiles
expect_error(mo.bqr.svy(y ~ x, data = data, quantile = c(0.5, 1.5)))
expect_error(mo.bqr.svy(y ~ x, data = data, quantile = c(-0.1, 0.5)))
expect_error(mo.bqr.svy(y ~ x, data = data, quantile = c())) # empty
# Test unsorted quantiles
fit <- mo.bqr.svy(y ~ x, data = data, quantile = c(0.7, 0.3, 0.5), max_iter = 1500)
expect_equal(fit$quantile, c(0.3, 0.5, 0.7)) # Should be sorted
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.