library(tidyverse)
library(nlmixr2)
library(nlmixr2data)
data("theo_sd", package = "nlmixr2data")Understanding Parameter Estimates
Big picture: Estimation produces numbers, but interpretation turns those numbers into scientific understanding.
Learning Objectives
By the end of this lesson, you will be able to:
- Interpret fixed effects estimates.
- Understand parameter uncertainty conceptually.
- Recognize variability outputs without fully interpreting them.
- Recognize residual error estimates.
- Connect estimates back to PK meaning.
Key Ideas
- Parameters have biological meaning.
- Population estimates represent typical values.
- Estimates always contain uncertainty.
- Variability and residual error will be developed further later.
Setup
Fit the model.
one_comp_model <- function(){
ini({
tka <- log(1)
tcl <- log(3)
tv <- log(30)
eta.ka ~ 0.1
eta.cl ~ 0.1
eta.v ~ 0.1
add.err <- 0.1
})
model({
ka <- exp(tka + eta.ka)
cl <- exp(tcl + eta.cl)
v <- exp(tv + eta.v)
linCmt() ~ add(add.err)
})
}
fit <-
nlmixr2(
one_comp_model,
theo_sd,
est = "focei",
control = list(
print = 0
)
)Why Interpretation Matters
Model fitting does not end with convergence.
After estimation we ask:
- Are values plausible?
- Are estimates stable?
- Does biology make sense?
Interpretation transforms output into knowledge.
Worked Example 1: Fixed Effects
Extract estimates.
coef(fit)$fixed %>%
enframe(
name = "parameter",
value = "estimate"
)# A tibble: 4 × 2
parameter estimate
<chr> <dbl>
1 tka 0.463
2 tcl 1.01
3 tv 3.46
4 add.err 0.694
Typical fixed effects include:
| Parameter | Interpretation |
|---|---|
tka |
typical absorption |
tcl |
typical clearance |
tv |
typical volume |
These represent the typical subject.
Not any individual subject.
Worked Example 2: Translate Back to PK Parameters
Our estimates were modeled on the log scale.
Convert to original units.
coef(fit)$fixed %>%
exp() %>%
enframe(
name = "parameter",
value = "estimate_original_scale"
)# A tibble: 4 × 2
parameter estimate_original_scale
<chr> <dbl>
1 tka 1.59
2 tcl 2.75
3 tv 31.8
4 add.err 2.00
Interpretation:
- larger
CL→ faster elimination - larger
V→ lower concentrations - larger
ka→ faster absorption
Interpret parameters in PK language.
Worked Example 3: Understand Parameter Uncertainty
Inspect fit output.
print(fit)── nlmixr² FOCEi (outer: nlminb) ──
OBJF AIC BIC Log-likelihood Condition#(Cov) Condition#(Cor)
FOCEi 116.8039 373.4036 393.5832 -179.7018 68.64196 9.387133
── Time (sec $time): ──
setup optimize covariance table other
elapsed 0.001713 0.142397 0.142397 0.019 3.656493
── Population Parameters ($parFixed or $parFixedDf): ──
Est. SE %RSE Back-transformed(95%CI) BSV(CV%) Shrink(SD)%
tka 0.463 0.195 42.1 1.59 (1.08, 2.33) 70.5 1.86%
tcl 1.01 0.0751 7.42 2.75 (2.37, 3.19) 26.8 3.98%
tv 3.46 0.0436 1.26 31.8 (29.2, 34.6) 13.9 10.4%
add.err 0.694 0.694
Covariance Type ($covMethod): r,s
No correlations in between subject variability (BSV) matrix
Full BSV covariance ($omega) or correlation ($omegaR; diagonals=SDs)
Distribution stats (mean/skewness/kurtosis/p-value) available in $shrink
Information about run found ($runInfo):
• gradient problems with initial estimate and covariance; see $scaleInfo
• ETAs were reset to zero during optimization; (Can control by foceiControl(resetEtaP=.))
• initial ETAs were nudged; (can control by foceiControl(etaNudge=., etaNudge2=))
Censoring ($censInformation): No censoring
Minimization message ($message):
relative convergence (4)
── Fit Data (object is a modified tibble): ──
# A tibble: 132 × 22
ID TIME DV PRED RES WRES IPRED IRES IWRES CPRED CRES CWRES
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 0 0.74 0 0.74 1.07 0 0.74 1.07 0 0.74 1.07
2 1 0.25 2.84 3.26 -0.422 -0.225 3.85 -1.01 -1.45 3.22 -0.378 -0.177
3 1 0.57 6.57 5.83 0.740 0.297 6.78 -0.215 -0.310 5.77 0.796 0.287
# ℹ 129 more rows
# ℹ 10 more variables: eta.ka <dbl>, eta.cl <dbl>, eta.v <dbl>, depot <dbl>,
# central <dbl>, ka <dbl>, cl <dbl>, v <dbl>, tad <dbl>, dosenum <dbl>
Focus on:
Est.
SE
%RSE
Interpretation:
Est.→ estimated valueSE→ standard error%RSE→ relative uncertainty
Conceptually:
Estimate
↓
Uncertainty
Smaller uncertainty suggests more stable estimates.
Do not apply strict thresholds yet.
Worked Example 4: Recognize Variability Outputs
Inspect:
VarCorr(fit) Variance StdDev
eta.ka 0.40363397 0.6353219
eta.cl 0.06927252 0.2631967
eta.v 0.01925920 0.1387775
This output describes variability estimates.
Conceptually:
Typical Subject
↓
Individual Differences
At this stage:
recognize where variability appears.
The next module explains:
- ETA models
- variability assumptions
- random effects structures
Do not interpret exact values yet.
Worked Example 5: Recognize Residual Error
Inspect the model.
fit\[\begin{align*} {ka} & = \exp\left({tka}+{eta.ka}\right) \\ {cl} & = \exp\left({tcl}+{eta.cl}\right) \\ {v} & = \exp\left({tv}+{eta.v}\right) \\ linCmt() & \sim add({add.err}) \end{align*}\]
Locate:
add.err
Residual error represents variation not explained by the model.
Examples:
- assay variability
- measurement uncertainty
- model simplification
- unexplained biology
Residual error does not necessarily indicate model failure.
Residual error models come later.
Population Thinking
Suppose estimation returns:
Typical CL = 3
Population interpretation:
Subject A → around 3
Subject B → around 3
Subject C → around 3
Population modeling estimates:
Typical Values + Variability + Residual Error
Not one universal profile.
Parameter Language
As terminology evolves, you may hear:
| Term | Meaning |
|---|---|
| THETA | fixed effects |
| ETA | variability |
| SIGMA | residual error |
You do not need to memorize these today.
They become more useful later.
Interpreting Estimates Systematically
Recommended order:
Fixed Effects
↓
Uncertainty
↓
Variability
↓
Residual Error
↓
Diagnostics
Interpret estimates before evaluating diagnostics.
Strategies
- Interpret on original scale.
- Think biologically.
- Separate estimate categories.
Common Mistakes
- Treating estimates as exact truth.
- Overinterpreting variability.
- Jumping to diagnostics.
Practice Problems
What do fixed effects represent?
Why transform estimates back to original units?
What does
%RSErepresent?Extract estimates.
coef(fit)$fixed %>%
exp() %>%
enframe(
name = "parameter",
value = "estimate_original_scale"
)Interpret one parameter biologically.
- Run:
VarCorr(fit)What type of information does this provide?
Do not interpret exact values.
Problem 1
Fixed effects describe typical parameter values.
Examples:
- typical clearance
- typical volume
- typical absorption
Problem 2
Parameters are often estimated on transformed scales.
Interpretation becomes easier after returning to PK units.
Problem 3
%RSE describes relative uncertainty.
Conceptually:
Estimate
↓
Uncertainty
Problem 4
Interpret on original units.
Examples:
Higher CL
↓
Faster elimination
Higher V
↓
Lower concentration
Higher ka
↓
Faster absorption
Problem 5
VarCorr() reports variability estimates.
This output becomes more important in the next module.
For now:
recognize where variability appears.
Summary
- Fixed effects describe typical values.
- Estimates contain uncertainty.
- Variability and residual error appear in model output.
- Interpretation converts estimates into understanding.
- Interpret biologically.
- Convert scales.
- Uncertainty is expected.
- Variability comes next.