Infinity degrees of freedom and no standard errors when running runMI command

414 views
Skip to first unread message

garc...@unlv.nevada.edu

unread,
Jun 28, 2018, 7:07:27 PM6/28/18
to lavaan
Hello, 

I am new to R and am currently working on a project where I am fitting several CFA models to imputed data. I am running into an issue where the output tells me that the model converges. However, when looking closer at the factor loadings I noticed that several of my indicators have "INF" degrees of freedom (which I understand to mean infinity degrees of freedom) while others have no standard errors or p-values calculated. Further, none of the standard errors or p-values for the variances have been calculated. Here is the code that I use to specify and fit the model:

mod.a2 <- 'odd.f =~ odd1sc + odd2sc + odd3sc + odds1sc + odds2sc + odds3sc + odds4sc + odds5sc + odds6sc'

# Fit Model A
fit.mod.a2.wlsmvs.mi <- runMI(model = mod.a2, data = bag.sem, estimator = "WLSMVS", fun = "cfa",
                               std.lv = TRUE, verbose = TRUE, ordered = c("odd1sc", "odd2sc", "odd3sc", "odds1sc", "odds2sc", 
                                                                          "odds3sc", "odds4sc", "odds5sc", "odds6sc"))

# Summary fit statistics/factor loadings
summary(fit.mod.a2.wlsmvs.mi)
fitmeasures(fit.mod.a2.wlsmvs.mi, fit.measures = "all")

Here is what I see when looking at the output:

Latent Variables:
                         Estimate Std.Err  t-value      df           P(>|t|)
  odd.f =~                                                     
    odd1sc            0.831    0.020   42.231      Inf          0.000
    odd2sc            0.843    0.018   46.194      Inf          0.000
    odd3sc            0.789    0.022   35.755      Inf          0.000
    odds1sc           0.802    0.021   38.636  865.755    0.000
    odds2sc           0.881    0.015   57.411  773.875    0.000
    odds3sc           0.681    0.028   24.039  553.293    0.000
    odds4sc           0.492    0.037   13.390  758.944    0.000
    odds5sc           0.633    0.031   20.623 1076.606    0.000
    odds6sc           0.674    0.029   23.585  985.931    0.000

Intercepts:
                          Estimate         Std.Err  t-value       df  P(>|t|)
   .odd1sc            0.000                                    
   .odd2sc            0.000                                    
   .odd3sc            0.000                                    
   .odds1sc           0.000                                    
   .odds2sc           0.000                                    
   .odds3sc           0.000                                    
   .odds4sc           0.000                                    
   .odds5sc           0.000                                    
   .odds6sc           0.000                                    
    odd.f                0.000                                    

Thresholds:
                          Estimate Std.Err  t-value       df       P(>|t|)
    odd1sc|t1        -0.710    0.051  -13.909      Inf       0.000
    odd1sc|t2        -0.102    0.047   -2.190      Inf        0.029
    odd2sc|t1        -0.722    0.051  -14.103      Inf       0.000
    odd2sc|t2        -0.027    0.047   -0.581      Inf        0.561
    odd3sc|t1        -0.668    0.051  -13.227      Inf       0.000
    odd3sc|t2        -0.011    0.047   -0.230      Inf        0.818
    odds1sc|t1       -0.636    0.050  -12.695 1664.714    0.000
    odds1sc|t2        0.027    0.047    0.579      Inf       0.563
    odds2sc|t1       -0.434    0.048   -9.018 2695.879    0.000
    odds2sc|t2        0.217    0.047    4.633      Inf         0.000
    odds3sc|t1       -0.362    0.048   -7.600 1167.343    0.000
    odds3sc|t2        0.344    0.048    7.229 6106.076    0.000
    odds4sc|t1       -0.143    0.047   -3.057 1261.238    0.002
    odds4sc|t2        0.521    0.049   10.662 2043.255    0.000
    odds5sc|t1       -0.541    0.049  -11.011 2409.018    0.000
    odds5sc|t2        0.100    0.047    2.149 3309.839    0.032
    odds6sc|t1       -0.708    0.051  -13.871  754.554    0.000
    odds6sc|t2       -0.013    0.047   -0.282      Inf          0.778

Variances:
                         Estimate  Std.Err  t-value       df  P(>|t|)
   .odd1sc            0.309                                    
   .odd2sc            0.290                                    
   .odd3sc            0.377                                    
   .odds1sc           0.356                                    
   .odds2sc           0.223                                    
   .odds3sc           0.536                                    
   .odds4sc           0.758                                    
   .odds5sc           0.599                                    
   .odds6sc           0.546                                    
    odd.f                1.000                                    

Scales y*:
                         Estimate  Std.Err  t-value       df  P(>|t|)
    odd1sc            1.000                                    
    odd2sc            1.000                                    
    odd3sc            1.000                                    
    odds1sc           1.000                                    
    odds2sc           1.000                                    
    odds3sc           1.000                                    
    odds4sc           1.000                                    
    odds5sc           1.000                                    
    odds6sc           1.000                                    

What I think this means is that the model has not fully converged. Is anyone familiar with this problem or able to lend any insight? Again, as a new comer to R, I would be very grateful for any help on this. 

Thank you!

Terrence Jorgensen

unread,
Jun 29, 2018, 11:33:24 AM6/29/18
to lavaan
Is anyone familiar with this problem or able to lend any insight? 

There is no problem.  The parameters without any SEs or test statistics are not estimated, they are fixed parameters.  The infinite df are actually just values > 10000, so I display them as Inf to make the output prettier.  This is a new feature -- do you think I should change it (e.g., display ">500")?  When the df are over even 200, the t distribution is functionally the normal distribution.  Setting the argument asymptotic=TRUE will simply display them as Wald z statistics, like normal lavaan output.

Terrence D. Jorgensen
Postdoctoral Researcher, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

garc...@unlv.nevada.edu

unread,
Jul 23, 2018, 2:34:59 PM7/23/18
to lavaan
Thank you for your response, Terrence!

I have a follow up question, and please forgive my ignorance as I am new to SEM. Looking at my output, I understand how the scales and intercepts are fixed parameters as they are fixed to either 1 or 0. However, is my variance also a fixed parameter in this case? Those values do not seem to be fixed to me. Though I also understand that my knowledge in this area is modest at best. If you were able to explain this to me, I would greatly appreciate it. Thank you so much!

Terrence Jorgensen

unread,
Jul 24, 2018, 7:38:12 AM7/24/18
to lavaan
However, is my variance also a fixed parameter in this case? Those values do not seem to be fixed to me.

Yes, they are fixed.  Using the default "delta" parameterization, the total variances of the latent item-responses are fixed to be 1, and the residual variances are therefore implied to be 1 minus the variance explained by the factors (or any covariates).  Setting paramerization = "theta" will instead fix the residual variances to 1, and implying that the total variance of the latent item-response is 1 plus the explained variances (the "Scales y*" are the square-roots, the total SDs).  You can read about these different approaches in:


Reply all
Reply to author
Forward
0 new messages