Instead of using row numbers (case.idx in the
lavaan object), lavaan_rerun() from the
package semfindr
(Cheung & Lai, 2026) supports user
supplied case IDs. This can make the output more readable.
library(semfindr)
dat <- pa_dat
# Add case id
dat <- cbind(id = paste0("case", seq_len(nrow(dat))), dat)
head(dat)
#> id m1 dv iv1 iv2
#> 1 case1 0.32067106 1.4587148 0.2055776 -0.42187811
#> 2 case2 0.15360231 -0.3809220 0.1853543 0.15229953
#> 3 case3 0.35136439 -0.4886773 0.9151424 1.16670950
#> 4 case4 -0.56529330 -0.9766142 0.2884440 0.04563409
#> 5 case5 -1.60657017 -1.0948066 -0.5756171 -0.18184854
#> 6 case6 0.03143301 0.5859886 0.1420111 0.06286986Suppose that the data set has a column of case IDs. A model is fitted
to this data set using lavaan::sem():
Rerun n Times
We refit the model 100 times, each time with one case removed.
Although the id column is not stored in
lavaan, it can be supplied through the argument
case_id:
fit_rerun <- lavaan_rerun(fit,
case_id = dat$id)
#> The expected CPU time is 10.5 second(s).
#> Could be faster if run in parallel.
#> Error:
#> ! lavaan->lav_lavdata():
#> data= argument is not a data.frame, but of class 'numeric'
#> Timing stopped at: 0.03 0 0.03The list of reruns now uses id as the names:
head(fit_rerun$rerun[1:3])
#> Error:
#> ! object 'fit_rerun' not foundAs shown below, most diagnostic functions will use user supplied case IDs in their displays, making it easier to locate them in the original data set.
Diagnostic Functions
Standardized Changes in Estimates
fit_est_change <- est_change(fit_rerun)
#> Error:
#> ! object 'fit_rerun' not found
fit_est_change
#> Error:
#> ! object 'fit_est_change' not found
fit_est_change_paths_only <- est_change(fit_rerun,
parameters = c("m1 ~ iv1",
"m1 ~ iv2",
"dv ~ m1"))
#> Error:
#> ! object 'fit_rerun' not found
fit_est_change_paths_only
#> Error:
#> ! object 'fit_est_change_paths_only' not foundRaw Changes in Estimates
fit_est_change_raw <- est_change_raw(fit_rerun)
#> Error:
#> ! object 'fit_rerun' not found
fit_est_change_raw
#> Error:
#> ! object 'fit_est_change_raw' not foundMahalanobis Distance
fit_md <- mahalanobis_rerun(fit_rerun)
#> Error:
#> ! object 'fit_rerun' not found
fit_md
#> Error:
#> ! object 'fit_md' not foundChanges in Fit Measures
fit_mc <- fit_measures_change(fit_rerun,
fit_measures = c("chisq", "cfi", "tli", "rmsea"))
#> Error:
#> ! object 'fit_rerun' not found
fit_mc
#> Error:
#> ! object 'fit_mc' not foundAll-In-One-Function
fit_influence <- influence_stat(fit_rerun)
#> Error:
#> ! object 'fit_rerun' not found
fit_influence
#> Error:
#> ! object 'fit_influence' not foundDiagnostic Plots
Generalized Cook’s Distance
gcd_plot(fit_influence, largest_gcd = 3)
#> Error:
#> ! object 'fit_influence' not foundMahalanobis Distance
md_plot(fit_influence,
largest_md = 3)
#> Error:
#> ! object 'fit_influence' not foundFit Measure vs. Generalized Cook’s Distance
gcd_gof_plot(fit_influence,
fit_measure = "rmsea",
largest_gcd = 3,
largest_fit_measure = 3)
#> Error:
#> ! object 'fit_influence' not foundBubble Plot
gcd_gof_md_plot(fit_influence,
fit_measure = "rmsea",
largest_gcd = 3,
largest_fit_measure = 3,
largest_md = 3,
circle_size = 15)
#> Error:
#> ! object 'fit_influence' not foundReferences
Cheung, S. F., & Lai, M. H. C. (2026). semfindr: An R package
for identifying influential cases in structural equation modeling.
Multivariate Behavioral Research. https://doi.org/10.1080/00273171.2026.2634293
