Computes the expected Fisher information matrix of the unknown parameters
for one typical individual (or n individuals with the same design), given
the sampling times, the parameter values and the residual error model. The
output sensitivities are obtained by solving the forward sensitivity
equations with rxode2. Because the residual standard deviation may depend
on the prediction (proportional error), the information includes the term
from the variance as well as the term from the mean.
Usage
practical_identifiability(
m,
design,
values,
error = residual_error(prop = 0.1),
inputs = list(),
n = 1,
events = NULL,
rse_limit = 30,
rtol = 1e-10,
atol = 1e-12
)Arguments
- m
A
pkident_modelfrompkpd_model().- design
Sampling times: a numeric vector used for every output, or a named list with one vector per output.
- values
Named numeric vector with a value for every parameter and every known constant of the model.
- error
A
residual_error()used for every output, or a named list with one per observed output.- inputs
For models with known input signals, a named list of character expressions in time
t, for examplelist(Cp = "10*exp(-0.2*t)").- n
Number of individuals with the same design (the information is multiplied by
n).- events
Optional dosing event table (a data frame with columns
time,amt,cmtand optionallyrate), for example repeated infusions. It replaces the doses of the model definition; dose amounts and rates must be known.- rse_limit
RSE (%) above which a parameter is
unresolved.- rtol, atol
Solver tolerances.
Value
An object of class pkident_practical. Use as_table() with
"parameters", "directions" or "correlation".
Details
The result reports, for each parameter, the expected standard error and relative standard error (RSE, %), the correlation matrix, and the eigen-decomposition of the information matrix on the log-parameter scale: the weakest directions show which combinations of parameters the design determines poorly, and the condition number summarises how poorly.
Statuses:
identifiable: the RSE is finite and at mostrse_limit.non_identifiable: the information matrix is singular in a direction involving the parameter; the design cannot determine it (structurally or because of too few samples).unresolved: the RSE is finite but aboverse_limit. The expected information is a local, linear approximation that is unreliable when uncertainty is this large; examine likelihood profiles instead.
The default limit of 30% comes from the validation by repeated estimation
on simulated data (validation/fim-simulation.R): with every RSE below
about 15%, expected and observed RSEs agreed within 10%; with RSEs of
30-40%, estimates had skewed tails and the expected RSEs underestimated the
spread, including that of a parameter whose own expected RSE was small.
When any parameter is unresolved, the printed result therefore warns that
the RSEs of all parameters are approximate.
Doses are those in the model (bolus doses at time zero and constant-rate
infusions), whose amounts and rates are known constants supplied in
values, or those of an event table given in events.
Examples
m <- reference_model("A3")
p <- practical_identifiability(
m,
design = c(0.5, 1, 2, 4, 8, 12, 24),
values = c(ka = 1, CL = 2, V = 20, DOSE = 100),
error = residual_error(add = 0.05, prop = 0.1)
)
p
#> <pkident practical identifiability>
#> Expected Fisher information for 1 individual(s), 7 observations each; LOCAL (linear) approximation.
#> Condition number (log scale): 16.6
#> CL RSE 5.0% identifiable
#> V RSE 8.2% identifiable
#> ka RSE 16.0% identifiable
#> Weakest direction: +0.91 log(ka) +0.40 log(V) (expected SD on log scale 0.173)