<a href=“https://docs.google.com/document/d/1Jq_J5w7UO4N0TfBOr2A9dfxOul0ktBGQ2VVTKmTlFvA/edit?usp=sharing
require(lavaan)
## Loading required package: lavaan
## This is lavaan 0.6-19
## lavaan is FREE software! Please report any bugs.
SimData <- read.table("SimData.txt", header = TRUE) ;
Fig10.1Model<-"
! regressions
x1=~L1*VarA
x1=~L1*VarB
x1=~L1*VarC
x1=~L1*VarD
x1=~L1*VarE
! residuals, variances and covariances
VarA ~~ VarE*VarA
VarB ~~ VarE*VarB
VarC ~~ VarE*VarC
VarD ~~ VarE*VarD
VarE ~~ VarE*VarE
x1 ~~ 1.0*x1
! observed means
VarA~1;
VarB~1;
VarC~1;
VarD~1;
VarE~1;
"
Fig10.1Result<-lavaan(Fig10.1Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.1Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 6 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 15
## Number of equality constraints 8
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 83.438
## Degrees of freedom 13
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.911
## Tucker-Lewis Index (TLI) 0.932
##
## Robust Comparative Fit Index (CFI) 0.911
## Robust Tucker-Lewis Index (TLI) 0.932
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5158.012
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10330.025
## Bayesian (BIC) 10359.527
## Sample-size adjusted Bayesian (SABIC) 10337.309
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.104
## 90 Percent confidence interval - lower 0.083
## 90 Percent confidence interval - upper 0.126
## P-value H_0: RMSEA <= 0.050 0.000
## P-value H_0: RMSEA >= 0.080 0.972
##
## Robust RMSEA 0.104
## 90 Percent confidence interval - lower 0.083
## 90 Percent confidence interval - upper 0.126
## P-value H_0: Robust RMSEA <= 0.050 0.000
## P-value H_0: Robust RMSEA >= 0.080 0.972
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.111
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## x1 =~
## VarA (L1) 1.530 0.059 25.812 0.000 1.530 0.690
## VarB (L1) 1.530 0.059 25.812 0.000 1.530 0.690
## VarC (L1) 1.530 0.059 25.812 0.000 1.530 0.690
## VarD (L1) 1.530 0.059 25.812 0.000 1.530 0.690
## VarE (L1) 1.530 0.059 25.812 0.000 1.530 0.690
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.099 0.000 1.000 0.000 0.000
## .VarB -0.000 0.099 -0.000 1.000 -0.000 -0.000
## .VarC -0.000 0.099 -0.000 1.000 -0.000 -0.000
## .VarD 0.000 0.099 0.000 1.000 0.000 0.000
## .VarE 0.000 0.099 0.000 1.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA (VarE) 2.576 0.081 31.623 0.000 2.576 0.524
## .VarB (VarE) 2.576 0.081 31.623 0.000 2.576 0.524
## .VarC (VarE) 2.576 0.081 31.623 0.000 2.576 0.524
## .VarD (VarE) 2.576 0.081 31.623 0.000 2.576 0.524
## .VarE (VarE) 2.576 0.081 31.623 0.000 2.576 0.524
## x1 1.000 1.000 1.000
require(lavaangui)
## Loading required package: lavaangui
## This is lavaangui 0.2.4
## lavaangui is BETA software! Please report any bugs at https://github.com/karchjd/lavaangui/issues
# plot_lavaan(Fig10.1Result)
library(ggplot2)
# Major ticks every 5 units
major_ticks <- data.frame(
ruler = factor(rep(c("Measure 1", "Measure 2", "Measure 3"), each = 6),
levels = c("Measure 3", "Measure 2", "Measure 1")),
tick = rep(seq(0, 25, 5), times = 3),
offset = rep(c(0, 10, 30), each = 6)
)
# Minor ticks every 1 unit
minor_ticks <- data.frame(
ruler = factor(rep(c("Measure 1", "Measure 2", "Measure 3"), each = 26),
levels = c("Measure 3", "Measure 2", "Measure 1")),
tick = rep(seq(0, 25, 1), times = 3),
offset = rep(c(0, 10, 30), each = 26)
)
# Base ruler lines
ruler_lines <- data.frame(
ruler = c("Measure 1", "Measure 2", "Measure 3"),
start = 0, end = 25,
offset = c(0, 10, 30)
)
ggplot() +
# Full ruler lines
geom_segment(data = ruler_lines,
aes(x = start, xend = end, y = ruler, yend = ruler),
size = 0.6) +
# Minor tick marks (shorter)
geom_segment(data = minor_ticks,
aes(x = tick, xend = tick,
y = as.numeric(ruler) - 0.05,
yend = as.numeric(ruler) + 0.05),
size = 0.3) +
# Major tick marks (longer)
geom_segment(data = major_ticks,
aes(x = tick, xend = tick,
y = as.numeric(ruler) - 0.1,
yend = as.numeric(ruler) + 0.1),
size = 0.5) +
# Major tick labels
geom_text(data = major_ticks,
aes(x = tick, y = as.numeric(ruler) + 0.25,
label = tick + offset),
size = 3) +
# Ruler labels on the left
geom_text(data = ruler_lines,
aes(x = -1, y = ruler, label = ruler),
hjust = 1, size = 4) +
# Theme
theme_void() +
theme(
axis.text.y = element_blank(),
axis.title = element_blank(),
plot.title = element_text(hjust = 0.5, size = 12)
) +
labs(title = "Figure 10.2: Strictly Parallel Measurement as a Ruler")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
ggsave("Figure10_2.svg",
width = 4, height = 3, device = svg)
Fig10.3Model<-"
! regressions
x1=~L1*VarA
x1=~L1*VarB
x1=~L1*VarC
x1=~L1*VarD
x1=~L1*VarE
! residuals, variances and covariances
VarA ~~ ErrorA*VarA
VarB ~~ ErrorB*VarB
VarC ~~ ErrorC*VarC
VarD ~~ ErrorD*VarD
VarE ~~ ErrorE*VarE
x1 ~~ 1.0*x1
! observed means
VarA~1;
VarB~1;
VarC~1;
VarD~1;
VarE~1;
"
Fig10.3Result<-lavaan(Fig10.3Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.3Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 13 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 15
## Number of equality constraints 4
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 48.159
## Degrees of freedom 9
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.951
## Tucker-Lewis Index (TLI) 0.945
##
## Robust Comparative Fit Index (CFI) 0.951
## Robust Tucker-Lewis Index (TLI) 0.945
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5140.373
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10302.746
## Bayesian (BIC) 10349.107
## Sample-size adjusted Bayesian (SABIC) 10314.192
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.093
## 90 Percent confidence interval - lower 0.068
## 90 Percent confidence interval - upper 0.120
## P-value H_0: RMSEA <= 0.050 0.003
## P-value H_0: RMSEA >= 0.080 0.821
##
## Robust RMSEA 0.093
## 90 Percent confidence interval - lower 0.068
## 90 Percent confidence interval - upper 0.120
## P-value H_0: Robust RMSEA <= 0.050 0.003
## P-value H_0: Robust RMSEA >= 0.080 0.821
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.074
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## x1 =~
## VarA (L1) 1.505 0.059 25.694 0.000 1.505 0.722
## VarB (L1) 1.505 0.059 25.694 0.000 1.505 0.713
## VarC (L1) 1.505 0.059 25.694 0.000 1.505 0.693
## VarD (L1) 1.505 0.059 25.694 0.000 1.505 0.685
## VarE (L1) 1.505 0.059 25.694 0.000 1.505 0.617
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.093 0.000 1.000 0.000 0.000
## .VarB -0.000 0.094 -0.000 1.000 -0.000 -0.000
## .VarC -0.000 0.097 -0.000 1.000 -0.000 -0.000
## .VarD 0.000 0.098 0.000 1.000 0.000 0.000
## .VarE 0.000 0.109 0.000 1.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA (ErrA) 2.077 0.166 12.544 0.000 2.077 0.478
## .VarB (ErrB) 2.191 0.171 12.797 0.000 2.191 0.492
## .VarC (ErrC) 2.455 0.187 13.093 0.000 2.455 0.520
## .VarD (ErrD) 2.565 0.195 13.147 0.000 2.565 0.531
## .VarE (ErrE) 3.683 0.264 13.962 0.000 3.683 0.619
## x1 1.000 1.000 1.000
require(lavaangui)
#plot_lavaan(Fig10.3Result)
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Y positions
y_positions <- data.frame(
ruler = c("Measure 1", "Measure 2", "Measure 3"),
y = c(1, 2, 3),
offset_value = c(0, 10, 30)
)
# Major ticks
major_ticks <- data.frame(
ruler = rep(c("Measure 1", "Measure 2", "Measure 3"), each = 6),
tick = rep(seq(0, 25, 5), times = 3),
offset_value = rep(c(0, 10, 30), each = 6)
) %>%
left_join(y_positions, by = "ruler", suffix = c("_tick", "_pos")) %>%
transmute(
ruler,
tick,
y = y,
offset_value = offset_value_tick # explicitly select the one from major_ticks
)
# Function to generate evenly spaced minor ticks
generate_minor_ticks <- function(ruler, between_ticks, offset_val) {
majors <- seq(0, 25, 5)
minors <- unlist(lapply(majors[-length(majors)], function(start) {
seq(start, start + 5, length.out = between_ticks + 2)[-c(1, between_ticks + 2)]
}))
data.frame(ruler = ruler, tick = minors, offset_value = offset_val)
}
# Minor ticks
minor_ticks <- bind_rows(
generate_minor_ticks("Measure 1", 9, 0),
generate_minor_ticks("Measure 2", 4, 10)
) %>%
left_join(y_positions, by = "ruler", suffix = c("_minor", "_pos")) %>%
transmute(
ruler,
tick,
y = y,
offset_value = offset_value_minor
)
# Base ruler lines
ruler_lines <- y_positions %>%
mutate(start = 0, end = 25)
# Plot
ggplot() +
geom_segment(data = ruler_lines,
aes(x = start, xend = end, y = y, yend = y),
size = 0.6) +
geom_segment(data = minor_ticks,
aes(x = tick, xend = tick, y = y - 0.05, yend = y + 0.05),
size = 0.3) +
geom_segment(data = major_ticks,
aes(x = tick, xend = tick, y = y - 0.1, yend = y + 0.1),
size = 0.5) +
geom_text(data = major_ticks,
aes(x = tick, y = y + 0.25, label = tick + offset_value),
size = 3) +
geom_text(data = y_positions,
aes(x = -1, y = y, label = ruler),
hjust = 1, size = 4) +
theme_void() +
theme(
axis.text.y = element_blank(),
axis.title = element_blank(),
plot.title = element_text(hjust = 0.5, size = 12)
) +
labs(title = "Figure 10.4: Tau Equivalent Measurement")
# Save as SVG
ggsave("Figure10.4.svg", width = 4, height = 3, device = "svg")
Fig10.5Model<-"
! regressions
Factor=~L1*VarA
Factor=~L2*VarB
Factor=~L3*VarC
Factor=~L4*VarD
Factor=~L5*VarE
! residuals, variances and covariances
VarA ~~ ErrorA*VarA
VarB ~~ ErrorB*VarB
VarC ~~ ErrorC*VarC
VarD ~~ ErrorD*VarD
VarE ~~ ErrorE*VarE
Factor ~~ 1.0*Factor
! observed means
VarA~1;
VarB~1;
VarC~1;
VarD~1;
VarE~1;
"
Fig10.5Result<-lavaan(Fig10.5Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.5Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 16 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 15
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 22.392
## Degrees of freedom 5
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.978
## Tucker-Lewis Index (TLI) 0.956
##
## Robust Comparative Fit Index (CFI) 0.978
## Robust Tucker-Lewis Index (TLI) 0.956
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5127.490
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10284.979
## Bayesian (BIC) 10348.199
## Sample-size adjusted Bayesian (SABIC) 10300.588
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.083
## 90 Percent confidence interval - lower 0.050
## 90 Percent confidence interval - upper 0.120
## P-value H_0: RMSEA <= 0.050 0.049
## P-value H_0: RMSEA >= 0.080 0.606
##
## Robust RMSEA 0.083
## 90 Percent confidence interval - lower 0.050
## 90 Percent confidence interval - upper 0.120
## P-value H_0: Robust RMSEA <= 0.050 0.049
## P-value H_0: Robust RMSEA >= 0.080 0.606
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.026
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor =~
## VarA (L1) 1.194 0.085 14.052 0.000 1.194 0.623
## VarB (L2) 1.468 0.091 16.149 0.000 1.468 0.696
## VarC (L3) 1.607 0.094 17.069 0.000 1.607 0.723
## VarD (L4) 1.680 0.096 17.544 0.000 1.680 0.740
## VarE (L5) 1.716 0.109 15.756 0.000 1.716 0.680
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.086 0.000 1.000 0.000 0.000
## .VarB -0.000 0.094 -0.000 1.000 -0.000 -0.000
## .VarC -0.000 0.099 -0.000 1.000 -0.000 -0.000
## .VarD 0.000 0.102 0.000 1.000 0.000 0.000
## .VarE 0.000 0.113 0.000 1.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA (ErrA) 2.246 0.166 13.514 0.000 2.246 0.612
## .VarB (ErrB) 2.299 0.185 12.440 0.000 2.299 0.516
## .VarC (ErrC) 2.357 0.196 12.033 0.000 2.357 0.477
## .VarD (ErrD) 2.330 0.202 11.540 0.000 2.330 0.452
## .VarE (ErrE) 3.415 0.267 12.797 0.000 3.415 0.537
## Factor 1.000 1.000 1.000
require(lavaangui)
#plot_lavaan(Fig10.5Result)
library(ggplot2)
library(dplyr)
# Y positions
y_positions <- data.frame(
ruler = c("Measure 1", "Measure 2", "Measure 3"),
y = c(1, 2, 3)
)
# Shared physical axis
axis_min <- 0
axis_max <- 25
# Define scales and invert Measure 3
scale_map <- data.frame(
ruler = c("Measure 1", "Measure 2", "Measure 3"),
scale_min = c(0, 0, -10),
scale_max = c(25, 1, -35),
invert = c(FALSE, FALSE, TRUE)
) %>%
left_join(y_positions, by = "ruler") %>%
mutate(factor = (axis_max - axis_min) / abs(scale_max - scale_min),
direction = ifelse(invert, -1, 1))
# Major ticks
generate_major <- function(ruler, seq_vals) {
data.frame(ruler = ruler, tick_value = seq_vals)
}
major_ticks <- bind_rows(
generate_major("Measure 1", seq(0, 25, 5)),
generate_major("Measure 2", seq(0, 1, 0.25)),
generate_major("Measure 3", seq(-10, -35, -5))
) %>%
left_join(scale_map, by = "ruler") %>%
mutate(x_plot = direction * (tick_value - scale_min) * factor + axis_min)
# Minor ticks
generate_minor <- function(ruler, major_seq, between_ticks) {
minors <- unlist(lapply(major_seq[-length(major_seq)], function(start) {
step <- (major_seq[2] - major_seq[1]) / (between_ticks + 1)
seq(start + step, start + (between_ticks * step), by = step)
}))
data.frame(ruler = ruler, tick_value = minors)
}
minor_ticks <- bind_rows(
generate_minor("Measure 1", seq(0, 25, 5), 9),
generate_minor("Measure 2", seq(0, 1, 0.25), 3)
) %>%
left_join(scale_map, by = "ruler") %>%
mutate(x_plot = direction * (tick_value - scale_min) * factor + axis_min)
# Base ruler lines
ruler_lines <- scale_map %>%
mutate(xstart = axis_min, xend = axis_max)
# Plot
ggplot() +
# Ruler lines
geom_segment(data = ruler_lines,
aes(x = xstart, xend = xend, y = y, yend = y),
size = 0.6) +
# Minor ticks
geom_segment(data = minor_ticks,
aes(x = x_plot, xend = x_plot, y = y - 0.05, yend = y + 0.05),
size = 0.3) +
# Major ticks
geom_segment(data = major_ticks,
aes(x = x_plot, xend = x_plot, y = y - 0.1, yend = y + 0.1),
size = 0.5) +
# Major tick labels
geom_text(data = major_ticks,
aes(x = x_plot, y = y + 0.25, label = tick_value),
size = 3) +
# Ruler labels
geom_text(data = y_positions,
aes(x = axis_min - 2, y = y, label = ruler),
hjust = 1, size = 4) +
theme_void() +
theme(
plot.title = element_text(hjust = 0.5, size = 12)
) +
labs(title = "Figure 10.6: Congeneric Measurement)")
ggsave("Figure10.6.svg", width = 5, height = 3, device = "svg")
library(ggplot2)
library(dplyr)
# Y positions
y_positions <- data.frame(
ruler = c("Measure 1", "Measure 2", "Measure 3"),
y = c(1, 2, 3)
)
# Shared physical axis (common width)
axis_min <- 0
axis_max <- 25
# Scale definitions with inversion flag
scale_map <- data.frame(
ruler = c("Measure 1", "Measure 2", "Measure 3"),
scale_min = c(100, 10, -10),
scale_max = c(350, 35, -35),
invert = c(FALSE, FALSE, TRUE)
) %>%
left_join(y_positions, by = "ruler") %>%
mutate(factor = (axis_max - axis_min) / abs(scale_max - scale_min),
direction = ifelse(invert, -1, 1))
# Function to generate major ticks
generate_major <- function(from, to, step) seq(from, to, step)
# Calculate steps (every 50 for Measure 1, 5 for Measure 2, 5 for Measure 3)
major_ticks <- bind_rows(
data.frame(ruler = "Measure 1", tick_value = generate_major(100, 350, 50)),
data.frame(ruler = "Measure 2", tick_value = generate_major(10, 35, 5)),
data.frame(ruler = "Measure 3", tick_value = generate_major(-10, -35, -5))
) %>%
left_join(scale_map, by = "ruler") %>%
mutate(x_plot = direction * (tick_value - scale_min) * factor + axis_min)
# Function to generate minor ticks for each ruler
generate_minor_ticks <- function(from, to, step, between_ticks) {
majors <- seq(from, to, step)
minors <- unlist(lapply(majors[-length(majors)], function(start) {
minor_step <- step / (between_ticks + 1)
seq(start + minor_step, start + between_ticks * minor_step, by = minor_step)
}))
data.frame(tick_value = minors)
}
# Minor ticks for all rulers
minor_ticks <- bind_rows(
data.frame(ruler = "Measure 1",
generate_minor_ticks(100, 350, 50, 4)),
data.frame(ruler = "Measure 2",
generate_minor_ticks(10, 35, 5, 4)),
data.frame(ruler = "Measure 3",
generate_minor_ticks(-10, -35, -5, 4))
) %>%
left_join(scale_map, by = "ruler") %>%
mutate(x_plot = direction * (tick_value - scale_min) * factor + axis_min)
# Base ruler lines
ruler_lines <- scale_map %>%
mutate(xstart = axis_min, xend = axis_max)
# Plot
ggplot() +
# Ruler lines
geom_segment(data = ruler_lines,
aes(x = xstart, xend = xend, y = y, yend = y),
size = 0.6) +
# Minor ticks
geom_segment(data = minor_ticks,
aes(x = x_plot, xend = x_plot, y = y - 0.05, yend = y + 0.05),
size = 0.3) +
# Major ticks
geom_segment(data = major_ticks,
aes(x = x_plot, xend = x_plot, y = y - 0.1, yend = y + 0.1),
size = 0.5) +
# Major tick labels
geom_text(data = major_ticks,
aes(x = x_plot, y = y + 0.25, label = tick_value),
size = 3) +
# Ruler labels
geom_text(data = y_positions,
aes(x = axis_min - 2, y = y, label = ruler),
hjust = 1, size = 4) +
theme_void() +
theme(
plot.title = element_text(hjust = 0.5, size = 12)
) +
labs(title = "Figure 10.7: Equal Precision Measurement")
# Save as SVG
ggsave("Figure10.7.svg", width = 6, height = 3, device = "svg")
Fig10.8Model<-"
! regressions
Factor=~L1*VarA
Factor=~L2*VarB
Factor=~L3*VarC
Factor=~L4*VarD
Factor=~L5*VarE
EA=~L1*VarA
EB=~L2*VarB
EC=~L3*VarC
ED=~L4*VarD
EE=~L5*VarE
! residuals, variances and covariances
Factor ~~ 1.0*Factor
EA ~~ e*EA
EB ~~ e*EB
EC ~~ e*EC
ED ~~ e*ED
EE ~~ e*EE
Factor ~~ 0.0*EA
Factor ~~ 0.0*EB
Factor ~~ 0.0*EC
Factor ~~ 0.0*ED
Factor ~~ 0.0*EE
EA ~~ 0.0*EB
EA ~~ 0.0*EC
EA ~~ 0.0*ED
EA ~~ 0.0*EE
EB ~~ 0.0*EC
EB ~~ 0.0*ED
EB ~~ 0.0*EE
EC ~~ 0.0*ED
EC ~~ 0.0*EE
ED ~~ 0.0*EE
! means
VarA~0*1;
VarB~0*1;
VarC~0*1;
VarD~0*1;
VarE~0*1;
Factor~0*1;
EA~0*1;
EB~0*1;
EC~0*1;
ED~0*1;
EE~0*1;
"
Fig10.8Result<-lavaan(Fig10.8Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.8Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 33 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 15
## Number of equality constraints 9
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 32.532
## Degrees of freedom 14
## P-value (Chi-square) 0.003
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.977
## Tucker-Lewis Index (TLI) 0.983
##
## Robust Comparative Fit Index (CFI) 0.977
## Robust Tucker-Lewis Index (TLI) 0.983
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5132.559
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10277.118
## Bayesian (BIC) 10302.406
## Sample-size adjusted Bayesian (SABIC) 10283.362
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.051
## 90 Percent confidence interval - lower 0.028
## 90 Percent confidence interval - upper 0.075
## P-value H_0: RMSEA <= 0.050 0.423
## P-value H_0: RMSEA >= 0.080 0.020
##
## Robust RMSEA 0.051
## 90 Percent confidence interval - lower 0.028
## 90 Percent confidence interval - upper 0.075
## P-value H_0: Robust RMSEA <= 0.050 0.423
## P-value H_0: Robust RMSEA >= 0.080 0.020
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.040
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor =~
## VarA (L1) 1.349 0.062 21.750 0.000 1.349 0.692
## VarB (L2) 1.456 0.066 22.003 0.000 1.456 0.692
## VarC (L3) 1.527 0.069 22.054 0.000 1.527 0.692
## VarD (L4) 1.555 0.070 22.091 0.000 1.555 0.692
## VarE (L5) 1.755 0.080 21.895 0.000 1.755 0.692
## EA =~
## VarA (L1) 1.349 0.062 21.750 0.000 1.406 0.721
## EB =~
## VarB (L2) 1.456 0.066 22.003 0.000 1.517 0.721
## EC =~
## VarC (L3) 1.527 0.069 22.054 0.000 1.591 0.721
## ED =~
## VarD (L4) 1.555 0.070 22.091 0.000 1.621 0.721
## EE =~
## VarE (L5) 1.755 0.080 21.895 0.000 1.829 0.721
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor ~~
## EA 0.000 0.000 0.000
## EB 0.000 0.000 0.000
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## EA ~~
## EB 0.000 0.000 0.000
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## EB ~~
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## EC ~~
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## ED ~~
## EE 0.000 0.000 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.000 0.000
## .VarB 0.000 0.000 0.000
## .VarC 0.000 0.000 0.000
## .VarD 0.000 0.000 0.000
## .VarE 0.000 0.000 0.000
## Factor 0.000 0.000 0.000
## EA 0.000 0.000 0.000
## EB 0.000 0.000 0.000
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor 1.000 1.000 1.000
## EA (e) 1.086 0.093 11.618 0.000 1.000 1.000
## EB (e) 1.086 0.093 11.618 0.000 1.000 1.000
## EC (e) 1.086 0.093 11.618 0.000 1.000 1.000
## ED (e) 1.086 0.093 11.618 0.000 1.000 1.000
## EE (e) 1.086 0.093 11.618 0.000 1.000 1.000
## .VarA 0.000 0.000 0.000
## .VarB 0.000 0.000 0.000
## .VarC 0.000 0.000 0.000
## .VarD 0.000 0.000 0.000
## .VarE 0.000 0.000 0.000
require(lavaangui)
#plot_lavaan(Fig10.8Result)
Fig10.9Model<-"
! regressions
Factor=~L1*VarA
Factor=~L2*VarB
Factor=~L3*VarC
Factor=~L4*VarD
Factor=~L5*VarE
RI=~1.0*VarA
RI=~1.0*VarB
RI=~1.0*VarC
RI=~1.0*VarD
RI=~1.0*VarE
! residuals, variances and covariances
VarA ~~ ErrorA*VarA
VarB ~~ ErrorB*VarB
VarC ~~ ErrorC*VarC
VarD ~~ ErrorD*VarD
VarE ~~ ErrorE*VarE
Factor ~~ 1.0*Factor
RI ~~ VRI*RI
Factor ~~ 0.0*RI
! observed means
VarA~1;
VarB~1;
VarC~1;
VarD~1;
VarE~1;
"
Fig10.9Result<-lavaan(Fig10.9Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.9Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 39 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 16
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 0.000
## Degrees of freedom 4
## P-value (Chi-square) 1.000
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) 1.013
##
## Robust Comparative Fit Index (CFI) 1.000
## Robust Tucker-Lewis Index (TLI) 1.013
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5116.293
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10264.587
## Bayesian (BIC) 10332.021
## Sample-size adjusted Bayesian (SABIC) 10281.236
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.000
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.000
## P-value H_0: Robust RMSEA <= 0.050 1.000
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.000
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor =~
## VarA (L1) -0.330 0.233 -1.414 0.157 -0.330 -0.172
## VarB (L2) 0.230 0.151 1.518 0.129 0.230 0.109
## VarC (L3) 0.589 0.161 3.651 0.000 0.589 0.265
## VarD (L4) 0.949 0.185 5.141 0.000 0.949 0.418
## VarE (L5) 1.049 0.203 5.156 0.000 1.049 0.416
## RI =~
## VarA 1.000 1.468 0.766
## VarB 1.000 1.468 0.696
## VarC 1.000 1.468 0.661
## VarD 1.000 1.468 0.647
## VarE 1.000 1.468 0.582
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor ~~
## RI 0.000 0.000 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.086 0.000 1.000 0.000 0.000
## .VarB -0.000 0.094 -0.000 1.000 -0.000 -0.000
## .VarC -0.000 0.099 -0.000 1.000 -0.000 -0.000
## .VarD 0.000 0.102 0.000 1.000 0.000 0.000
## .VarE 0.000 0.113 0.000 1.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA (ErrA) 1.407 0.303 4.638 0.000 1.407 0.383
## .VarB (ErrB) 2.246 0.173 12.944 0.000 2.246 0.504
## .VarC (ErrC) 2.435 0.191 12.723 0.000 2.435 0.493
## .VarD (ErrD) 2.096 0.252 8.315 0.000 2.096 0.407
## .VarE (ErrE) 3.104 0.327 9.494 0.000 3.104 0.488
## Factor 1.000 1.000 1.000
## RI (VRI) 2.156 0.203 10.600 0.000 1.000 1.000
require(lavaangui)
#plot_lavaan(Fig10.9Result)
Fig10.10Model<-"
! regressions
Factor=~L1*VarA
Factor=~L2*VarB
Factor=~L3*VarC
Factor=~L4*VarD
Factor=~L5*VarE
EA=~RL1*VarA
EB=~RL2*VarB
EC=~RL3*VarC
ED=~RL4*VarD
EE=~RL5*VarE
RI=~1.0*VarA
RI=~1.0*VarB
RI=~1.0*VarC
RI=~1.0*VarD
RI=~1.0*VarE
! residuals, variances and covariances
Factor ~~ 1.0*Factor
EA ~~ e*EA
EB ~~ e*EB
EC ~~ e*EC
ED ~~ e*ED
EE ~~ e*EE
RI ~~ VRI*RI
Factor ~~ 0.0*EA
Factor ~~ 0.0*EB
Factor ~~ 0.0*EC
Factor ~~ 0.0*ED
Factor ~~ 0.0*EE
Factor ~~ 0.0*RI
EA ~~ 0.0*EB
EA ~~ 0.0*EC
EA ~~ 0.0*ED
EA ~~ 0.0*EE
EA ~~ 0.0*RI
EB ~~ 0.0*EC
EB ~~ 0.0*ED
EB ~~ 0.0*EE
EB ~~ 0.0*RI
EC ~~ 0.0*ED
EC ~~ 0.0*EE
EC ~~ 0.0*RI
ED ~~ 0.0*EE
ED ~~ 0.0*RI
EE ~~ 0.0*RI
! means
VarA~0*1;
VarB~0*1;
VarC~0*1;
VarD~0*1;
VarE~0*1;
Factor~0*1;
EA~0*1;
EB~0*1;
EC~0*1;
ED~0*1;
EE~0*1;
RI~0*1;
RL1==sqrt(VRI + L1*L1)
RL2==sqrt(VRI + L2*L2)
RL3==sqrt(VRI + L3*L3)
RL4==sqrt(VRI + L4*L4)
RL5==sqrt(VRI + L5*L5)
"
Fig10.10Result<-lavaan(Fig10.10Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.10Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 293 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 16
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 9.094
## Degrees of freedom 13
## P-value (Chi-square) 0.766
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) 1.004
##
## Robust Comparative Fit Index (CFI) 1.000
## Robust Tucker-Lewis Index (TLI) 1.004
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5120.840
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10255.681
## Bayesian (BIC) 10285.183
## Sample-size adjusted Bayesian (SABIC) 10262.965
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.031
## P-value H_0: RMSEA <= 0.050 0.997
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.031
## P-value H_0: Robust RMSEA <= 0.050 0.997
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.026
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor =~
## VarA (L1) -0.056 0.120 -0.465 0.642 -0.056 -0.028
## VarB (L2) 0.370 0.172 2.149 0.032 0.370 0.182
## VarC (L3) 0.743 0.115 6.475 0.000 0.743 0.335
## VarD (L4) 0.851 0.109 7.824 0.000 0.851 0.371
## VarE (L5) 1.169 0.101 11.599 0.000 1.169 0.459
## EA =~
## VarA (RL1) 1.429 0.064 22.313 0.000 1.358 0.689
## EB =~
## VarB (RL2) 1.475 0.059 24.876 0.000 1.402 0.689
## EC =~
## VarC (RL3) 1.609 0.069 23.291 0.000 1.530 0.689
## ED =~
## VarD (RL4) 1.662 0.072 23.071 0.000 1.580 0.689
## EE =~
## VarE (RL5) 1.845 0.080 23.165 0.000 1.754 0.689
## RI =~
## VarA 1.000 1.428 0.724
## VarB 1.000 1.428 0.701
## VarC 1.000 1.428 0.643
## VarD 1.000 1.428 0.623
## VarE 1.000 1.428 0.561
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor ~~
## EA 0.000 0.000 0.000
## EB 0.000 0.000 0.000
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## RI 0.000 0.000 0.000
## EA ~~
## EB 0.000 0.000 0.000
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## RI 0.000 0.000 0.000
## EB ~~
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## RI 0.000 0.000 0.000
## EC ~~
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## RI 0.000 0.000 0.000
## ED ~~
## EE 0.000 0.000 0.000
## RI 0.000 0.000 0.000
## EE ~~
## RI 0.000 0.000 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.000 0.000
## .VarB 0.000 0.000 0.000
## .VarC 0.000 0.000 0.000
## .VarD 0.000 0.000 0.000
## .VarE 0.000 0.000 0.000
## Factor 0.000 0.000 0.000
## EA 0.000 0.000 0.000
## EB 0.000 0.000 0.000
## EC 0.000 0.000 0.000
## ED 0.000 0.000 0.000
## EE 0.000 0.000 0.000
## RI 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor 1.000 1.000 1.000
## EA (e) 0.904 0.080 11.238 0.000 1.000 1.000
## EB (e) 0.904 0.080 11.238 0.000 1.000 1.000
## EC (e) 0.904 0.080 11.238 0.000 1.000 1.000
## ED (e) 0.904 0.080 11.238 0.000 1.000 1.000
## EE (e) 0.904 0.080 11.238 0.000 1.000 1.000
## RI (VRI) 2.038 0.179 11.357 0.000 1.000 1.000
## .VarA 0.000 0.000 0.000
## .VarB 0.000 0.000 0.000
## .VarC 0.000 0.000 0.000
## .VarD 0.000 0.000 0.000
## .VarE 0.000 0.000 0.000
##
## Constraints:
## |Slack|
## RL1 - (sqrt(VRI+L1*L1)) 0.000
## RL2 - (sqrt(VRI+L2*L2)) 0.000
## RL3 - (sqrt(VRI+L3*L3)) 0.000
## RL4 - (sqrt(VRI+L4*L4)) 0.000
## RL5 - (sqrt(VRI+L5*L5)) 0.000
require(lavaangui)
#plot_lavaan(Fig10.10Result)
If you would like to write the model without nonlinear constraints, this diagram will work
Fig10.10AModel<-"
! regressions
Factor=~L1*VarA
Factor=~L2*VarB
Factor=~L3*VarC
Factor=~L4*VarD
Factor=~L5*VarE
RI=~1.0*VarA
RI=~1.0*VarB
RI=~1.0*VarC
RI=~1.0*VarD
RI=~1.0*VarE
EA=~SDP*VarA
EB=~SDP*VarB
EC=~SDP*VarC
ED=~SDP*VarD
EE=~SDP*VarE
VA=~L3*EA
VB=~L3*EB
VC=~L3*EC
VD=~L4*ED
VE=~L5*EE
! residuals, variances and covariances
RI ~~ VRI*RI
Factor ~~ 1.0*Factor
EA ~~ VRI*EA
EB ~~ VRI*EB
EC ~~ VRI*EC
ED ~~ VRI*ED
EE ~~ VRI*EE
VA ~~ VRI*VA
VB ~~ VRI*VB
VC ~~ VRI*VC
VD ~~ VRI*VD
VE ~~ VRI*VE
RI ~~ 0.0*Factor
RI ~~ 0.0*EA
RI ~~ 0.0*EB
RI ~~ 0.0*EC
RI ~~ 0.0*ED
RI ~~ 0.0*EE
RI ~~ 0.0*VA
RI ~~ 0.0*VB
RI ~~ 0.0*VC
RI ~~ 0.0*VD
RI ~~ 0.0*VE
Factor ~~ 0.0*EA
Factor ~~ 0.0*EB
Factor ~~ 0.0*EC
Factor ~~ 0.0*ED
Factor ~~ 0.0*EE
Factor ~~ 0.0*VA
Factor ~~ 0.0*VB
Factor ~~ 0.0*VC
Factor ~~ 0.0*VD
Factor ~~ 0.0*VE
EA ~~ 0.0*EB
EA ~~ 0.0*EC
EA ~~ 0.0*ED
EA ~~ 0.0*EE
EA ~~ 0.0*VB
EA ~~ 0.0*VC
EA ~~ 0.0*VD
EA ~~ 0.0*VE
EB ~~ 0.0*EC
EB ~~ 0.0*ED
EB ~~ 0.0*EE
EB ~~ 0.0*VA
EB ~~ 0.0*VC
EB ~~ 0.0*VD
EB ~~ 0.0*VE
EC ~~ 0.0*ED
EC ~~ 0.0*EE
EC ~~ 0.0*VA
EC ~~ 0.0*VB
EC ~~ 0.0*VD
EC ~~ 0.0*VE
ED ~~ 0.0*EE
ED ~~ 0.0*VA
ED ~~ 0.0*VB
ED ~~ 0.0*VC
ED ~~ 0.0*VE
EE ~~ 0.0*VA
EE ~~ 0.0*VB
EE ~~ 0.0*VC
EE ~~ 0.0*VD
VA ~~ 0.0*VB
VA ~~ 0.0*VC
VA ~~ 0.0*VD
VA ~~ 0.0*VE
VB ~~ 0.0*VC
VB ~~ 0.0*VD
VB ~~ 0.0*VE
VC ~~ 0.0*VD
VC ~~ 0.0*VE
VD ~~ 0.0*VE
! observed means
VarA~1;
VarB~1;
VarC~1;
VarD~1;
VarE~1;
"
Fig10.10AResult<-lavaan(Fig10.10AModel, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.10AResult, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 44 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 31
## Number of equality constraints 19
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 11.770
## Degrees of freedom 8
## P-value (Chi-square) 0.162
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.995
## Tucker-Lewis Index (TLI) 0.994
##
## Robust Comparative Fit Index (CFI) 0.995
## Robust Tucker-Lewis Index (TLI) 0.994
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5122.178
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10268.356
## Bayesian (BIC) 10318.932
## Sample-size adjusted Bayesian (SABIC) 10280.843
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.031
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.065
## P-value H_0: RMSEA <= 0.050 0.789
## P-value H_0: RMSEA >= 0.080 0.007
##
## Robust RMSEA 0.031
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.065
## P-value H_0: Robust RMSEA <= 0.050 0.789
## P-value H_0: Robust RMSEA >= 0.080 0.007
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.034
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor =~
## VarA (L1) 0.043 0.183 0.234 0.815 0.043 0.021
## VarB (L2) 0.312 0.212 1.470 0.142 0.312 0.153
## VarC (L3) 0.835 0.157 5.314 0.000 0.835 0.383
## VarD (L4) 0.940 0.147 6.417 0.000 0.940 0.413
## VarE (L5) 1.209 0.148 8.152 0.000 1.209 0.475
## RI =~
## VarA 1.000 1.395 0.693
## VarB 1.000 1.395 0.685
## VarC 1.000 1.395 0.640
## VarD 1.000 1.395 0.614
## VarE 1.000 1.395 0.549
## EA =~
## VarA (SDP) 0.799 0.052 15.311 0.000 1.452 0.721
## EB =~
## VarB (SDP) 0.799 0.052 15.311 0.000 1.452 0.713
## EC =~
## VarC (SDP) 0.799 0.052 15.311 0.000 1.452 0.666
## ED =~
## VarD (SDP) 0.799 0.052 15.311 0.000 1.530 0.673
## EE =~
## VarE (SDP) 0.799 0.052 15.311 0.000 1.749 0.688
## VA =~
## EA (L3) 0.835 0.157 5.314 0.000 0.641 0.641
## VB =~
## EB (L3) 0.835 0.157 5.314 0.000 0.641 0.641
## VC =~
## EC (L3) 0.835 0.157 5.314 0.000 0.641 0.641
## VD =~
## ED (L4) 0.940 0.147 6.417 0.000 0.685 0.685
## VE =~
## EE (L5) 1.209 0.148 8.152 0.000 0.770 0.770
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor ~~
## RI 0.000 0.000 0.000
## RI ~~
## .EA 0.000 0.000 0.000
## .EB 0.000 0.000 0.000
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## Factor ~~
## .EA 0.000 0.000 0.000
## .EB 0.000 0.000 0.000
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EA ~~
## .EB 0.000 0.000 0.000
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EB ~~
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EC ~~
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .ED ~~
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EE ~~
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VA ~~
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## VB ~~
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## VC ~~
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## VD ~~
## VE 0.000 0.000 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.090 0.000 1.000 0.000 0.000
## .VarB -0.000 0.091 -0.000 1.000 -0.000 -0.000
## .VarC -0.000 0.098 -0.000 1.000 -0.000 -0.000
## .VarD 0.000 0.102 0.000 1.000 0.000 0.000
## .VarE 0.000 0.114 0.000 1.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## RI (VRI) 1.947 0.232 8.379 0.000 1.000 1.000
## Factor 1.000 1.000 1.000
## .EA (VRI) 1.947 0.232 8.379 0.000 0.589 0.589
## .EB (VRI) 1.947 0.232 8.379 0.000 0.589 0.589
## .EC (VRI) 1.947 0.232 8.379 0.000 0.589 0.589
## .ED (VRI) 1.947 0.232 8.379 0.000 0.531 0.531
## .EE (VRI) 1.947 0.232 8.379 0.000 0.406 0.406
## VA (VRI) 1.947 0.232 8.379 0.000 1.000 1.000
## VB (VRI) 1.947 0.232 8.379 0.000 1.000 1.000
## VC (VRI) 1.947 0.232 8.379 0.000 1.000 1.000
## VD (VRI) 1.947 0.232 8.379 0.000 1.000 1.000
## VE (VRI) 1.947 0.232 8.379 0.000 1.000 1.000
## .VarA 0.000 0.000 0.000
## .VarB 0.000 0.000 0.000
## .VarC 0.000 0.000 0.000
## .VarD 0.000 0.000 0.000
## .VarE 0.000 0.000 0.000
require(lavaangui)
# plot_lavaan(Fig10.10AResult)
(Also Not in the Book)
Maydieu-Olivares and Coffman interpret the random intercept factor as a method factor and that the congeneric factor represents the “true” construct. As discussed in the book, it may be that both factors correspond to the construct because if this model is fit with factor means, it is identical to the orthogonal latent basis growth model. It may be, however, that the random intercept factor is actually composed of both a “true” random intercept component and a method factor which should not be included in the precision model.
The following model allows for the precision model to have a different common variance.
Maydeu-Olivares, A., & Coffman, D. L. (2006). Random intercept item factor analysis. Psychological Methods, 11(4), 344–362. https://doi.org/10.1037/1082-989X.11.4.344
Fig10.10A2Model<-"
! regressions
Factor=~L1*VarA
Factor=~L2*VarB
Factor=~L3*VarC
Factor=~L4*VarD
Factor=~L5*VarE
RI=~1.0*VarA
RI=~1.0*VarB
RI=~1.0*VarC
RI=~1.0*VarD
RI=~1.0*VarE
EA=~SDP*VarA
EB=~SDP*VarB
EC=~SDP*VarC
ED=~SDP*VarD
EE=~SDP*VarE
VA=~L3*EA
VB=~L3*EB
VC=~L3*EC
VD=~L4*ED
VE=~L5*EE
! residuals, variances and covariances
RI ~~ VRI*RI
Factor ~~ 1.0*Factor
EA ~~ VRI*EA
EB ~~ VRI*EB
EC ~~ VRI*EC
ED ~~ VRI*ED
EE ~~ VRI*EE
VA ~~ a*VA
VB ~~ a*VB
VC ~~ a*VC
VD ~~ a*VD
VE ~~ a*VE
RI ~~ 0.0*Factor
RI ~~ 0.0*EA
RI ~~ 0.0*EB
RI ~~ 0.0*EC
RI ~~ 0.0*ED
RI ~~ 0.0*EE
RI ~~ 0.0*VA
RI ~~ 0.0*VB
RI ~~ 0.0*VC
RI ~~ 0.0*VD
RI ~~ 0.0*VE
Factor ~~ 0.0*EA
Factor ~~ 0.0*EB
Factor ~~ 0.0*EC
Factor ~~ 0.0*ED
Factor ~~ 0.0*EE
Factor ~~ 0.0*VA
Factor ~~ 0.0*VB
Factor ~~ 0.0*VC
Factor ~~ 0.0*VD
Factor ~~ 0.0*VE
EA ~~ 0.0*EB
EA ~~ 0.0*EC
EA ~~ 0.0*ED
EA ~~ 0.0*EE
EA ~~ 0.0*VB
EA ~~ 0.0*VC
EA ~~ 0.0*VD
EA ~~ 0.0*VE
EB ~~ 0.0*EC
EB ~~ 0.0*ED
EB ~~ 0.0*EE
EB ~~ 0.0*VA
EB ~~ 0.0*VC
EB ~~ 0.0*VD
EB ~~ 0.0*VE
EC ~~ 0.0*ED
EC ~~ 0.0*EE
EC ~~ 0.0*VA
EC ~~ 0.0*VB
EC ~~ 0.0*VD
EC ~~ 0.0*VE
ED ~~ 0.0*EE
ED ~~ 0.0*VA
ED ~~ 0.0*VB
ED ~~ 0.0*VC
ED ~~ 0.0*VE
EE ~~ 0.0*VA
EE ~~ 0.0*VB
EE ~~ 0.0*VC
EE ~~ 0.0*VD
VA ~~ 0.0*VB
VA ~~ 0.0*VC
VA ~~ 0.0*VD
VA ~~ 0.0*VE
VB ~~ 0.0*VC
VB ~~ 0.0*VD
VB ~~ 0.0*VE
VC ~~ 0.0*VD
VC ~~ 0.0*VE
VD ~~ 0.0*VE
! observed means
VarA~1;
VarB~1;
VarC~1;
VarD~1;
VarE~1;
"
Fig10.10A2Result<-lavaan(Fig10.10A2Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.10A2Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 84 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 31
## Number of equality constraints 18
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 11.726
## Degrees of freedom 7
## P-value (Chi-square) 0.110
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.994
## Tucker-Lewis Index (TLI) 0.991
##
## Robust Comparative Fit Index (CFI) 0.994
## Robust Tucker-Lewis Index (TLI) 0.991
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5122.156
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10270.313
## Bayesian (BIC) 10325.103
## Sample-size adjusted Bayesian (SABIC) 10283.840
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.037
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.072
## P-value H_0: RMSEA <= 0.050 0.687
## P-value H_0: RMSEA >= 0.080 0.020
##
## Robust RMSEA 0.037
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.072
## P-value H_0: Robust RMSEA <= 0.050 0.687
## P-value H_0: Robust RMSEA >= 0.080 0.020
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.035
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor =~
## VarA (L1) 0.039 0.180 0.218 0.828 0.039 0.019
## VarB (L2) 0.309 0.208 1.481 0.139 0.309 0.151
## VarC (L3) 0.804 0.217 3.697 0.000 0.804 0.370
## VarD (L4) 0.938 0.147 6.403 0.000 0.938 0.412
## VarE (L5) 1.239 0.203 6.104 0.000 1.239 0.487
## RI =~
## VarA 1.000 1.397 0.692
## VarB 1.000 1.397 0.685
## VarC 1.000 1.397 0.643
## VarD 1.000 1.397 0.614
## VarE 1.000 1.397 0.549
## EA =~
## VarA (SDP) 0.872 0.285 3.063 0.002 1.455 0.721
## EB =~
## VarB (SDP) 0.872 0.285 3.063 0.002 1.455 0.713
## EC =~
## VarC (SDP) 0.872 0.285 3.063 0.002 1.455 0.670
## ED =~
## VarD (SDP) 0.872 0.285 3.063 0.002 1.532 0.673
## EE =~
## VarE (SDP) 0.872 0.285 3.063 0.002 1.729 0.679
## VA =~
## EA (L3) 0.804 0.217 3.697 0.000 0.547 0.547
## VB =~
## EB (L3) 0.804 0.217 3.697 0.000 0.547 0.547
## VC =~
## EC (L3) 0.804 0.217 3.697 0.000 0.547 0.547
## VD =~
## ED (L4) 0.938 0.147 6.403 0.000 0.607 0.607
## VE =~
## EE (L5) 1.239 0.203 6.104 0.000 0.710 0.710
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Factor ~~
## RI 0.000 0.000 0.000
## RI ~~
## .EA 0.000 0.000 0.000
## .EB 0.000 0.000 0.000
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## Factor ~~
## .EA 0.000 0.000 0.000
## .EB 0.000 0.000 0.000
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EA ~~
## .EB 0.000 0.000 0.000
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EB ~~
## .EC 0.000 0.000 0.000
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EC ~~
## .ED 0.000 0.000 0.000
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .ED ~~
## .EE 0.000 0.000 0.000
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## .EE ~~
## VA 0.000 0.000 0.000
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VA ~~
## VB 0.000 0.000 0.000
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## VB ~~
## VC 0.000 0.000 0.000
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## VC ~~
## VD 0.000 0.000 0.000
## VE 0.000 0.000 0.000
## VD ~~
## VE 0.000 0.000 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.090 0.000 1.000 0.000 0.000
## .VarB -0.000 0.091 -0.000 1.000 -0.000 -0.000
## .VarC -0.000 0.097 -0.000 1.000 -0.000 -0.000
## .VarD 0.000 0.102 0.000 1.000 0.000 0.000
## .VarE 0.000 0.114 0.000 1.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## RI (VRI) 1.952 0.230 8.478 0.000 1.000 1.000
## Factor 1.000 1.000 1.000
## .EA (VRI) 1.952 0.230 8.478 0.000 0.701 0.701
## .EB (VRI) 1.952 0.230 8.478 0.000 0.701 0.701
## .EC (VRI) 1.952 0.230 8.478 0.000 0.701 0.701
## .ED (VRI) 1.952 0.230 8.478 0.000 0.632 0.632
## .EE (VRI) 1.952 0.230 8.478 0.000 0.496 0.496
## VA (a) 1.290 2.249 0.574 0.566 1.000 1.000
## VB (a) 1.290 2.249 0.574 0.566 1.000 1.000
## VC (a) 1.290 2.249 0.574 0.566 1.000 1.000
## VD (a) 1.290 2.249 0.574 0.566 1.000 1.000
## VE (a) 1.290 2.249 0.574 0.566 1.000 1.000
## .VarA 0.000 0.000 0.000
## .VarB 0.000 0.000 0.000
## .VarC 0.000 0.000 0.000
## .VarD 0.000 0.000 0.000
## .VarE 0.000 0.000 0.000
require(lavaangui)
#plot_lavaan(Fig10.10A2Result)
Fig10.11Model<-"
! regressions
F1=~L11*VarA
F1=~L21*VarB
F1=~L31*VarC
F1=~L41*VarD
F1=~L51*VarE
F2=~L22*VarB
F2=~L32*VarC
F2=~L42*VarD
F2=~L52*VarE
! residuals, variances and covariances
VarA ~~ EA*VarA
VarB ~~ EB*VarB
VarC ~~ EC*VarC
VarD ~~ ED*VarD
VarE ~~ EE*VarE
F1 ~~ 1.0*F1
F2 ~~ 1.0*F2
F1 ~~ 0.0*F2
! means
VarA~0*1;
VarB~0*1;
VarC~0*1;
VarD~0*1;
VarE~0*1;
F1~0*1;
F2~0*1;
"
Fig10.11Result<-lavaan(Fig10.11Model, data=SimData, fixed.x=FALSE, missing="FIML")
summary(Fig10.11Result, fit.measures=TRUE,standardized=TRUE);
## lavaan 0.6-19 ended normally after 35 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 14
##
## Number of observations 500
## Number of missing patterns 1
##
## Model Test User Model:
##
## Test statistic 0.000
## Degrees of freedom 6
## P-value (Chi-square) 1.000
##
## Model Test Baseline Model:
##
## Test statistic 802.515
## Degrees of freedom 10
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) 1.013
##
## Robust Comparative Fit Index (CFI) 1.000
## Robust Tucker-Lewis Index (TLI) 1.013
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5116.293
## Loglikelihood unrestricted model (H1) -5116.293
##
## Akaike (AIC) 10260.587
## Bayesian (BIC) 10319.591
## Sample-size adjusted Bayesian (SABIC) 10275.155
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.000
## P-value H_0: RMSEA <= 0.050 1.000
## P-value H_0: RMSEA >= 0.080 0.000
##
## Robust RMSEA 0.000
## 90 Percent confidence interval - lower 0.000
## 90 Percent confidence interval - upper 0.000
## P-value H_0: Robust RMSEA <= 0.050 1.000
## P-value H_0: Robust RMSEA >= 0.080 0.000
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.000
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## F1 =~
## VarA (L11) 1.505 0.272 5.533 0.000 1.505 0.785
## VarB (L21) 1.382 0.253 5.472 0.000 1.382 0.655
## VarC (L31) 1.303 0.236 5.534 0.000 1.303 0.587
## VarD (L41) 1.225 0.249 4.922 0.000 1.225 0.540
## VarE (L51) 1.203 0.257 4.683 0.000 1.203 0.477
## F2 =~
## VarB (L22) 0.546 0.410 1.333 0.183 0.546 0.259
## VarC (L32) 0.897 0.321 2.795 0.005 0.897 0.404
## VarD (L42) 1.248 0.256 4.865 0.000 1.248 0.550
## VarE (L52) 1.345 0.237 5.671 0.000 1.345 0.533
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## F1 ~~
## F2 0.000 0.000 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA 0.000 0.000 0.000
## .VarB 0.000 0.000 0.000
## .VarC 0.000 0.000 0.000
## .VarD 0.000 0.000 0.000
## .VarE 0.000 0.000 0.000
## F1 0.000 0.000 0.000
## F2 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .VarA (EA) 1.407 0.795 1.770 0.077 1.407 0.383
## .VarB (EB) 2.246 0.276 8.129 0.000 2.246 0.504
## .VarC (EC) 2.435 0.195 12.459 0.000 2.435 0.493
## .VarD (ED) 2.096 0.253 8.271 0.000 2.096 0.407
## .VarE (EE) 3.104 0.332 9.355 0.000 3.104 0.488
## F1 1.000 1.000 1.000
## F2 1.000 1.000 1.000
require(lavaangui)
#plot_lavaan(Fig10.11Result)