base_iris <- iris names(base_iris) <- c("y1", "y2", "x1", "x2", "species") test_that("fixest: r2", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(y1 ~ x1 + x2 + x2^2 | species, base_iris) r2_res <- performance::r2(res) expect_equal(r2_res$R2, fixest::fitstat(res, "r2")[[1]], ignore_attr = TRUE) expect_equal(r2_res$R2_adjusted, fixest::fitstat(res, "ar2")[[1]], ignore_attr = TRUE) expect_equal(r2_res$R2_within, fixest::fitstat(res, "wr2")[[1]], ignore_attr = TRUE) expect_equal(r2_res$R2_within_adjusted, fixest::fitstat(res, "war2")[[1]], ignore_attr = TRUE) }) test_that("fixest: overdispersion", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(y1 ~ x1 + x2 + x2^2 | species, base_iris) expect_error( check_overdispersion(res), "can only be used for models from Poisson" ) }) test_that("fixest: outliers", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(y1 ~ x1 + x2 + x2^2 | species, base_iris) outliers_list <- suppressMessages(check_outliers(res)) expect_identical(attr(outliers_list, "outlier_count"), list()) }) test_that("fixest: model_performance", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(y1 ~ x1 + x2 + x2^2 | species, base_iris) perf <- model_performance(res) expect_equal(perf$AIC, 107.743, tolerance = 1e-3) expect_equal(perf$BIC, 125.807, tolerance = 1e-3) expect_equal(perf$R2, 0.837, tolerance = 1e-3) expect_equal(perf$R2_adjusted, 0.832, tolerance = 1e-3) expect_equal(perf$R2_within, 0.573, tolerance = 1e-3) expect_equal(perf$R2_within_adjusted, 0.564, tolerance = 1e-3) expect_equal(perf$RMSE, 0.333, tolerance = 1e-3) expect_equal(perf$Sigma, 0.340, tolerance = 1e-3) }) test_that("fixest_multi: r2", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(c(y1, y2) ~ x1 + csw(x2, x2^2) | species, base_iris) r2_res <- performance::r2(res) expect_equal(unname(r2_res[[1]]$R2), 0.837, tolerance = 1e-3) }) test_that("fixest_multi: overdispersion", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(c(y1, y2) ~ x1 + csw(x2, x2^2) | species, base_iris) expect_error( check_overdispersion(res), "can only be used for models from Poisson" ) }) test_that("fixest_multi: outliers", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(c(y1, y2) ~ x1 + csw(x2, x2^2) | species, base_iris) outliers_list <- suppressMessages(check_outliers(res)[[1]]) expect_identical(attr(outliers_list, "outlier_count"), list()) }) test_that("fixest_multi: model_performance", { skip_if_not_installed("fixest") fixest::setFixest_nthreads(1) res <- fixest::feols(c(y1, y2) ~ x1 + csw(x2, x2^2) | species, base_iris) res2 <- fixest::feols(y1 ~ x1 + x2 + x2^2 | species, base_iris) perf <- model_performance(res) perf2 <- model_performance(res2) expect_identical(perf[[2]], perf2) })