Latent Class Analysis (LCA)
LCA classifies examinees into unordered latent classes. Specify the dataset and the number of classes.
LCA(J15S500, ncls = 5)
#>
#> Item Reference Profile
#> IRP1 IRP2 IRP3 IRP4 IRP5
#> Item01 0.5185 0.6996 0.76358 0.856 0.860
#> Item02 0.5529 0.6276 0.81161 0.888 0.855
#> Item03 0.7959 0.3205 0.93735 0.706 0.849
#> Item04 0.5069 0.5814 0.86940 0.873 1.000
#> Item05 0.6154 0.7523 0.94673 0.789 0.886
#> Item06 0.6840 0.7501 0.94822 1.000 0.907
#> Item07 0.4832 0.4395 0.83377 0.874 0.900
#> Item08 0.3767 0.3982 0.62563 0.912 0.590
#> Item09 0.3107 0.3980 0.26616 0.165 0.673
#> Item10 0.5290 0.5341 0.76134 0.677 0.781
#> Item11 0.1007 0.0497 0.00132 0.621 0.623
#> Item12 0.0355 0.1673 0.15911 0.296 0.673
#> Item13 0.2048 0.5490 0.89445 0.672 0.784
#> Item14 0.3508 0.7384 0.77159 0.904 1.000
#> Item15 0.3883 0.6077 0.82517 0.838 0.823
#>
#> Test Profile
#> Class 1 Class 2 Class 3 Class 4 Class 5
#> Test Reference Profile 6.453 7.613 10.415 11.072 12.205
#> Latent Class Ditribution 87.000 97.000 125.000 91.000 100.000
#> Class Membership Distribution 90.372 97.105 105.238 102.800 104.484
#>
#> Item Fit Indices
#> model_log_like bench_log_like null_log_like model_Chi_sq null_Chi_sq
#> Item01 -264.179 -240.190 -283.343 47.978 86.307
#> Item02 -256.363 -235.436 -278.949 41.853 87.025
#> Item03 -237.888 -260.906 -293.598 -46.037 65.383
#> Item04 -208.536 -192.072 -265.962 32.928 147.780
#> Item05 -226.447 -206.537 -247.403 39.819 81.732
#> Item06 -164.762 -153.940 -198.817 21.644 89.755
#> Item07 -249.377 -228.379 -298.345 41.997 139.933
#> Item08 -295.967 -293.225 -338.789 5.483 91.127
#> Item09 -294.250 -300.492 -327.842 -12.484 54.700
#> Item10 -306.985 -288.198 -319.850 37.574 63.303
#> Item11 -187.202 -224.085 -299.265 -73.767 150.360
#> Item12 -232.307 -214.797 -293.598 35.020 157.603
#> Item13 -267.647 -262.031 -328.396 11.232 132.730
#> Item14 -203.468 -204.953 -273.212 -2.969 136.519
#> Item15 -268.616 -254.764 -302.847 27.705 96.166
#> model_df null_df NFI RFI IFI TLI CFI RMSEA AIC CAIC
#> Item01 9 13 0.444 0.197 0.496 0.232 0.468 0.093 29.978 -16.954
#> Item02 9 13 0.519 0.305 0.579 0.359 0.556 0.086 23.853 -23.079
#> Item03 9 13 1.000 1.000 1.000 1.000 1.000 0.000 -64.037 -110.969
#> Item04 9 13 0.777 0.678 0.828 0.744 0.822 0.073 14.928 -32.004
#> Item05 9 13 0.513 0.296 0.576 0.352 0.552 0.083 21.819 -25.112
#> Item06 9 13 0.759 0.652 0.843 0.762 0.835 0.053 3.644 -43.287
#> Item07 9 13 0.700 0.566 0.748 0.625 0.740 0.086 23.997 -22.934
#> Item08 9 13 0.940 0.913 1.000 1.000 1.000 0.000 -12.517 -59.448
#> Item09 9 13 1.000 1.000 1.000 1.000 1.000 0.000 -30.484 -77.415
#> Item10 9 13 0.406 0.143 0.474 0.179 0.432 0.080 19.574 -27.357
#> Item11 9 13 1.000 1.000 1.000 1.000 1.000 0.000 -91.767 -138.698
#> Item12 9 13 0.778 0.679 0.825 0.740 0.820 0.076 17.020 -29.912
#> Item13 9 13 0.915 0.878 0.982 0.973 0.981 0.022 -6.768 -53.699
#> Item14 9 13 1.000 1.000 1.000 1.000 1.000 0.000 -20.969 -67.901
#> Item15 9 13 0.712 0.584 0.785 0.675 0.775 0.065 9.705 -37.226
#> BIC
#> Item01 -7.954
#> Item02 -14.079
#> Item03 -101.969
#> Item04 -23.004
#> Item05 -16.112
#> Item06 -34.287
#> Item07 -13.934
#> Item08 -50.448
#> Item09 -68.415
#> Item10 -18.357
#> Item11 -129.698
#> Item12 -20.912
#> Item13 -44.699
#> Item14 -58.901
#> Item15 -28.226
#>
#> Model Fit Indices
#> Number of Latent class: 5
#> Number of EM cycle: 73
#> value
#> model_log_like -3663.994
#> bench_log_like -3560.005
#> null_log_like -4350.217
#> model_Chi_sq 207.977
#> null_Chi_sq 1580.424
#> model_df 135.000
#> null_df 195.000
#> NFI 0.868
#> RFI 0.810
#> IFI 0.950
#> TLI 0.924
#> CFI 0.947
#> RMSEA 0.033
#> AIC -62.023
#> CAIC -765.995
#> BIC -630.995The Class Membership Matrix indicates which latent class each examinee belongs to:
result.LCA <- LCA(J15S500, ncls = 5)
head(result.LCA$Students)
#> Membership 1 Membership 2 Membership 3 Membership 4 Membership 5
#> Student001 0.7839477684 0.171152798 0.004141844 4.075759e-02 3.744590e-12
#> Student002 0.0347378747 0.051502214 0.836022799 7.773694e-02 1.698776e-07
#> Student003 0.0146307878 0.105488644 0.801853496 3.343026e-02 4.459682e-02
#> Student004 0.0017251650 0.023436459 0.329648386 3.656488e-01 2.795412e-01
#> Student005 0.2133830569 0.784162066 0.001484616 2.492073e-08 9.702355e-04
#> Student006 0.0003846482 0.001141448 0.001288901 8.733869e-01 1.237981e-01
#> Estimate
#> Student001 1
#> Student002 3
#> Student003 3
#> Student004 4
#> Student005 2
#> Student006 4LCA Plot Types
- IRP: Item Reference Profile
- CMP: Class Membership Profile
- TRP: Test Reference Profile
- LCD: Latent Class Distribution
plot(result.LCA, type = "IRP", items = 1:6, nc = 2, nr = 3)
plot(result.LCA, type = "CMP", students = 1:9, nc = 3, nr = 3)
plot(result.LCA, type = "TRP")
plot(result.LCA, type = "LCD")
Latent Rank Analysis (LRA)
LRA is similar to LCA but assumes an ordering among the latent classes (ranks). Specify the dataset and the number of ranks.
LRA(J15S500, nrank = 6)
#> estimating method is GTM
#> Item Reference Profile
#> IRP1 IRP2 IRP3 IRP4 IRP5 IRP6
#> Item01 0.5851 0.6319 0.708 0.787 0.853 0.898
#> Item02 0.5247 0.6290 0.755 0.845 0.883 0.875
#> Item03 0.6134 0.6095 0.708 0.773 0.801 0.839
#> Item04 0.4406 0.6073 0.794 0.882 0.939 0.976
#> Item05 0.6465 0.7452 0.821 0.837 0.862 0.905
#> Item06 0.6471 0.7748 0.911 0.967 0.963 0.915
#> Item07 0.4090 0.5177 0.720 0.840 0.890 0.900
#> Item08 0.3375 0.4292 0.602 0.713 0.735 0.698
#> Item09 0.3523 0.3199 0.298 0.282 0.377 0.542
#> Item10 0.4996 0.5793 0.686 0.729 0.717 0.753
#> Item11 0.0958 0.0793 0.136 0.286 0.472 0.617
#> Item12 0.0648 0.0982 0.156 0.239 0.421 0.636
#> Item13 0.2908 0.4842 0.715 0.773 0.750 0.778
#> Item14 0.4835 0.5949 0.729 0.849 0.933 0.977
#> Item15 0.3981 0.5745 0.756 0.827 0.835 0.834
#>
#> Item Reference Profile Indices
#> Alpha A Beta B Gamma C
#> Item01 3 0.0786 1 0.585 0.0 0.00000
#> Item02 2 0.1264 1 0.525 0.2 -0.00787
#> Item03 2 0.0987 2 0.610 0.2 -0.00391
#> Item04 2 0.1864 1 0.441 0.0 0.00000
#> Item05 1 0.0987 1 0.647 0.0 0.00000
#> Item06 2 0.1362 1 0.647 0.4 -0.05198
#> Item07 2 0.2028 2 0.518 0.0 0.00000
#> Item08 2 0.1731 2 0.429 0.2 -0.03676
#> Item09 5 0.1646 6 0.542 0.6 -0.07002
#> Item10 2 0.1069 1 0.500 0.2 -0.01244
#> Item11 4 0.1867 5 0.472 0.2 -0.01650
#> Item12 5 0.2146 5 0.421 0.0 0.00000
#> Item13 2 0.2310 2 0.484 0.2 -0.02341
#> Item14 2 0.1336 1 0.484 0.0 0.00000
#> Item15 2 0.1817 2 0.574 0.2 -0.00123
#>
#> Test Profile
#> Rank 1 Rank 2 Rank 3 Rank 4 Rank 5 Rank 6
#> Test Reference Profile 6.389 7.675 9.496 10.631 11.432 12.144
#> Latent Rank Ditribution 96.000 60.000 91.000 77.000 73.000 103.000
#> Rank Membership Distribution 83.755 78.691 81.853 84.918 84.238 86.545
#>
#> Item Fit Indices
#> model_log_like bench_log_like null_log_like model_Chi_sq null_Chi_sq
#> Item01 -264.495 -240.190 -283.343 48.611 86.307
#> Item02 -253.141 -235.436 -278.949 35.409 87.025
#> Item03 -282.785 -260.906 -293.598 43.758 65.383
#> Item04 -207.082 -192.072 -265.962 30.021 147.780
#> Item05 -234.902 -206.537 -247.403 56.730 81.732
#> Item06 -168.218 -153.940 -198.817 28.556 89.755
#> Item07 -250.864 -228.379 -298.345 44.970 139.933
#> Item08 -312.621 -293.225 -338.789 38.791 91.127
#> Item09 -317.600 -300.492 -327.842 34.216 54.700
#> Item10 -309.654 -288.198 -319.850 42.910 63.303
#> Item11 -242.821 -224.085 -299.265 37.472 150.360
#> Item12 -236.522 -214.797 -293.598 43.451 157.603
#> Item13 -287.782 -262.031 -328.396 51.502 132.730
#> Item14 -221.702 -204.953 -273.212 33.499 136.519
#> Item15 -267.793 -254.764 -302.847 26.059 96.166
#> model_df null_df NFI RFI IFI TLI CFI RMSEA AIC CAIC
#> Item01 9.233 13 0.437 0.207 0.489 0.244 0.463 0.092 30.146 -17.999
#> Item02 9.233 13 0.593 0.427 0.664 0.502 0.646 0.075 16.944 -31.201
#> Item03 9.233 13 0.331 0.058 0.385 0.072 0.341 0.087 25.293 -22.852
#> Item04 9.233 13 0.797 0.714 0.850 0.783 0.846 0.067 11.555 -36.590
#> Item05 9.233 13 0.306 0.023 0.345 0.027 0.309 0.102 38.264 -9.881
#> Item06 9.233 13 0.682 0.552 0.760 0.646 0.748 0.065 10.091 -38.054
#> Item07 9.233 13 0.679 0.548 0.727 0.604 0.718 0.088 26.504 -21.641
#> Item08 9.233 13 0.574 0.401 0.639 0.467 0.622 0.080 20.326 -27.820
#> Item09 9.233 13 0.374 0.119 0.451 0.156 0.401 0.074 15.751 -32.394
#> Item10 9.233 13 0.322 0.046 0.377 0.057 0.330 0.085 24.445 -23.700
#> Item11 9.233 13 0.751 0.649 0.800 0.711 0.794 0.078 19.006 -29.139
#> Item12 9.233 13 0.724 0.612 0.769 0.667 0.763 0.086 24.985 -23.160
#> Item13 9.233 13 0.612 0.454 0.658 0.503 0.647 0.096 33.037 -15.108
#> Item14 9.233 13 0.755 0.654 0.809 0.723 0.804 0.073 15.034 -33.111
#> Item15 9.233 13 0.729 0.618 0.806 0.715 0.798 0.060 7.593 -40.552
#> BIC
#> Item01 -8.767
#> Item02 -21.969
#> Item03 -13.620
#> Item04 -27.357
#> Item05 -0.648
#> Item06 -28.822
#> Item07 -12.408
#> Item08 -18.587
#> Item09 -23.162
#> Item10 -14.467
#> Item11 -19.906
#> Item12 -13.927
#> Item13 -5.875
#> Item14 -23.879
#> Item15 -31.319
#>
#> Model Fit Indices
#> Number of Latent rank: 6
#> Number of EM cycle: 17
#> value
#> model_log_like -3857.982
#> bench_log_like -3560.005
#> null_log_like -4350.217
#> model_Chi_sq 595.954
#> null_Chi_sq 1580.424
#> model_df 138.491
#> null_df 195.000
#> NFI 0.623
#> RFI 0.469
#> IFI 0.683
#> TLI 0.535
#> CFI 0.670
#> RMSEA 0.081
#> AIC 318.973
#> CAIC -403.203
#> BIC -264.712Rank membership probabilities and rank-up/rank-down odds are calculated:
result.LRA <- LRA(J15S500, nrank = 6)
head(result.LRA$Students)
#> Membership 1 Membership 2 Membership 3 Membership 4 Membership 5
#> Student001 0.2704649921 0.357479353 0.27632327 0.084988078 0.010069050
#> Student002 0.0276546965 0.157616072 0.47438958 0.279914853 0.053715813
#> Student003 0.0228189795 0.138860955 0.37884545 0.284817610 0.120794858
#> Student004 0.0020140858 0.015608542 0.09629429 0.216973334 0.362406292
#> Student005 0.5582996437 0.397431414 0.03841668 0.003365601 0.001443909
#> Student006 0.0003866603 0.003168853 0.04801344 0.248329964 0.428747502
#> Membership 6 Estimate Rank-Up Odds Rank-Down Odds
#> Student001 0.0006752546 2 0.7729769 0.7565891
#> Student002 0.0067089816 3 0.5900527 0.3322503
#> Student003 0.0538621490 3 0.7518042 0.3665372
#> Student004 0.3067034562 5 0.8462973 0.5987019
#> Student005 0.0010427491 1 0.7118604 NA
#> Student006 0.2713535842 5 0.6328983 0.5791986
plot(result.LRA, type = "IRP", items = 1:6, nc = 2, nr = 3)
plot(result.LRA, type = "RMP", students = 1:9, nc = 3, nr = 3)
plot(result.LRA, type = "TRP")
plot(result.LRA, type = "LRD")
LRA for Ordinal Data
LRA can also handle ordinal scale data. The mic option
enforces monotonic increasing constraints.
result.LRAord <- LRA(J15S3810, nrank = 3, mic = TRUE)Score-rank relationship visualizations:
plot(result.LRAord, type = "ScoreFreq")
plot(result.LRAord, type = "ScoreRank")
Item-rank relationship plots:
- ICBR: Item Category Boundary Reference – cumulative probability curves for each category threshold
- ICRP: Item Category Response Profile – probability of each response category across ranks
plot(result.LRAord, type = "ICBR", items = 1:4, nc = 2, nr = 2)
plot(result.LRAord, type = "ICRP", items = 1:4, nc = 2, nr = 2)
Rank membership profiles for individual examinees:
plot(result.LRAord, type = "RMP", students = 1:9, nc = 3, nr = 3)
LRA for Rated/Nominal Data
For multiple-choice tests (nominal scale), LRA can analyze response patterns including distractor choices.
result.LRArated <- LRA(J35S5000, nrank = 10, mic = TRUE)
plot(result.LRArated, type = "ScoreFreq")
plot(result.LRArated, type = "ScoreRank")
plot(result.LRArated, type = "ICRP", items = 1:4, nc = 2, nr = 2)
