Construct a numeric object from initial estimates defined by control stream records:
extract_theta()
returns a vector of initial estimates defined by THETA
records.
extract_omega()
and extract_sigma()
return a matrix of initial
estimates for OMEGA
and SIGMA
records.
extract_theta(records, mark_flags = NULL, type = c("init", "low", "up"))
extract_omega(records, mark_flags = NULL)
extract_sigma(records, mark_flags = NULL)
An nmrec_ctl_records object.
A vector of NONMEM flags (i.e. valueless options such as
FIXED
or SD
). For each specified flag, construct a boolean vector (for
THETA
) or matrix (for OMEGA
and SIGMA
) indicating whether the flag is
"active" for the value. Any valid spelling of the flag name is allowed.
For example, passing a value of "fix" would indicate whether a FIXED
flag
is in effect for each value. The flag may be linked to an individual
initial estimate (e.g., FIXED
for a THETA
or diagonal OMEGA
record) or
linked to all values in the record (e.g., FIXED
for a THETA
or block
OMEGA
record). In either case, the boolean vector or matrix is always the
same shape as the return value.
The same result will be returned regardless of type
. For example, passing
mark_flags = "fix"
and type = "up"
would yield TRUE
for a THETA
initial estimate of (1,2 FIX)
.
The results are stored in a named list as the "nmrec_flags" attribute attached to the return value, with the names corresponding to the resolved flag names.
Which THETA
value to return: initial estimate ("init", the
default), the lower bound ("low"), or the upper bound ("up").
A vector (for THETA
) or a square matrix (for OMEGA
and SIGMA
).
For matrix values, the upper triangle is always filled with NA
values.
The "nmrec_record_size" attribute attached to the return value indicates the number of values that come from each record. For matrix results, the value corresponds to the size along the diagonal.
These functions return initial estimates only if they are explicitly
defined in the control stream. All other values are returned as NA
. For
example, a record of $THETA (1)x4
is returned as c(1, NA, NA, NA)
.
If additional parameter records are used for priors, those are included in
the result. To avoid this, instead use more specific record names (such as
THETAP
and THETAPV
).
set_param for setting parameter options from values
ctl <- parse_ctl(c(
"$PROBLEM ex",
"$THETA 2 FIX",
"$THETA (10,30)x2",
"$OMEGA BLOCK(3)",
"0.1",
"0.01 0.1",
"0.01 0.01 0.1"
))
extract_theta(ctl)
#> [1] 2 30 NA
#> attr(,"nmrec_record_size")
#> [1] 1 2
extract_theta(ctl, type = "low")
#> [1] NA 10 NA
#> attr(,"nmrec_record_size")
#> [1] 1 2
extract_theta(ctl, mark_flags = "fixed")
#> [1] 2 30 NA
#> attr(,"nmrec_record_size")
#> [1] 1 2
#> attr(,"nmrec_flags")
#> attr(,"nmrec_flags")$fixed
#> [1] TRUE FALSE NA
#>
extract_omega(ctl)
#> [,1] [,2] [,3]
#> [1,] 0.10 NA NA
#> [2,] 0.01 0.10 NA
#> [3,] 0.01 0.01 0.1
#> attr(,"nmrec_record_size")
#> [1] 3