mahalanobis_rerun {semfindr} | R Documentation |
Mahalanobis Distance on All Observed Variables
Description
Computes the Mahalanobis distance for each case on all observed variables in a model.
Usage
mahalanobis_rerun(
fit,
emNorm_arg = list(estimate.worst = FALSE, criterion = 1e-06)
)
Arguments
fit |
It can be the output from |
emNorm_arg |
No longer used. Kept for backward compatibility. |
Details
mahalanobis_rerun()
gets a lavaan_rerun()
or
lavaan::lavaan()
output and computes the Mahalanobis distance for
each case on all observed variables.
If there are no missing values, stats::mahalanobis()
will be used
to compute the Mahalanobis distance.
If there are missing values on the observed predictors, the means
and variance-covariance matrices will be estimated by maximum
likelihood using lavaan::lavCor()
. The estimates will be passed
to modi::MDmiss()
to compute the Mahalanobis distance.
Supports both single-group and multiple-group models. For multiple-group models, the Mahalanobis distance for each case is computed using the means and covariance matrix of the group this case belongs to. (Support for multiple-group models available in 0.1.4.8 and later version).
Value
A md_semfindr
-class object, which is
a one-column matrix (a column vector) of the Mahalanobis
distance for each case. The row names are the case identification
values used in lavaan_rerun()
.
A print method is available for user-friendly output.
Author(s)
Shu Fai Cheung https://orcid.org/0000-0002-9871-9448.
References
Mahalanobis, P. C. (1936). On the generalized distance in statistics. Proceedings of the National Institute of Science of India, 2, 49-55.
Examples
library(lavaan)
dat <- pa_dat
# The model
mod <-
"
m1 ~ a1 * iv1 + a2 * iv2
dv ~ b * m1
a1b := a1 * b
a2b := a2 * b
"
# Fit the model
fit <- lavaan::sem(mod, dat)
summary(fit)
# Fit the model n times. Each time with one case removed.
# For illustration, do this only for selected cases.
fit_rerun <- lavaan_rerun(fit, parallel = FALSE,
to_rerun = 1:10)
# Compute the Mahalanobis distance for each case
out <- mahalanobis_rerun(fit_rerun)
# Results excluding a case, for the first few cases
head(out)
# Compute the Mahalanobis distance using stats::mahalanobis()
md1 <- stats::mahalanobis(dat, colMeans(dat), stats::cov(dat))
# Compare the results
head(md1)
# A CFA model
dat <- cfa_dat
mod <-
"
f1 =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6
f1 ~~ f2
"
# Fit the model
fit <- lavaan::cfa(mod, dat)
fit_rerun <- lavaan_rerun(fit, parallel = FALSE,
to_rerun = 1:10)
mahalanobis_rerun(fit_rerun)
# A latent variable model
dat <- sem_dat
mod <-
"
f1 =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6
f3 =~ x7 + x8 + x9
f2 ~ a * f1
f3 ~ b * f2
ab := a * b
"
# Fit the model
fit <- lavaan::cfa(mod, dat)
fit_rerun <- lavaan_rerun(fit, parallel = FALSE,
to_rerun = 1:10)
mahalanobis_rerun(fit_rerun)