# DifferentialEquations and Parameter Estimation with Indicator Variables

**URL:** <https://discourse.julialang.org/t/differentialequations-and-parameter-estimation-with-indicator-variables/42633>\
**Category:** Modelling & Simulations\
**Tags:** diffeq, optimization, monte-carlo\
**Created:** [July 6, 2020, 7:09pm UTC](https://discourse.julialang.org/t/differentialequations-and-parameter-estimation-with-indicator-variables/42633 "2020-07-06T19:09:38Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alfie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alfie/32/11272_2.png) [@Alfie](https://discourse.julialang.org/u/Alfie)\
**Post date:** [July 6, 2020, 7:09pm UTC](https://discourse.julialang.org/t/differentialequations-and-parameter-estimation-with-indicator-variables/42633/1 "2020-07-06T19:09:38Z")

</div>

Hi I am new to Julia, sorry for this basic question, I am doing some  
parameter fitting, and would like to use a binary indicator variable (0/1)  
to differentiate groups from my data. I have the following code:

```julia
     f_Eprod = @ode_def Eprod begin
         dE = p1*exp(t*(p2+p2d*Ind_Var))
     end p1 p2 p2d Ind_Var

    p=[20,-0.02,0.005,1.0]
    prob = ODEProblem(f_Eprod,[0.0],[0.0,7],p)
    sol=solve(prob)

```

Below I substitute the value of 1 in the parameter array by IndVar[i] to account for  
grouping in the data. This array contains 0 and 1’s.

```julia
   function prob_func(prob,i,repeat)
     ODEProblem(prob.f,initial_conditions[i],tspan[i],[20,-0.02,0.005,IndVar[i],saveat=tspan[i][2])
   end

   monte_prob = MonteCarloProblem(prob,prob_func=prob_func)

```

After setting a loss function, I am not sure how to set Optim.optimizer to avoid having Ind\_Var being treated as a parameter to be optimized. Is there a way to handle this prior to the optimization? Thank you.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 6, 2020, 8:32pm UTC](https://discourse.julialang.org/t/differentialequations-and-parameter-estimation-with-indicator-variables/42633/2 "2020-07-06T20:32:08Z")

</div>

You’d make a loss function of 3 variables and in the loss function append IndVar and solve.

---

<div class="post-metadata">

**Author:** ![Alfie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alfie/32/11272_2.png) [@Alfie](https://discourse.julialang.org/u/Alfie)\
**Post date:** [July 7, 2020, 2:03pm UTC](https://discourse.julialang.org/t/differentialequations-and-parameter-estimation-with-indicator-variables/42633/3 "2020-07-07T14:03:05Z")

</div>

Hi Chris, thank you for your answer, I am a bit lost on how to implement this loss function you mention, would you provide some hints or point me to an example. Thank you in advance for any help.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 8, 2020, 3:07am UTC](https://discourse.julialang.org/t/differentialequations-and-parameter-estimation-with-indicator-variables/42633/4 "2020-07-08T03:07:14Z")

</div>

`(p)->f([p;IndVar])`

---

<div class="post-metadata">

**Author:** ![Alfie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alfie/32/11272_2.png) [@Alfie](https://discourse.julialang.org/u/Alfie)\
**Post date:** [July 8, 2020, 8:40am UTC](https://discourse.julialang.org/t/differentialequations-and-parameter-estimation-with-indicator-variables/42633/5 "2020-07-08T08:40:54Z")

</div>

Thank you
