test_that("kappa_hat equals the explicit projection-matrix formula", { set.seed(1) n <- 20 xy <- expand.grid(x = 1:5, y = 1:4) D <- as.matrix(dist(xy)); Wm <- 1 / D; diag(Wm) <- 0; Wm <- Wm / sum(Wm) X <- cbind(1, rnorm(n), rbinom(n, 1, 0.5)) y <- rnorm(n) M <- X %*% solve(t(X) %*% X) %*% t(X) In <- diag(n) num <- as.numeric(t(y) %*% (In - M) %*% Wm %*% y) den <- as.numeric(t(y) %*% Wm %*% (In - M) %*% Wm %*% y) ref <- num / den expect_equal(kappa_hat(y, Wm, X), ref, tolerance = 1e-10) }) test_that("kappa_hat returns a single finite number", { set.seed(2) n <- 12; xy <- expand.grid(x = 1:4, y = 1:3) D <- as.matrix(dist(xy)); Wm <- 1 / D; diag(Wm) <- 0; Wm <- Wm / sum(Wm) X <- cbind(1, rep(0:1, length.out = n)) k <- kappa_hat(rnorm(n), Wm, X) expect_length(k, 1L) expect_true(is.finite(k)) })