Figure 10.1 Factor with Unit Variance

Strictly Parallel Measurement
Strictly Parallel Measurement

Load Simulated Data

<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)

Strictly Parallel Measurement as Ruler

Parallel Measurement as a Ruler
Parallel Measurement as a Ruler
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)

Tau Equivalent Measurement

Tau Equivalent Measurement
Tau Equivalent Measurement
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")

Congeneric Measurement

Congeneric Measurement
Congeneric Measurement
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)

Congeneric Measurement as Ruler

Congeneric Measurement
Congeneric Measurement
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")

Equal Precision Measurement

Equal Precision Measurement
Equal Precision Measurement
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)

Random Intercept Measurement

Random Intercept Measurement
Random Intercept Measurement
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)

Random Intercept Equal Precision

Random Intercept Equal Precision Measurement
Random Intercept Equal Precision Measurement
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)

Alternate Random Intercept Equal Precision Measurement (Not in Book)

Random Intercept Equal Precision Measurement w/o Nonlinear Constraints
Random Intercept Equal Precision Measurement w/o Nonlinear Constraints

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)

Alternate Equal Precision Random Intercept Model with Different Variances

Random Intercept Equal Precision Measurement Separate RI Effects
Random Intercept Equal Precision Measurement Separate RI Effects

(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)

Triangular Factor Pattern

Triangular Factor Model
Triangular Factor Model
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)