# Error fitting a lags absorption model

**URL:** <https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146>\
**Category:** Estimation\
**Created:** [March 3, 2025, 7:27pm UTC](https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146 "2025-03-03T19:27:37Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![shenkoyababajide](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.pumas.ai/shenkoyababajide/32/348_2.png) [@shenkoyababajide](https://discourse.pumas.ai/u/shenkoyababajide)\
**Post date:** [March 3, 2025, 7:27pm UTC](https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146/1 "2025-03-03T19:27:37Z")

</div>

Hello,  
I am trying to fit a lag absorption model, but I encountered an error. Since I have successfully implemented lag absorption in the past, I revisited a previous lag model that had run successfully and found that the same error occurs. Below is a snapshot of my dose control block and the stack trace of the error.

Could you please look into this or suggest a solution if this issue has been resolved before?  
` @dosecontrol begin  
lags = (; Oral = tvlag\_or \* exp(η[6])  
end

```
@dynamics begin
    Oral' = -Ka_or*Oral
    Central' = Ka_or*Oral - (CL/Vc)*Central
end

```

`

![image](https://canada1.discourse-cdn.com/flex030/uploads/pumas/original/1X/7bf49d83a1fb4b8521dae2b1558f2b55085c9520.png)

---

<div class="post-metadata">

**Author:** ![vijay](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.pumas.ai/vijay/32/96_2.png) [@vijay](https://discourse.pumas.ai/u/vijay)\
**Post date:** [March 4, 2025, 2:36am UTC](https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146/2 "2025-03-04T02:36:23Z")

</div>

Welcome to the community, @shenkoyababajide !

Can you try removing the variability on the `lag` parameter and run the model. It is well documented that having BSV on lag parameters result in unstable models that provide different results each time.

---

<div class="post-metadata">

**Author:** ![shenkoyababajide](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.pumas.ai/shenkoyababajide/32/348_2.png) [@shenkoyababajide](https://discourse.pumas.ai/u/shenkoyababajide)\
**Post date:** [March 4, 2025, 2:30pm UTC](https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146/3 "2025-03-04T14:30:16Z")

</div>

Thank you @vijay

Yes, I did. I also tried initializing the Oral compartment to zero as well.  
Both did not work, and the errors are exactly the same.

 ![image](https://canada1.discourse-cdn.com/flex030/uploads/pumas/original/1X/622912463f1cdb0406dce507641252a4846238e2.png)

---

<div class="post-metadata">

**Author:** ![andreasnoack](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.pumas.ai/andreasnoack/32/22_2.png) [@andreasnoack](https://discourse.pumas.ai/u/andreasnoack)\
**Post date:** [March 4, 2025, 3:59pm UTC](https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146/4 "2025-03-04T15:59:22Z")

</div>

Would you be able to share the complete model with us here?

---

<div class="post-metadata">

**Author:** ![shenkoyababajide](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.pumas.ai/shenkoyababajide/32/348_2.png) [@shenkoyababajide](https://discourse.pumas.ai/u/shenkoyababajide)\
**Post date:** [March 4, 2025, 4:45pm UTC](https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146/5 "2025-03-04T16:45:05Z")

</div>

Yes.

```auto
pkmodel = @model begin
    @param begin
        tvcl ∈ RealDomain(; lower = 0)
        tvvc ∈ RealDomain(; lower = 0)
        tvq1 ∈ RealDomain(; lower = 0)
        tvvp1 ∈ RealDomain(; lower = 0)
        tvka_or ∈ RealDomain(; lower = 0)
        tvlag_or ∈ RealDomain(; lower = 0)
        σ²_prop ∈ RealDomain(; lower = 0)
        σ²_add ∈ RealDomain(; lower = 0)
        Ω ∈ PDiagDomain(5)
    end

    @random begin
        η ~ MvNormal(Ω)
    end

    @pre begin
        CL = tvcl * exp(η[1])
        Vc = tvvc * exp(η[2])
        Q1 = tvq1 * exp(η[3])
        Vp1 = tvvp1 * exp(η[4])
        Ka_or = tvka_or * exp(η[5])
    end

    @dosecontrol begin
        lags = (; Oral = tvlag_or,)
    end

    @dynamics begin
        Oral' = -Ka_or*Oral
        Central' = Ka_or*Oral - (CL/Vc)*Central - (Q1/Vc)*Central + (Q1/Vp1)*Peripheral1
        Peripheral1' = (Q1/Vc)*Central - (Q1/Vp1)*Peripheral1
    end

    @derived begin
        cp = @. Central/Vc
        DV_D8THC ~ @. Normal(cp, sqrt((abs(cp)^2 * σ²_prop) + σ²_add))
    end
end

```

---

<div class="post-metadata">

**Author:** ![shenkoyababajide](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.pumas.ai/shenkoyababajide/32/348_2.png) [@shenkoyababajide](https://discourse.pumas.ai/u/shenkoyababajide)\
**Post date:** [March 20, 2025, 8:19am UTC](https://discourse.pumas.ai/t/error-fitting-a-lags-absorption-model/1146/6 "2025-03-20T08:19:52Z")

</div>

I think I found the issue, or at least what I think may be causing this error.

When I explicitly define the random effects (e.g., ωcl ∈ RealDomain(lower = 0.0001),…) rather than the PDiagDomain(x) set up, the lag absorption model ran fine.

I know I have tried both ways in the past and it worked. Perhaps this is a bug because random effect was not even included on the tvlag, or the new Pumas update does not allow this anymore.
