Bug with simulating with 0 BSV

Simulations with 0.0 on BSV’s is bugged in the latest version. Adding a small offset works.

Hi Donald - can you expand on what exactly did you do, and how is it bugged?


My model has BSV on several parameters. To test the simulation, I set BSV parameters as 0.0. If I do this, the individual parameter values from the simulation will show up as NaN. I believe this only happens when the BSV on a parameter is set to 0.0, as a slight offset from 0.0 doesn’t cause this to happen.

Is 0 in the domain of your random effect prior? What you’re typically after is the mean or median of the random effect prior. For Normal random effects, that’s 0 but if you used lognormal or something that is not defined for 0 then I guess you’d end up with NaNs

Hi @korsbo ,

I don’t have the domain specified:

        ## Random Effects
        ωBASE       ∈   RealDomain()
        ωSRc        ∈   RealDomain()
        ωSRtx       ∈   RealDomain()
        ωPR         ∈   RealDomain()

    @random begin
        ηBASE       ~   Normal(0.0, ωBASE)
        ηSRc        ~   Normal(0.0, ωSRc)
        ηSRtx       ~   Normal(0.0, ωSRtx)
        ηPR         ~   Normal(0.0, ωPR)

Specifying random effects as 0.0 worked fine prior to this update.

Looks strange. Can you share your pre-code by chance?

    @pre begin
        BASE        =   tvBASE*exp(ηBASE)
        SRcon       =   tvSRcon + ηSRcon
        SRtx        =   tvSRtx + ηSRtx
        PR          =   tvPR*exp(ηPR)

        # tumor size
        TS          =   trt == "con" ? BASE*exp(-SRcon*t) + PR*t :
                                       BASE*exp(-SRtx*cavg_d28*t) + PR*t

Are you setting the omegas to 0 as well by any chance?

Hi @patrick,

I’m not sure I get what you’re asking. In case I wasn’t being clear, I’m specifying the omegas as 0.0 when I specify the parameters, to test out my simulations.

So both etas and omegas?

Just the omegas as 0.

Okay. Could you try to set it to something positive and instead pass in the random effects? I suppose you’re using simobs? So something like simobs(model, pop, param, zero_randeffs(model, pop, param))

This was a regression in the most recent Pumas version. In the upcoming v2.4.1 this will once again behave as in v2.3