tests/testthat/test-bw.F.SBC.pi.R

test_that("bw.F.SBC.pi() correctly handles pilot bandwidth selection and returns a valid bandwidth", {
  bw <- bw.F.SBC.pi(biased_models[[1]])
  expect_type(bw, "double")
  expect_gt(bw, 0)
})

test_that("bw.F.SBC.pi() correctly handles different kernels", {
  supported_kernels <- c("gaussian", "epanechnikov", "biweight", "cosine", "optcosine")

  bw_values <- sapply(supported_kernels, function(k) {
    bw.F.SBC.pi(biased_models[[1]], kernel = k)
  })

  expect_false(any(duplicated(bw_values)),
    info = "Different kernels should produce different bandwidths"
  )
})

test_that("bw.F.SBC.pi() throws an error for unsupported kernels", {
  unsupported_kernels <- c("rectangular")

  lapply(unsupported_kernels, function(k) {
    expect_error(
      bw.F.SBC.pi(biased_models[[1]], kernel = k),
      "not supported for plug-in pilot bandwidth"
    )
  })
})

test_that("cdf.bd() with bw.F.SBC.pi() produces stable plots", {
  skip_on_os(os = c("windows", "linux"))

  supported_kernels <- c("gaussian", "biweight", "cosine", "optcosine")

  lapply(seq_along(biased_models), function(i) {
    lapply(supported_kernels, function(k) {
      vdiffr::expect_doppelganger(
        paste0("cdf.bd_bw.F.SBC.pi_model_", i, "_kernel_", k),
        function() {
          cdf.bd(biased_models[[i]], bw = "bw.F.SBC.pi", kernel = k, plot = TRUE)
          suppressWarnings(curve(
            {
              \(.) cdf_list[[i]](.)
            }(x),
            col = "magenta",
            add = TRUE
          ))
        }
      )
    })
  })
})

Try the WData package in your browser

Any scripts or data that you put into this service are public.

WData documentation built on Nov. 2, 2026, 1:10 a.m.