Moment_match Error on probit model with discrimination parameters

I try to do a model comparison with a model which has no discrimination parameters and one without (standard disc are set to 1 in brms - most users won’t even notice this, I think)

Monte Carlo SE of elpd_loo is NA.

Pareto k diagnostic values:
                         Count Pct.    Min. n_eff
(-Inf, 0.5]   (good)     3819  99.5%   1784      
 (0.5, 0.7]   (ok)         17   0.4%   244       
   (0.7, 1]   (bad)         4   0.1%   62        
   (1, Inf)   (very bad)    0   0.0%   <NA>      
See help('pareto-k-diagnostic') for details.

So I used the loo_moment_match = true

Error in validate_ll(log_ratios) : All input values must be finite.
Fehler: Moment matching failed. Perhaps you did not set 'save_all_pars' to TRUE when fitting your model?

The model is defined as follows:

uvsdt_one_Edisc <- brm(
  bf(Response ~ 1 + item*condition*time + (1 + item * condition * time | ID_T1T2 ),
     disc ~ 0 + old:condition2 + (0 + old:condition2 | ID_T1T2 )),
  data = dat, family = cumulative("probit"),
  iter = 4000, inits = 0, save_pars = save_pars(all= TRUE),
  control = list(adapt_delta = 0.95)
)

Any Idea how to fix this or what is meant by infinite log_ratios?

Thank you all for your replies!

It seems to me there are some values that happen to be NA because or numerical instability. I am not sure what exactly is causing the problem though. You can try to install brms and loo from github and see if that fixes things already.

I estimated the whole model on a computer with windows 10 now and used the github versions of loo and brms. The first model was estimated on a macBook under Big Sur.
I do get the same error on the windows computer by using the moment_match function:

 Error in checkForRemoteErrors(val) : 
      4 nodes produced errors; first error: All input values must be finite.
    Fehler: Moment matching failed. Perhaps you did not set 'save_pars = save_pars(all = TRUE)' when fitting your model?

If I use the kfold-function like this:

kfold_uvsdt <- kfold(uvsdt, cores = 4)

Then the following message appears:

 [1] "Error in sampler$call_sampler(args_list[[i]]) : Initialization failed."
[1] "error occurred during calling the sampler; sampling not done"
Start sampling
Fehler: The model does not contain posterior samples.

Some additional information:

  • I did a similar model without the disc parameters and was able to use the moment_match function
  • In the data we do have some participants with relatively high values on the latent variable (if this is an issue)

I am not an expert but I thought, that the model predicts our observered data very well:

Any Idea what causes the problem and how to fix it?