# Getting eta values during post-hoc prediction

Hello,
During post-hoc prediction, I used `icoef(model, population, parameter)` to get individual parameters but couldn’t get eta values for each individual. Is there way to get eta values for post-hoc prediction? Also, in the output of `icoef`, what does `A` column mean? It appears to change when CL or Vc value changes.
Thank you!

I do not know a direct function, but you can calculate eta values using the equation you defined in the @pre block. E.g. your equation for CL is `CLi = TVCL * (WT/70)^0.75 * exp(ETACL)` you can use the `CLi`s obtained from `icoef` to reverse engineer the `ETACL` = `ln(CLi) - ln(TVCL) - 0.75 x ln(WT/70)`

Thank you so much, Rahul! Will try that .

1 Like

Sorry to bother you, would you mind looking at my equations? I am getting zero for all CL_eta and Vc_eta. I changed `@pre` block only.

``````    CL = (tvcl * (weight_kg/70)^0.75 + 0.129 * (heparin_total/173)) * exp(η)
Vc = tvvc * (weight_kg/70) * (baseline/60)^(-0.389) * exp(η)
CL_eta = log(CL) - log(tvcl * (weight_kg/70)^0.75 + 0.129 * (heparin_total/173))
Vc_eta = log(Vc) - log(tvvc * (weight_kg/70) * (baseline/60)^(-0.389))
``````

I did not mean to tell you to put those equations in the model. Rather, use the CL_eta and Vc_eta equations to create new columns in your output DataFrame.

Dawoon,

Is your line of code for `icoef` written something like this?

``````icoef_result = reduce(vcat, DataFrame.(icoef(model, pop, params)))
``````

Do you know why you have time = 0.5?

I think the A column appears due to a bug in Pumas. I get it when I use the `dosecontrol` block.

Hi, Donald

Yes, I used the same code with you to get individual parameters. In my output, I have individual parameters for every time points as input data had and that’s why I have time = 0.5. Good to know it’s a bug although I don’t have `dosecontrol` block.

Hi Dawoon,
If you want to get etas you can use empirical_bayes(fpm)

``````help?> empirical_bayes()
empirical_bayes(fpm::Pumas.FittedPumasModel)
empirical_bayes(fpm::Pumas.FittedPumasEMModel)
empirical_bayes(insp::Pumas.FittedPumasModelInspection)

Return sampled random effects or empirical bayes estimates from a fit or model inspection. If the model was estimated with the Pumas.FO likelihood
approximation methods the empirical bayes estimates will be obtained using the Pumas.LaplaceI approximation. If either Pumas.FOCE or Pumas.LaplaceI was
used the final empirical bayes estimates will be returned. If Pumas.SAEM was used to fit the empirical bayes estimates are obtained using the
Pumas.LaplaceI approximation.
``````

Thank you, Ahmed.
It seems that `empirical_bayes()` can be used only when fitting was performed. But good to know the function for the future use!

So you are simulating and want to know what etas were sampled, is that correctly understood?

Yes, I used `predict(model, pop, param)` to get posthoc prediction without using `simobs`. I was able to get eta values by defining the equation in `@pre block` like the below. (after manipulating my data, it worked) But it would be great to know if there is a function to get `eta` directly. Thank you!

``````CL = (tvcl * (weight_kg/70)^0.75 + 0.129 * (heparin_total/173)) * exp(η)
Vc = tvvc * (weight_kg/70) * (baseline/60)^(-0.389) * exp(η)
CL_eta = log(CL) - log(tvcl * (weight_kg/70)^0.75 + 0.129 * (heparin_total/173))
Vc_eta = log(Vc) - log(tvvc * (weight_kg/70) * (baseline/60)^(-0.389))``````