fit_measures_change_approx {semfindr} | R Documentation |
Case Influence on Fit Measures (Approximate)
Description
Gets a lavaan::lavaan()
output and computes the
approximate change
in selected fit measures if a case is included.
Usage
fit_measures_change_approx(
fit,
fit_measures = c("chisq", "cfi", "rmsea", "tli"),
baseline_model = NULL,
case_id = NULL,
allow_inadmissible = FALSE,
skip_all_checks = FALSE
)
Arguments
fit |
The output from |
fit_measures |
The argument |
baseline_model |
The argument |
case_id |
If it is a character vector of length equals to the
number of cases (the number of rows in the data in |
allow_inadmissible |
If |
skip_all_checks |
If |
Details
For each case, fit_measures_change_approx()
computes the
approximate differences in selected fit measures with and
without this case:
(Fit measure with all case) - (Fit measure without this case).
If the value of a case is positive, including the case increases an estimate.
If the value of a case is negative, including the case decreases an estimate.
Note that an increase is an improvement in fit for goodness of fit measures such as CFI and TLI, but a decrease is an improvement in fit for badness of fit measures such as RMSEA and model chi-square. This is a measure of the influence of a case on a fit measure if it is included.
The model is not refitted. Therefore, the result is only an
approximation of that of fit_measures_change()
. However, this
approximation is useful for identifying potentially influential
cases when the sample size is very large or the model takes a long
time to fit. This function can be used to identify potentially
influential cases quickly and then select them to conduct the
leave-one-out sensitivity analysis using lavaan_rerun()
and
fit_measures_change()
.
For the technical details, please refer to the vignette
on this approach: vignette("casewise_scores", package = "semfindr")
Supports both single-group and multiple-group models. (Support for multiple-group models available in 0.1.4.8 and later version).
Value
An fit_measures_change
-class object, which is
matrix with the number of columns equals to the number of
requested fit measures, and the number of rows equals to the number
of cases. The row names are case identification values.
A print method is available for user-friendly output.
Author(s)
Idea by Mark Hok Chio Lai https://orcid.org/0000-0002-9196-7406, implemented by Shu Fai Cheung https://orcid.org/0000-0002-9871-9448.
Examples
library(lavaan)
# A path model
dat <- pa_dat
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)
# Approximate changes
out_approx <- fit_measures_change_approx(fit, fit_measures = "chisq")
head(out_approx)
# Fit the model several times. Each time with one case removed.
# For illustration, do this only for four selected cases
fit_rerun <- lavaan_rerun(fit, parallel = FALSE,
to_rerun = 1:5)
# Compute the changes in chisq if a case is included
# vs. if this case is excluded.
# That is, case influence on model chi-squared.
out <- fit_measures_change(fit_rerun, fit_measures = "chisq")
# Case influence, for the first few cases
head(out)
# Compare the results
plot(out_approx[1:5, "chisq"], out)
abline(a = 0, b = 1)
# 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)
out_approx <- fit_measures_change_approx(fit, fit_measures = "chisq")
head(out_approx)
fit_rerun <- lavaan_rerun(fit, parallel = FALSE,
to_rerun = 1:5)
# Compute the changes in chisq if a case is included
# vs. if this case is excluded.
# That is, case influence on fit measures.
out <- fit_measures_change(fit_rerun, fit_measures = "chisq")
# Results excluding a case, for the first few cases
head(out)
# Compare the results
plot(out_approx[1:5, "chisq"], out)
abline(a = 0, b = 1)
# 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::sem(mod, dat)
out_approx <- fit_measures_change_approx(fit, fit_measures = "chisq")
head(out_approx)
fit_rerun <- lavaan_rerun(fit, parallel = FALSE,
to_rerun = 1:5)
# Compute the changes in chisq if a case is excluded
# vs. if this case is included.
# That is, case influence on model chi-squared.
out <- fit_measures_change(fit_rerun, fit_measures = "chisq")
# Case influence, for the first few cases
head(out)
# Compare the results
plot(out_approx[1:5, "chisq"], out)
abline(a = 0, b = 1)