Nothing
# Tests for SFA-based Malmquist index (P4)
# Create panel data for Malmquist tests
set.seed(42)
malm_panels <- lapply(1:3, function(t) {
sim <- simulate_metafrontier(
n_groups = 2, n_per_group = 40,
tech_gap = c(0, 0.3 + 0.05 * t),
sigma_u = c(0.2, 0.3),
seed = 42 + t
)
sim$data$time <- t
sim$data$id <- seq_len(nrow(sim$data))
sim$data
})
malm_data <- do.call(rbind, malm_panels)
test_that("SFA Malmquist produces valid output", {
malm <- malmquist_meta(
log_y ~ log_x1 + log_x2,
data = malm_data,
group = "group",
time = "time",
method = "sfa"
)
expect_s3_class(malm, "malmquist_meta")
expect_true(nrow(malm$malmquist) > 0)
expect_true(all(c("MPI", "TEC", "TGC", "TC") %in% names(malm$malmquist)))
})
test_that("SFA Malmquist TEC x TGC x TC* approximates MPI", {
malm <- malmquist_meta(
log_y ~ log_x1 + log_x2,
data = malm_data,
group = "group",
time = "time",
method = "sfa"
)
m <- malm$malmquist
valid <- complete.cases(m[, c("MPI", "TEC", "TGC", "TC")])
if (sum(valid) > 0) {
product <- m$TEC[valid] * m$TGC[valid] * m$TC[valid]
expect_equal(product, m$MPI[valid], tolerance = 0.1)
}
})
test_that("DEA Malmquist still works with method arg", {
malm_dea <- malmquist_meta(
log_y ~ log_x1 + log_x2,
data = malm_data,
group = "group",
time = "time",
method = "dea"
)
expect_s3_class(malm_dea, "malmquist_meta")
expect_true(nrow(malm_dea$malmquist) > 0)
})
test_that("SFA Malmquist TGR values are positive", {
malm <- malmquist_meta(
log_y ~ log_x1 + log_x2,
data = malm_data,
group = "group",
time = "time",
method = "sfa"
)
valid <- malm$tgr$TGR_from[is.finite(malm$tgr$TGR_from)]
expect_true(all(valid > 0))
})
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.