-
Notifications
You must be signed in to change notification settings - Fork 0
/
test-mahalanobis_single_select_by_md.R
46 lines (35 loc) · 1.1 KB
/
test-mahalanobis_single_select_by_md.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
skip_if_not_installed("modi")
skip_if_not_installed("norm2")
library(testthat)
library(lavaan)
mod <-
'
iv1 ~~ iv2
m1 ~ iv1 + iv2
dv ~ m1
'
dat <- pa_dat
dat0 <- dat[1:50, ]
dat0[1, 2] <- dat0[2, 3] <- dat0[3, 4] <- dat0[4, ] <- NA
head(dat0)
suppressWarnings(fit0 <- lavaan::sem(mod, dat0, missing = "fiml.x"))
fit0_data <- lavInspect(fit0, "data")
colnames(fit0_data) <- lavNames(fit0)
head(fit0_data)
md_fit0 <- mahalanobis_rerun(fit0)
md_ordered <- order(md_fit0, decreasing = TRUE, na.last = NA)
md_top <- 4
md_selected <- md_ordered[seq_len(md_top)]
md_selected <- md_selected[!is.na(md_selected)]
rerun_md_top <- suppressWarnings(lavaan_rerun(fit0, to_rerun = md_selected, parallel = FALSE))
rerun_out <- suppressWarnings(lavaan_rerun(fit0, md_top = 4, parallel = FALSE))
md_fit <- mahalanobis_rerun(fit0)
md_fit_selected <- md_fit[rerun_out$selected, , drop = FALSE]
md_rerun <- mahalanobis_rerun(rerun_out)
#md_stats <- mahalanobis(dat0, colMeans(dat0), cov(dat0))
test_that("Compare Mahalanobis distances", {
expect_equal(ignore_attr = TRUE,
md_fit_selected,
md_rerun
)
})