Skip to contents

We generate data using the CULTA model with two latent profiles, where profile membership depends on a covariate and profile transitions follow a multinomial structure. However, for model fitting, we impose a simpler structure by fitting a CUTS (1 Profile) model with autoregressive effects, ignoring the latent profiles during estimation. We then compare this misspecified model to the correctly specified two-profile CULTA model.

Data Generation

# complete list of R function arguments

# random seed for reproducibility
set.seed(42)

# dimensions
n # number of individuals
#> [1] 200
m # measurement occasions
#> [1] 6
p # number of items
#> [1] 4
q # common trait dimension
#> [1] 1

# covariate parameters
mu_x 
#> [1] 0
sigma_x
#> [1] 1

# profile membership and transition parameters
nu_0
#> [1] -0.405
kappa_0
#> [1] 0.1
alpha_0
#> [1] -0.5
beta_00
#> [1] 0.85
gamma_00
#> [1] 0.2
gamma_10
#> [1] 0.2

# trait parameters
psi_t
#>      [,1]
#> [1,]  0.3
mu_t
#> [1] 0
psi_p
#>      [,1] [,2] [,3] [,4]
#> [1,]  0.3  0.0  0.0  0.0
#> [2,]  0.0  0.3  0.0  0.0
#> [3,]  0.0  0.0  0.3  0.0
#> [4,]  0.0  0.0  0.0  0.3
mu_p
#> [1] 0 0 0 0
common_trait_loading
#>      [,1]
#> [1,]    1
#> [2,]    1
#> [3,]    1
#> [4,]    1

# state parameters
common_state_loading
#>      [,1]
#> [1,]    1
#> [2,]    1
#> [3,]    1
#> [4,]    1
phi_0
#> [1] 0
phi_1
#> [1] 0.311
psi_s0
#> [1] 1
psi_s
#> [1] 0.5
theta
#>      [,1] [,2] [,3] [,4]
#> [1,]  0.2  0.0  0.0  0.0
#> [2,]  0.0  0.2  0.0  0.0
#> [3,]  0.0  0.0  0.2  0.0
#> [4,]  0.0  0.0  0.0  0.2

# profile-specific means
mu_profile
#>       [,1]   [,2]
#> [1,] 2.253 -0.278
#> [2,] 1.493 -0.165
#> [3,] 1.574 -0.199
#> [4,] 1.117 -0.148

# starting values
starting_values
#> $nu_0
#> [1] -0.405
#> 
#> $kappa_0
#> [1] 0.1
#> 
#> $alpha_0
#> [1] -0.5
#> 
#> $beta_00
#> [1] 0.85
#> 
#> $gamma_00
#> [1] 0.2
#> 
#> $gamma_10
#> [1] 0.2
#> 
#> $psi_t
#>      [,1]
#> [1,]  0.3
#> 
#> $psi_p
#>      [,1] [,2] [,3] [,4]
#> [1,]  0.3  0.0  0.0  0.0
#> [2,]  0.0  0.3  0.0  0.0
#> [3,]  0.0  0.0  0.3  0.0
#> [4,]  0.0  0.0  0.0  0.3
#> 
#> $common_trait_loading
#>      [,1]
#> [1,]    1
#> [2,]    1
#> [3,]    1
#> [4,]    1
#> 
#> $common_state_loading
#>      [,1]
#> [1,]    1
#> [2,]    1
#> [3,]    1
#> [4,]    1
#> 
#> $phi_0
#> [1] 0
#> 
#> $phi_1
#> [1] 0.311
#> 
#> $psi_s0
#> [1] 1
#> 
#> $psi_s
#> [1] 0.5
#> 
#> $theta
#>      [,1] [,2] [,3] [,4]
#> [1,]  0.2  0.0  0.0  0.0
#> [2,]  0.0  0.2  0.0  0.0
#> [3,]  0.0  0.0  0.2  0.0
#> [4,]  0.0  0.0  0.0  0.2
#> 
#> $mu_profile
#>       [,1]   [,2]
#> [1,] 2.253 -0.278
#> [2,] 1.493 -0.165
#> [3,] 1.574 -0.199
#> [4,] 1.117 -0.148
data <- GenCULTA2Profiles(
  n = n,
  m = m,
  mu_x = mu_x,
  sigma_x = sigma_x,
  nu_0 = nu_0,
  kappa_0 = kappa_0,
  alpha_0 = alpha_0,
  beta_00 = beta_00,
  gamma_00 = gamma_00,
  gamma_10 = gamma_10,
  mu_t = mu_t,
  psi_t = psi_t,
  mu_p = mu_p,
  psi_p = psi_p,
  common_trait_loading = common_trait_loading,
  common_state_loading = common_state_loading,
  phi_0 = phi_0,
  phi_1 = phi_1,
  psi_s0 = psi_s0,
  psi_s = psi_s,
  theta = theta, 
  mu_profile = mu_profile
)

Model Fitting

The FitCULTA1Profiles function fits the misspecified one-profile model using Mplus. Note: This function requires that Mplus is already installed on the system.

one_profile_starts <- FitCULTA1Profile(
  data = data,
  starts = 1000,
  starting_values = starting_values
)
summary(one_profile_starts)
#>              est     se       z      p   2.5%  97.5%
#> mu_1      0.8760 0.0756 11.5939 0.0000 0.7279 1.0241
#> mu_2      0.6893 0.0680 10.1375 0.0000 0.5561 0.8226
#> mu_3      0.6653 0.0693  9.5992 0.0000 0.5295 0.8011
#> mu_4      0.5206 0.0616  8.4480 0.0000 0.3999 0.6414
#> lambda_t2 0.9405 0.1094  8.5960 0.0000 0.7260 1.1549
#> lambda_s2 0.7756 0.0146 53.0696 0.0000 0.7470 0.8043
#> lambda_t3 0.9325 0.1525  6.1157 0.0000 0.6337 1.2314
#> lambda_s3 0.8070 0.0145 55.5545 0.0000 0.7785 0.8355
#> lambda_t4 0.7139 0.1305  5.4708 0.0000 0.4582 0.9697
#> lambda_s4 0.6782 0.0137 49.4419 0.0000 0.6513 0.7051
#> theta_11  0.2968 0.0198 14.9955 0.0000 0.2580 0.3356
#> theta_22  0.2219 0.0125 17.6984 0.0000 0.1973 0.2465
#> theta_33  0.1966 0.0126 15.6618 0.0000 0.1720 0.2212
#> theta_44  0.2273 0.0112 20.3052 0.0000 0.2054 0.2493
#> phi       0.2302 0.0430  5.3475 0.0000 0.1458 0.3145
#> psi_t     0.3828 0.1265  3.0269 0.0025 0.1349 0.6306
#> psi_p_11  0.2208 0.0479  4.6083 0.0000 0.1269 0.3147
#> psi_p_22  0.2495 0.0383  6.5065 0.0000 0.1743 0.3246
#> psi_p_33  0.2732 0.0501  5.4483 0.0000 0.1749 0.3714
#> psi_p_44  0.3006 0.0451  6.6618 0.0000 0.2122 0.3891
#> psi_s0    2.9677 0.2988  9.9310 0.0000 2.3820 3.5534
#> psi_s     1.8330 0.0883 20.7648 0.0000 1.6600 2.0060
one_profile <- FitCULTA1Profile(
  data = data,
  starts = 1000
)
summary(one_profile)
#>              est     se       z      p   2.5%  97.5%
#> mu_1      0.8760 0.0756 11.5939 0.0000 0.7279 1.0241
#> mu_2      0.6893 0.0680 10.1375 0.0000 0.5561 0.8226
#> mu_3      0.6653 0.0693  9.5992 0.0000 0.5295 0.8011
#> mu_4      0.5206 0.0616  8.4480 0.0000 0.3999 0.6414
#> lambda_t2 0.9405 0.1094  8.5960 0.0000 0.7260 1.1549
#> lambda_s2 0.7756 0.0146 53.0696 0.0000 0.7470 0.8043
#> lambda_t3 0.9325 0.1525  6.1158 0.0000 0.6337 1.2314
#> lambda_s3 0.8070 0.0145 55.5545 0.0000 0.7785 0.8355
#> lambda_t4 0.7139 0.1305  5.4709 0.0000 0.4582 0.9697
#> lambda_s4 0.6782 0.0137 49.4419 0.0000 0.6513 0.7051
#> theta_11  0.2968 0.0198 14.9955 0.0000 0.2580 0.3356
#> theta_22  0.2219 0.0125 17.6984 0.0000 0.1973 0.2465
#> theta_33  0.1966 0.0126 15.6618 0.0000 0.1720 0.2212
#> theta_44  0.2273 0.0112 20.3052 0.0000 0.2054 0.2493
#> phi       0.2302 0.0430  5.3475 0.0000 0.1458 0.3145
#> psi_t     0.3828 0.1265  3.0269 0.0025 0.1349 0.6306
#> psi_p_11  0.2208 0.0479  4.6083 0.0000 0.1269 0.3147
#> psi_p_22  0.2495 0.0383  6.5065 0.0000 0.1743 0.3246
#> psi_p_33  0.2732 0.0501  5.4483 0.0000 0.1749 0.3714
#> psi_p_44  0.3006 0.0451  6.6618 0.0000 0.2122 0.3891
#> psi_s0    2.9677 0.2988  9.9310 0.0000 2.3820 3.5534
#> psi_s     1.8330 0.0883 20.7648 0.0000 1.6600 2.0060
summary(one_profile_starts) - summary(one_profile)
#>           est se      z p 2.5% 97.5%
#> mu_1        0  0  0e+00 0    0     0
#> mu_2        0  0  0e+00 0    0     0
#> mu_3        0  0  0e+00 0    0     0
#> mu_4        0  0  0e+00 0    0     0
#> lambda_t2   0  0  0e+00 0    0     0
#> lambda_s2   0  0  0e+00 0    0     0
#> lambda_t3   0  0 -1e-04 0    0     0
#> lambda_s3   0  0  0e+00 0    0     0
#> lambda_t4   0  0 -1e-04 0    0     0
#> lambda_s4   0  0  0e+00 0    0     0
#> theta_11    0  0  0e+00 0    0     0
#> theta_22    0  0  0e+00 0    0     0
#> theta_33    0  0  0e+00 0    0     0
#> theta_44    0  0  0e+00 0    0     0
#> phi         0  0  0e+00 0    0     0
#> psi_t       0  0  0e+00 0    0     0
#> psi_p_11    0  0  0e+00 0    0     0
#> psi_p_22    0  0  0e+00 0    0     0
#> psi_p_33    0  0  0e+00 0    0     0
#> psi_p_44    0  0  0e+00 0    0     0
#> psi_s0      0  0  0e+00 0    0     0
#> psi_s       0  0  0e+00 0    0     0

The FitLTA2Profiles function fits the misspecified two-profile LTA model using Mplus.

lta_starts <- FitLTA2Profiles(
  data = data,
  ncores = parallel::detectCores(),
  starts = c(500, 100),
  stiterations = 200,
  stscale = 2,
  starting_values = starting_values
)
summary(lta_starts)
#>              est     se       z      p    2.5%   97.5%
#> mu_10     2.1869 0.0983 22.2454 0.0000  1.9943  2.3796
#> mu_20     1.7065 0.0886 19.2540 0.0000  1.5328  1.8802
#> mu_30     1.7080 0.0933 18.3092 0.0000  1.5252  1.8909
#> mu_40     1.4069 0.0718 19.5976 0.0000  1.2662  1.5476
#> theta_11  1.2348 0.0699 17.6596 0.0000  1.0978  1.3718
#> theta_22  1.0071 0.0562 17.9177 0.0000  0.8969  1.1172
#> theta_33  1.0504 0.0658 15.9581 0.0000  0.9214  1.1795
#> theta_44  0.8839 0.0507 17.4488 0.0000  0.7847  0.9832
#> mu_11    -0.4860 0.1050 -4.6287 0.0000 -0.6918 -0.2802
#> mu_21    -0.3674 0.0886 -4.1472 0.0000 -0.5410 -0.1938
#> mu_31    -0.4181 0.0921 -4.5386 0.0000 -0.5986 -0.2375
#> mu_41    -0.4001 0.0833 -4.8030 0.0000 -0.5633 -0.2368
#> nu_0      0.0347 0.1507  0.2300 0.8181 -0.2607  0.3301
#> alpha_0  -0.5490 0.1362 -4.0298 0.0001 -0.8161 -0.2820
#> kappa_0   0.4532 0.1661  2.7285 0.0064  0.1277  0.7788
#> beta_00   1.2141 0.1832  6.6269 0.0000  0.8550  1.5732
#> gamma_00  0.1396 0.1121  1.2456 0.2129 -0.0801  0.3592
#> gamma_10  0.1272 0.1202  1.0582 0.2899 -0.1084  0.3629
lta <- FitLTA2Profiles(
  data = data,
  ncores = parallel::detectCores(),
  starts = c(500, 100),
  stiterations = 200,
  stscale = 2
)
summary(lta)
#>              est     se       z      p    2.5%   97.5%
#> mu_10     2.1870 0.0983 22.2453 0.0000  1.9943  2.3796
#> mu_20     1.7065 0.0886 19.2539 0.0000  1.5328  1.8802
#> mu_30     1.7080 0.0933 18.3091 0.0000  1.5252  1.8909
#> mu_40     1.4069 0.0718 19.5975 0.0000  1.2662  1.5476
#> theta_11  1.2348 0.0699 17.6596 0.0000  1.0977  1.3718
#> theta_22  1.0071 0.0562 17.9177 0.0000  0.8969  1.1172
#> theta_33  1.0504 0.0658 15.9581 0.0000  0.9214  1.1795
#> theta_44  0.8840 0.0507 17.4488 0.0000  0.7847  0.9832
#> mu_11    -0.4860 0.1050 -4.6285 0.0000 -0.6917 -0.2802
#> mu_21    -0.3674 0.0886 -4.1471 0.0000 -0.5410 -0.1938
#> mu_31    -0.4180 0.0921 -4.5385 0.0000 -0.5986 -0.2375
#> mu_41    -0.4001 0.0833 -4.8028 0.0000 -0.5633 -0.2368
#> nu_0      0.0346 0.1507  0.2299 0.8182 -0.2608  0.3300
#> alpha_0  -0.5490 0.1362 -4.0299 0.0001 -0.8161 -0.2820
#> kappa_0   0.4532 0.1661  2.7285 0.0064  0.1277  0.7788
#> beta_00   1.2141 0.1832  6.6268 0.0000  0.8550  1.5732
#> gamma_00  0.1396 0.1121  1.2455 0.2129 -0.0801  0.3592
#> gamma_10  0.1273 0.1202  1.0584 0.2899 -0.1084  0.3629
summary(lta_starts) - summary(lta)
#>             est se      z      p   2.5% 97.5%
#> mu_10    -1e-04  0  1e-04  0e+00  0e+00 0e+00
#> mu_20     0e+00  0  1e-04  0e+00  0e+00 0e+00
#> mu_30     0e+00  0  1e-04  0e+00  0e+00 0e+00
#> mu_40     0e+00  0  1e-04  0e+00  0e+00 0e+00
#> theta_11  0e+00  0  0e+00  0e+00  1e-04 0e+00
#> theta_22  0e+00  0  0e+00  0e+00  0e+00 0e+00
#> theta_33  0e+00  0  0e+00  0e+00  0e+00 0e+00
#> theta_44 -1e-04  0  0e+00  0e+00  0e+00 0e+00
#> mu_11     0e+00  0 -2e-04  0e+00 -1e-04 0e+00
#> mu_21     0e+00  0 -1e-04  0e+00  0e+00 0e+00
#> mu_31    -1e-04  0 -1e-04  0e+00  0e+00 0e+00
#> mu_41     0e+00  0 -2e-04  0e+00  0e+00 0e+00
#> nu_0      1e-04  0  1e-04 -1e-04  1e-04 1e-04
#> alpha_0   0e+00  0  1e-04  0e+00  0e+00 0e+00
#> kappa_0   0e+00  0  0e+00  0e+00  0e+00 0e+00
#> beta_00   0e+00  0  1e-04  0e+00  0e+00 0e+00
#> gamma_00  0e+00  0  1e-04  0e+00  0e+00 0e+00
#> gamma_10 -1e-04  0 -2e-04  0e+00  0e+00 0e+00

The FitRILTA2Profiles function fits the misspecified two-profile RILTA model using Mplus.

rilta_starts <- FitRILTA2Profiles(
  data = data,
  ncores = parallel::detectCores(),
  starts = c(500, 100),
  stiterations = 200,
  stscale = 2,
  starting_values = starting_values
)
summary(rilta_starts)
#>               est     se       z      p    2.5%   97.5%
#> mu_10      2.2036 0.0838 26.2943 0.0000  2.0393  2.3678
#> mu_20      1.6653 0.0791 21.0455 0.0000  1.5102  1.8204
#> mu_30      1.6534 0.0807 20.5009 0.0000  1.4953  1.8115
#> mu_40      1.3753 0.0703 19.5698 0.0000  1.2375  1.5130
#> lambda_t1  0.8898 0.0775 11.4746 0.0000  0.7378  1.0418
#> lambda_t2  0.8338 0.0696 11.9803 0.0000  0.6974  0.9702
#> lambda_t3  0.8936 0.0698 12.7993 0.0000  0.7567  1.0304
#> lambda_t4  0.6783 0.0555 12.2293 0.0000  0.5696  0.7870
#> theta_11   0.8115 0.0486 16.6939 0.0000  0.7162  0.9067
#> theta_22   0.6660 0.0370 18.0193 0.0000  0.5936  0.7385
#> theta_33   0.6553 0.0445 14.7383 0.0000  0.5682  0.7425
#> theta_44   0.6758 0.0472 14.3098 0.0000  0.5832  0.7683
#> mu_11     -0.4208 0.0875 -4.8092 0.0000 -0.5922 -0.2493
#> mu_21     -0.2640 0.0786 -3.3574 0.0008 -0.4181 -0.1099
#> mu_31     -0.3000 0.0816 -3.6778 0.0002 -0.4599 -0.1401
#> mu_41     -0.3142 0.0733 -4.2882 0.0000 -0.4578 -0.1706
#> nu_0      -0.0013 0.1546 -0.0087 0.9930 -0.3044  0.3017
#> alpha_0   -0.4056 0.1117 -3.6325 0.0003 -0.6244 -0.1868
#> kappa_0    0.4159 0.1658  2.5082 0.0121  0.0909  0.7408
#> beta_00    0.8192 0.1502  5.4528 0.0000  0.5248  1.1137
#> gamma_00   0.0853 0.0939  0.9090 0.3633 -0.0987  0.2693
#> gamma_10   0.1172 0.1131  1.0369 0.2998 -0.1044  0.3388
rilta <- FitRILTA2Profiles(
  data = data,
  ncores = parallel::detectCores(),
  starts = c(500, 100),
  stiterations = 200,
  stscale = 2
)
summary(rilta)
#>               est     se       z      p    2.5%   97.5%
#> mu_10      2.2036 0.0838 26.2944 0.0000  2.0393  2.3678
#> mu_20      1.6653 0.0791 21.0455 0.0000  1.5102  1.8204
#> mu_30      1.6534 0.0807 20.5009 0.0000  1.4953  1.8115
#> mu_40      1.3753 0.0703 19.5698 0.0000  1.2375  1.5130
#> lambda_t1  0.8898 0.0775 11.4746 0.0000  0.7378  1.0418
#> lambda_t2  0.8338 0.0696 11.9803 0.0000  0.6974  0.9702
#> lambda_t3  0.8936 0.0698 12.7993 0.0000  0.7567  1.0304
#> lambda_t4  0.6783 0.0555 12.2293 0.0000  0.5696  0.7870
#> theta_11   0.8115 0.0486 16.6939 0.0000  0.7162  0.9067
#> theta_22   0.6660 0.0370 18.0193 0.0000  0.5936  0.7385
#> theta_33   0.6553 0.0445 14.7383 0.0000  0.5682  0.7425
#> theta_44   0.6758 0.0472 14.3098 0.0000  0.5832  0.7683
#> mu_11     -0.4207 0.0875 -4.8091 0.0000 -0.5922 -0.2493
#> mu_21     -0.2640 0.0786 -3.3574 0.0008 -0.4181 -0.1099
#> mu_31     -0.3000 0.0816 -3.6778 0.0002 -0.4599 -0.1401
#> mu_41     -0.3142 0.0733 -4.2882 0.0000 -0.4578 -0.1706
#> nu_0      -0.0014 0.1546 -0.0087 0.9930 -0.3044  0.3017
#> alpha_0   -0.4056 0.1117 -3.6325 0.0003 -0.6244 -0.1868
#> kappa_0    0.4159 0.1658  2.5082 0.0121  0.0909  0.7408
#> beta_00    0.8192 0.1502  5.4528 0.0000  0.5248  1.1137
#> gamma_00   0.0853 0.0939  0.9090 0.3634 -0.0987  0.2693
#> gamma_10   0.1172 0.1131  1.0369 0.2998 -0.1044  0.3388
summary(rilta_starts) - summary(rilta)
#>              est se      z      p 2.5% 97.5%
#> mu_10      0e+00  0 -1e-04  0e+00    0     0
#> mu_20      0e+00  0  0e+00  0e+00    0     0
#> mu_30      0e+00  0  0e+00  0e+00    0     0
#> mu_40      0e+00  0  0e+00  0e+00    0     0
#> lambda_t1  0e+00  0  0e+00  0e+00    0     0
#> lambda_t2  0e+00  0  0e+00  0e+00    0     0
#> lambda_t3  0e+00  0  0e+00  0e+00    0     0
#> lambda_t4  0e+00  0  0e+00  0e+00    0     0
#> theta_11   0e+00  0  0e+00  0e+00    0     0
#> theta_22   0e+00  0  0e+00  0e+00    0     0
#> theta_33   0e+00  0  0e+00  0e+00    0     0
#> theta_44   0e+00  0  0e+00  0e+00    0     0
#> mu_11     -1e-04  0 -1e-04  0e+00    0     0
#> mu_21      0e+00  0  0e+00  0e+00    0     0
#> mu_31      0e+00  0  0e+00  0e+00    0     0
#> mu_41      0e+00  0  0e+00  0e+00    0     0
#> nu_0       1e-04  0  0e+00  0e+00    0     0
#> alpha_0    0e+00  0  0e+00  0e+00    0     0
#> kappa_0    0e+00  0  0e+00  0e+00    0     0
#> beta_00    0e+00  0  0e+00  0e+00    0     0
#> gamma_00   0e+00  0  0e+00 -1e-04    0     0
#> gamma_10   0e+00  0  0e+00  0e+00    0     0

The FitCULTA2Profiles function fits the correct two-profile model using Mplus.

two_profiles_starts <- FitCULTA2Profiles(
  data = data,
  ncores = parallel::detectCores(),
  starts = c(500, 100),
  stiterations = 200,
  stscale = 2,
  starting_values = starting_values
)
summary(two_profiles_starts)
#>               est     se       z      p    2.5%   97.5%
#> mu_10      2.1695 0.0815 26.6120 0.0000  2.0097  2.3293
#> mu_20      1.5565 0.0779 19.9825 0.0000  1.4039  1.7092
#> mu_30      1.5795 0.0750 21.0706 0.0000  1.4326  1.7264
#> mu_40      1.1605 0.0697 16.6383 0.0000  1.0238  1.2972
#> lambda_t2  0.9352 0.0958  9.7664 0.0000  0.7475  1.1229
#> lambda_s2  0.9350 0.0408 22.9064 0.0000  0.8550  1.0150
#> lambda_t3  0.9094 0.1310  6.9414 0.0000  0.6526  1.1662
#> lambda_s3  0.9566 0.0459 20.8266 0.0000  0.8666  1.0466
#> lambda_t4  0.6841 0.1047  6.5324 0.0000  0.4788  0.8893
#> lambda_s4  1.0039 0.0452 22.1996 0.0000  0.9152  1.0925
#> theta_11   0.2217 0.0173 12.8373 0.0000  0.1878  0.2555
#> theta_22   0.2296 0.0122 18.8167 0.0000  0.2057  0.2535
#> theta_33   0.2072 0.0124 16.7196 0.0000  0.1829  0.2315
#> theta_44   0.1752 0.0178  9.8303 0.0000  0.1403  0.2101
#> phi_0     -0.0100 0.0669 -0.1490 0.8816 -0.1411  0.1211
#> psi_t      0.4327 0.1040  4.1613 0.0000  0.2289  0.6365
#> psi_p_11   0.2222 0.0485  4.5845 0.0000  0.1272  0.3172
#> psi_p_22   0.2469 0.0382  6.4666 0.0000  0.1721  0.3218
#> psi_p_33   0.2741 0.0500  5.4860 0.0000  0.1762  0.3720
#> psi_p_44   0.3041 0.0450  6.7518 0.0000  0.2158  0.3924
#> psi_s0     1.1565 0.2344  4.9338 0.0000  0.6971  1.6160
#> psi_s      0.4781 0.0639  7.4876 0.0000  0.3530  0.6033
#> mu_11     -0.2860 0.0898 -3.1855 0.0014 -0.4619 -0.1100
#> mu_21     -0.0881 0.0757 -1.1636 0.2446 -0.2365  0.0603
#> mu_31     -0.1545 0.0771 -2.0044 0.0450 -0.3056 -0.0034
#> mu_41     -0.0511 0.0758 -0.6745 0.5000 -0.1996  0.0974
#> phi_1      0.3327 0.0676  4.9230 0.0000  0.2002  0.4651
#> nu_0      -0.2154 0.1909 -1.1282 0.2592 -0.5896  0.1588
#> alpha_0   -0.3451 0.1259 -2.7405 0.0061 -0.5920 -0.0983
#> kappa_0    0.3926 0.2298  1.7083 0.0876 -0.0578  0.8431
#> beta_00    0.6690 0.1680  3.9812 0.0001  0.3396  0.9983
#> gamma_00   0.2315 0.1087  2.1307 0.0331  0.0186  0.4445
#> gamma_10   0.2816 0.1137  2.4767 0.0133  0.0587  0.5044
two_profiles <- FitCULTA2Profiles(
  data = data,
  ncores = parallel::detectCores(),
  starts = c(500, 100),
  stiterations = 200,
  stscale = 2
)
summary(two_profiles)
#>               est     se       z      p    2.5%   97.5%
#> mu_10      2.1695 0.0815 26.6118 0.0000  2.0097  2.3293
#> mu_20      1.5565 0.0779 19.9824 0.0000  1.4039  1.7092
#> mu_30      1.5795 0.0750 21.0706 0.0000  1.4326  1.7264
#> mu_40      1.1605 0.0698 16.6377 0.0000  1.0238  1.2972
#> lambda_t2  0.9352 0.0958  9.7663 0.0000  0.7475  1.1229
#> lambda_s2  0.9350 0.0408 22.9064 0.0000  0.8550  1.0150
#> lambda_t3  0.9094 0.1310  6.9413 0.0000  0.6526  1.1662
#> lambda_s3  0.9566 0.0459 20.8264 0.0000  0.8666  1.0466
#> lambda_t4  0.6841 0.1047  6.5324 0.0000  0.4788  0.8893
#> lambda_s4  1.0039 0.0452 22.1997 0.0000  0.9152  1.0925
#> theta_11   0.2217 0.0173 12.8371 0.0000  0.1878  0.2555
#> theta_22   0.2296 0.0122 18.8169 0.0000  0.2057  0.2535
#> theta_33   0.2072 0.0124 16.7196 0.0000  0.1829  0.2315
#> theta_44   0.1752 0.0178  9.8294 0.0000  0.1403  0.2101
#> phi_0     -0.0100 0.0669 -0.1489 0.8817 -0.1411  0.1212
#> psi_t      0.4327 0.1040  4.1612 0.0000  0.2289  0.6365
#> psi_p_11   0.2222 0.0485  4.5845 0.0000  0.1272  0.3172
#> psi_p_22   0.2469 0.0382  6.4665 0.0000  0.1721  0.3218
#> psi_p_33   0.2741 0.0500  5.4859 0.0000  0.1762  0.3720
#> psi_p_44   0.3041 0.0450  6.7518 0.0000  0.2158  0.3924
#> psi_s0     1.1566 0.2344  4.9337 0.0000  0.6971  1.6160
#> psi_s      0.4781 0.0639  7.4873 0.0000  0.3530  0.6033
#> mu_11     -0.2859 0.0898 -3.1853 0.0014 -0.4619 -0.1100
#> mu_21     -0.0881 0.0757 -1.1634 0.2447 -0.2365  0.0603
#> mu_31     -0.1545 0.0771 -2.0043 0.0450 -0.3056 -0.0034
#> mu_41     -0.0511 0.0758 -0.6742 0.5002 -0.1996  0.0974
#> phi_1      0.3327 0.0676  4.9230 0.0000  0.2002  0.4651
#> nu_0      -0.2154 0.1909 -1.1283 0.2592 -0.5896  0.1588
#> alpha_0   -0.3451 0.1259 -2.7405 0.0061 -0.5920 -0.0983
#> kappa_0    0.3926 0.2298  1.7083 0.0876 -0.0578  0.8431
#> beta_00    0.6690 0.1680  3.9811 0.0001  0.3396  0.9983
#> gamma_00   0.2315 0.1087  2.1308 0.0331  0.0186  0.4445
#> gamma_10   0.2816 0.1137  2.4768 0.0133  0.0588  0.5044
summary(two_profiles_starts) - summary(two_profiles)
#>              est     se      z      p   2.5%  97.5%
#> mu_10      0e+00  0e+00  2e-04  0e+00  0e+00  0e+00
#> mu_20      0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> mu_30      0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> mu_40      0e+00 -1e-04  6e-04  0e+00  0e+00  0e+00
#> lambda_t2  0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> lambda_s2  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> lambda_t3  0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> lambda_s3  0e+00  0e+00  2e-04  0e+00  0e+00  0e+00
#> lambda_t4  0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> lambda_s4  0e+00  0e+00 -1e-04  0e+00  0e+00  0e+00
#> theta_11   0e+00  0e+00  2e-04  0e+00  0e+00  0e+00
#> theta_22   0e+00  0e+00 -2e-04  0e+00  0e+00  0e+00
#> theta_33   0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> theta_44   0e+00  0e+00  9e-04  0e+00  0e+00  0e+00
#> phi_0      0e+00  0e+00 -1e-04 -1e-04  0e+00 -1e-04
#> psi_t      0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> psi_p_11   0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> psi_p_22   0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> psi_p_33   0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> psi_p_44   0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> psi_s0    -1e-04  0e+00  1e-04  0e+00  0e+00  0e+00
#> psi_s      0e+00  0e+00  3e-04  0e+00  0e+00  0e+00
#> mu_11     -1e-04  0e+00 -2e-04  0e+00  0e+00  0e+00
#> mu_21      0e+00  0e+00 -2e-04 -1e-04  0e+00  0e+00
#> mu_31      0e+00  0e+00 -1e-04  0e+00  0e+00  0e+00
#> mu_41      0e+00  0e+00 -3e-04 -2e-04  0e+00  0e+00
#> phi_1      0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> nu_0       0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> alpha_0    0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> kappa_0    0e+00  0e+00  0e+00  0e+00  0e+00  0e+00
#> beta_00    0e+00  0e+00  1e-04  0e+00  0e+00  0e+00
#> gamma_00   0e+00  0e+00 -1e-04  0e+00  0e+00  0e+00
#> gamma_10   0e+00  0e+00 -1e-04  0e+00 -1e-04  0e+00