Constructs a control object for est = "adirmc", the Iterative Reweighting
Monte Carlo estimator.
Usage
adirmcControl(
studies = list(),
n_sim = 2500L,
outer_iter = 50L,
sampling = c("sobol", "halton", "torus", "lhs", "rnorm"),
algorithm = NULL,
maxeval = 5000L,
ftol_rel = .Machine$double.eps,
print = 1L,
omega_expansion = 1,
seed = 12345L,
cores = rxode2::rxCores(),
nDisplayProgress = .Machine$integer.max,
grad = c("analytical", "none", "fd"),
kappa_method = c("exact", "linearized", "linearized_gh"),
kappa_n_nodes = 5L,
grad_h = 1e-06,
cov_h = 0.001,
cov_h_outer = .Machine$double.eps^(1/5),
phases = c(2, 1, 0.5, 0.01),
convcrit = 1e-05,
max_worse = 5L,
covMethod = c("r,s", "r", "none"),
cov_n_sim = 10000L,
n_restarts = 1L,
restart_sd = 0.2,
workers = 1L,
rxControl = NULL,
calcTables = FALSE,
compress = TRUE,
ci = 0.95,
sigdig = NULL,
sigdigTable = NULL,
addProp = c("combined2", "combined1"),
optExpression = TRUE,
sumProd = FALSE,
literalFix = TRUE,
returnAdmr = FALSE,
resid_nodes = 81L,
xtol_rel = .Machine$double.eps^(1/2),
...
)Arguments
- studies
Named list of study specifications. Each element is a list with:
E– observed mean vectorV– observed covariance matrix or variance vector (auto-detected)n– sample sizetimes– numeric vector of observation timesev–rxode2::et()dosing event tablemethod–"cov"or"var"(optional; auto-detected fromV)v_denom–"ml"(default) or"unbiased", declaring which denominator the suppliedVuses. The likelihood is the exact one forniid draws only under the ML (n) covariance, which is whatcov.wt(method = "ML")anddatagen()produce. A published SD is the unbiased (n - 1) SD, so a digitised figure givesV = SD^2on then - 1scale: declarev_denom = "unbiased"and admixr2 converts it. Declared per study, since a meta-analysis routinely mixes a digitised source with a model-derived one and the two need not share a denominator. Atn = 60the factor is 1.7%; it matters more the smallernis, and more again for any method that scores the reported covariance against its own sampling law.
Multi-compartment (multiple observed outputs). To fit several observed compartments simultaneously (e.g. plasma and brain/CSF), give the study an
observationslist instead of top-levelE/V/times. Each entry is one observed output with its ownoutput(the model prediction variable, e.g."cp"or"cCSF"),times,E,Vand – for independent fits –evandn. Pass the endpoint names toadmData(), e.g.admData(c("cp", "cCSF")), so nlmixr2 recognises every endpoint. There are two modes:Independent – each observed output has its own
n/ev(separate experiments / subjects, e.g. a plasma study and a brain study combined for meta-analysis). The outputs are independent likelihood blocks and the aggregate-2LLis their sum.Joint (same subjects) – the outputs are measured on the SAME subjects. Give the study a shared
nandev, and a joint covariance either as a study-level full matrixV(blocks inobservationsorder) or as per-output marginalVplus acrosslist of cross-covariance blocks keyed"outA:outB"(eachlength(times_A)xlength(times_B); omitted pairs are zero). The compartments are then scored by a single MVN over the stacked vector with shared random effects.est = "adirmc"does not support multiple observed outputs; use"admc","adfo"or"adgh".
Long format (one row per endpoint/time). As an alternative to the
observationslist, a study may carry adataframe that keys each observed summary by endpoint, the way nlmixr2 keys observations byDVID/CMT. The frame needs an endpoint column (DVID,CMToroutput), a time column (TIME), a mean column (E) and – unless a jointVis given – a variance column (V) or an SD column (SD). It is normalised into exactly the same units as theobservationsform, so the two are interchangeable:# independent blocks: per-row variances; optional per-endpoint `n` column # and per-endpoint `ev` (a list of event tables keyed by endpoint) list(n = 60L, ev = ev, data = data.frame(DVID = c("cp", "cp", "cCSF"), TIME = c(1, 2, 2), E = c(9.1, 7.4, 2.2), V = c(1.2, 0.9, 0.1))) # joint (same subjects): ONE stacked covariance whose rows/cols align with # the rows of `data` -- no `cross` blocks to assemble by hand list(n = 60L, ev = ev, data = data.frame(DVID = ..., TIME = ..., E = ...), V = V_joint)A study-level
V(or an explicitjoint = TRUE) marks the endpoints as same-subject; without one, each endpoint is an independent likelihood block. Endpoints are stacked in the order they first appear indata.- n_sim
Number of Monte Carlo samples per NLL evaluation.
- outer_iter
Maximum inner optimiser iterations per phase.
- sampling
Sampling method for eta draws:
"sobol"(Sobol, default),"halton"(Halton),"torus"(Kronecker/torus),"lhs"(Latin hypercube), or"rnorm"(iid normal).- algorithm
nloptr algorithm string, or
NULL(default) to pick the default that matchesgrad:"NLOPT_LD_LBFGS"with a gradient,"NLOPT_LN_BOBYQA"whengrad = "none". Any algorithm reported bynloptr::nloptr.print.options()is accepted (e.g."NLOPT_LD_MMA","NLOPT_LN_NELDERMEAD"). An explicit algorithm is reconciled withgrad: whengrad = "none"a gradient-based algorithm (NLOPT_LD_*/NLOPT_GD_*) falls back to"NLOPT_LN_BOBYQA"; when a gradient is requested a derivative-free algorithm (NLOPT_LN_*/NLOPT_GN_*) turns the gradient off. Both emit a message.- maxeval
Maximum number of optimizer function evaluations.
- ftol_rel
Relative function-value tolerance for convergence.
Print progress every this many evaluations (0 = silent).
- omega_expansion
Inflate proposal Omega by this factor (>= 1).
- seed
Random seed for reproducibility.
- cores
Number of OpenMP threads for
rxSolve(). Defaults torxode2::rxCores().rxSolve()parallelises over subjects, so this is the main speed lever for the MC estimators; whenworkers > 1it is a total budget, split across the workers.- nDisplayProgress
Passed to
rxSolve(): the solver shows its text progress bar only once a single solve exceeds this many subjects. The default (.Machine$integer.max) keeps the bar off, which is what you want for scripts, vignettes and logs; lower it (e.g.1000L) to see solver progress during long interactive fits.- grad
Gradient mode for the inner optimiser:
"analytical"(default, closed-form weight-path gradient),"none"(derivative-free BOBYQA), or"fd"(central finite differences). Note:"sens"is not available for the IRMC estimator.- kappa_method
Kappa correction method for models with non-mu-referenced struct thetas:
"exact"(default, re-evaluates population predictionf(theta, 0)via rxSolve at each inner step),"linearized"(precomputesJ = df/d(theta)once per outer iteration usingf(theta, 0)as baseline — zero rxSolve per inner step), or"linearized_gh"(same linear approximation but baseline and Jacobian use Gauss-Hermite quadratureE_GH[f(theta, eta)]instead off(theta, 0)— more accurate baseline at any IIV magnitude, still zero rxSolve per inner step).- kappa_n_nodes
Number of GH nodes per eta dimension for
kappa_method = "linearized_gh"(default 5). Total quadrature points =kappa_n_nodes^n_eta. Ignored for other kappa methods.- grad_h
Step size for the inner optimiser's finite-difference gradient (
grad = "fd"). Defaults to1e-6, not the1e-4the other three controls use: the IRMC inner NLL is deterministic given fixed proposals, so there is no Monte Carlo noise to step over and the truncation-versus-noise balance that sets1e-4elsewhere does not apply. The inner step was a hard-coded1e-6until it was made to honourgrad_h; inheriting the coarser default would have changed the gradient the loop was tuned for.- cov_h
Inner FD step for the gradient-based Hessian (only used when
covMethod = "r"andgrad != "none"). Each gradient evaluation has MC noise of ordersigma / cov_h; the Hessian divides that noise by the outer step, giving total noisesigma / (cov_h * cov_h_outer * |p|).cov_h = 1e-3balances truncation error and noise amplification. Increase to1e-2if the Hessian is non-positive definite.- cov_h_outer
Outer step scale for the numerical Hessian. The actual step for parameter
pismax(|p|, 0.1) * cov_h_outer. Applied to both the gradient-FD Hessian (grad != "none") and the NLL-FD Hessian (grad = "none"). Defaulteps^(1/5)(~2.5e-3) is larger than the textbookeps^(1/4)to account for MC noise in NLL and gradient evaluations; empirically it matches the analytical (sensitivity-equation) Hessian ground truth. Increase (e.g. to5e-3or1e-2) if the Hessian is non-positive definite.- phases
Numeric vector of box-constraint half-widths, one per phase. Phases progressively tighten the search region.
- convcrit
Convergence criterion: phase ends when
|approx - exact| < convcrit.- max_worse
Stop a phase after this many consecutive worsening iterations.
- covMethod
"r,s"(the DEFAULT) computes the sandwichH^-1 J H^-1;"r"the numerical Hessian alone,2H^-1;"none"skips the covariance. A study generated from a published model defaults to"none"and refuses an explicit covariance method because it has no sampling law. All three span the structural, residual-error and omega parameters, and are reported on the scale the estimates are printed on.admControl()documents what the sandwich is, why it is the conservative default, and why it is more sensitive than"r"to an ill-conditioned Hessian; the same implementation runs here. What does NOT carry over is the family coverage, becauseadirmcitself is narrower: the estimator accepts onlyadd,prop,pow,combined1,combined2andlnormresiduals, and"r,s"applies to all six. The count,beta, transform-both-sides,ordinalandar()endpointsadmControl()lists are refused byest = "adirmc"itself, before any covariance is reached – they are not models whose sandwich degrades to"r"here, they are models this estimator does not fit.- cov_n_sim
Number of MC samples for the covariance (Hessian) step. More samples reduce MC noise in NLL evaluations. The NLL-based Hessian (
grad = "none") uses a central second difference of the NLL with the same Sobol sequence (CRN) at every perturbed point, so noise largely cancels andcov_n_sim = 10000(default) is sufficient for most models.- n_restarts
Number of optimization restarts. Runs in parallel when
workers > 1.- restart_sd
Standard deviation of structural theta perturbations for restart initialisation.
- workers
Number of parallel workers for multi-restart.
1(default) runs restarts sequentially. Values> 1run the restarts on a pool of background R processes (mirai daemons), which behaves the same way on every platform. Requires themiraipackage. Workers are stopped automatically after the restart phase so all cores are available for the Hessian step; if a fit is interrupted,admStopWorkers()cleans up any survivors.- rxControl
rxode2::rxControl()object. Created automatically whenNULL.- calcTables, compress, ci, sigdigTable, optExpression, sumProd, literalFix
Passed to
nlmixr2est::foceiControl()for the table/output machinery.- sigdig
Significant digits asked of the ODE solver, or
NULL(the default) to leave rxode2's own solver tolerances alone. When set, it is passed torxode2::rxSolve()'s ownsigdigargument for every solve the estimator issues – rxode2 owns the mapping toatol/rtoland has changed it between releases, which is why the digits, not the tolerances, are what travels – and tonlmixr2est::foceiControl()for the post-fit tables.It is a speed lever, and an opt-in one because it is not free. The estimators finite-difference the solve with steps of the same order:
grad_h(1e-4),cov_h(1e-3) andcov_h_outer(~2.5e-3), whilesigdig = 4maps to a relative tolerance of ~1e-4 on current rxode2. Differencing a solution whose own noise is 1e-4 with a 1e-4 step returns noise, and it surfaces as a moved objective and an indefinite covariance Hessian (everySEreportedNA) rather than as an error. Most worthwhile where the gradient is fully analytic and nothing differences the solve –adfoControl(grad = "analytical")measured ~4.8x faster atsigdig = 4with standard errors unchanged to 4 significant figures. Elsewhere, compare the objective and the standard errors againstNULLbefore relying on it. Table formatting is unaffected either way:sigdigTabledefaults to 4 regardless.- addProp
How combined additive+proportional error is parameterised in the nlmixr2 output tables:
"combined2"(default, variance form) or"combined1"(SD form). Has no effect on admixr2's own estimation; passed tonlmixr2est::foceiControl()for the table/output machinery only.- returnAdmr
If
TRUE, return a plain list instead of a full nlmixr2 fit object (useful for debugging).- resid_nodes
Gauss-Hermite nodes used to integrate the RESIDUAL for a transform-both-sides endpoint (
boxCox,yeoJohnson,logitNorm,probitNorm), wherey = g(h(f) + sigma*eps)has no closed-form mean and variance. Ignored by every other error model, which has closed forms. Default 81. Measured worst-case relative error against an independent quadrature, over all four transforms and residual SD of 0.5, 1, 2 and 3: n = 15 gives 5.7e-2, 31 gives 4.5e-3, 81 gives 5.0e-5. The error is dominated by large residual SD; at SD <= 1, n = 31 already gives 1e-7 or better.This is an ACCURACY dial, not a speed one. The quadrature is linear in
resid_nodesin isolation (~50 us at 15, 300 us at 81 for an 8-row study) but negligible beside the ODE solve: a full NLL evaluation measured 0.750 s per 60 evaluations at BOTH 31 and 81 nodes. Raise it if you have a saturating endpoint with a large residual SD; there is little to gain by lowering it.- xtol_rel
Relative parameter tolerance for convergence (default
sqrt(.Machine$double.eps)).- ...
Additional arguments (none allowed; triggers an error).
Details
Multi-compartment fits (a study observations list with several observed
outputs) are not supported by adirmc; use est = "admc", "adfo", or
"adgh" for those. Single-output studies are fit as usual.
Examples
# Inspect defaults
ctl <- adirmcControl()
ctl$phases
#> [1] 2.00 1.00 0.50 0.01
ctl$omega_expansion
#> [1] 1
# Tighter phases, more restarts
ctl2 <- adirmcControl(
n_sim = 1000L,
omega_expansion = 1.5,
phases = c(2, 1, 0.5, 0.01),
n_restarts = 3L
)
# \donttest{
library(rxode2)
library(nlmixr2)
data("examplomycin")
obs <- examplomycin[examplomycin$EVID == 0, ]
obs <- obs[order(obs$ID, obs$TIME), ]
times <- sort(unique(obs$TIME))
ids <- unique(obs$ID)
dv_mat <- do.call(rbind, lapply(ids, function(i) {
sub <- obs[obs$ID == i, ]; sub$DV[order(sub$TIME)]
}))
E <- colMeans(dv_mat)
V <- diag(diag(cov.wt(dv_mat, method = "ML")$cov))
pk_model <- function() {
ini({
tcl <- log(5); tv1 <- log(12); tv2 <- log(25)
tq <- log(12); tka <- log(1.2)
prop.sd <- c(0, 0.2)
eta.cl ~ 0.09; eta.v1 ~ 0.09; eta.v2 ~ 0.09
eta.q ~ 0.09; eta.ka ~ 0.09
})
model({
cl <- exp(tcl + eta.cl); v1 <- exp(tv1 + eta.v1)
v2 <- exp(tv2 + eta.v2); q <- exp(tq + eta.q)
ka <- exp(tka + eta.ka)
d/dt(depot) <- -ka * depot
d/dt(central) <- ka * depot - (cl/v1 + q/v1) * central + (q/v2) * peripheral
d/dt(peripheral) <- (q/v1) * central - (q/v2) * peripheral
cp <- central / v1
cp ~ prop(prop.sd)
})
}
fit <- nlmixr2(
pk_model, admData(), est = "adirmc",
control = adirmcControl(
studies = list(study1 = list(E = E, V = V, n = length(ids),
times = times, ev = et(amt = 100))),
n_sim = 500L
)
)
#>
#>
#>
#>
#> ℹ parameter labels from comments are typically ignored in non-interactive mode
#> ℹ Need to run with the source intact to parse comments
#> → loading into symengine environment...
#> → pruning branches (`if`/`else`) of full model...
#> ✔ done
#> → calculate sensitivities
#> → finding duplicate expressions in admixr2 sensitivity model...
#>
#>
#>
#>
#>
#>
#> === admixr2: Aggregate Data Modeling (IR-MC) ===
#> Studies: 1 | MC samples: 500 | Phases: 4 | Iters/phase: 50 | Expansion: 1.00 | Grad: analytic+Sens-Hessian | Restarts: 1
#> +----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+
#> | | -2LL | tcl | tv1 | tv2 | tq | tka | prop.sd | eta.cl | eta.v1 | eta.v2 | eta.q | eta.ka |
#> +-- Phase 1: Wide (+/-2.00) -------------------------------------------------------------------------------------------------------------------+
#> | 0001 | 2275.01 | 4.164 | 2.486 | 31.23 | 8.951 | 0.7664 | 0.1942 | 0.2236 | 0.665 | 0.2905 | 0.02583 | 0.1075 |
#> | 0002 | -1238.39 | 4.907 | 8.253 | 31.55 | 9.105 | 0.8141 | 0.191 | 0.1114 | 0.09 | 0.07618 | 0.05042 | 0.1619 |
#> | 0003 | -1265.61 | 4.918 | 7.943 | 31.88 | 8.851 | 0.7975 | 0.1735 | 0.126 | 0.06732 | 0.1044 | 0.02434 | 0.1414 |
#> | 0004 | -1263.03 | 4.96 | 7.856 | 31.51 | 8.803 | 0.798 | 0.1857 | 0.1133 | 0.08097 | 0.08228 | 0.006206 | 0.1283 |
#> | 0005 | -1265.63 | 4.92 | 7.866 | 31.61 | 8.843 | 0.7929 | 0.1837 | 0.1236 | 0.07812 | 0.098 | 0.006491 | 0.13 |
#> | 0006 | -1266.36 | 4.938 | 7.897 | 31.54 | 8.866 | 0.7967 | 0.1861 | 0.1174 | 0.07976 | 0.09014 | 0.007374 | 0.1267 |
#> | 0007 | -1266.39 | 4.929 | 7.883 | 31.57 | 8.851 | 0.7949 | 0.1848 | 0.1203 | 0.07921 | 0.09387 | 0.007537 | 0.1296 |
#> | 0008 | -1266.46 | 4.937 | 7.872 | 31.58 | 8.844 | 0.794 | 0.1851 | 0.1188 | 0.07817 | 0.09111 | 0.007357 | 0.1291 |
#> | 0009 | -1266.48 | 4.933 | 7.871 | 31.59 | 8.844 | 0.7939 | 0.1849 | 0.1194 | 0.07861 | 0.0925 | 0.007237 | 0.1295 |
#> | 0010 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.847 | 0.7943 | 0.1851 | 0.1191 | 0.07856 | 0.09187 | 0.007266 | 0.129 |
#> | 0011 | -1266.48 | 4.933 | 7.875 | 31.58 | 8.847 | 0.7943 | 0.185 | 0.1193 | 0.0787 | 0.09228 | 0.007291 | 0.1292 |
#> | 0012 | -1266.48 | 4.934 | 7.875 | 31.58 | 8.847 | 0.7943 | 0.1851 | 0.1192 | 0.07861 | 0.09204 | 0.007304 | 0.1291 |
#> | 0013 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1193 | 0.07863 | 0.09215 | 0.007296 | 0.1292 |
#> | 0014 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.1851 | 0.1192 | 0.07861 | 0.09209 | 0.007297 | 0.1291 |
#> | 0015 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07862 | 0.09213 | 0.007296 | 0.1292 |
#> | 0016 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07861 | 0.09211 | 0.007296 | 0.1291 |
#> | 0017 ✓ | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07862 | 0.09211 | 0.007293 | 0.1292 |
#> +-- Phase 2: Focused (+/-1.00) ----------------------------------------------------------------------------------------------------------------+
#> | 0018 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07861 | 0.09211 | 0.007296 | 0.1291 |
#> | 0019 ✓ | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07862 | 0.09211 | 0.007293 | 0.1292 |
#> +-- Phase 3: Fine-tuning (+/-0.50) ------------------------------------------------------------------------------------------------------------+
#> | 0020 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07861 | 0.09211 | 0.007296 | 0.1291 |
#> | 0021 ✓ | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07862 | 0.09211 | 0.007293 | 0.1292 |
#> +-- Phase 4: Precision (+/-0.01) --------------------------------------------------------------------------------------------------------------+
#> | 0022 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.1851 | 0.1192 | 0.07862 | 0.09211 | 0.007296 | 0.1291 |
#> | 0023 | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07862 | 0.09212 | 0.007294 | 0.1292 |
#> | 0024 ✓ | -1266.48 | 4.934 | 7.874 | 31.58 | 8.846 | 0.7942 | 0.185 | 0.1192 | 0.07862 | 0.09211 | 0.007294 | 0.1291 |
#> | 2.8 sec | | | | | | | | | | | | |
#> Computing covariance (R method, MC NLL, Sens-Hessian, sandwich, 12 gradient evaluations)
#> → compress origData in nlmixr2 object, save 1160
#>
#>
print(fit)
#> ── nlmixr² adirmc ──
#>
#> OBJF AIC BIC Log-likelihood
#> adirmc -1266.484 -1244.484 -1173.953 633.2418
#>
#> ── Time (sec fit$time): ──
#>
#> optimize covariance other elapsed
#> 1 2.786 17.654 0 20.44
#>
#> ── Population Parameters (fit$parFixed or fit$parFixedDf): ──
#>
#> Est. SE %RSE Back-transformed(95%CI) BSV(CV%) Shrink(SD)%
#> tcl 1.596 0.05289 3.314 4.934 (4.448, 5.473) 35.59 NaN
#> tv1 2.064 0.4762 23.07 7.874 (3.097, 20.02) 28.60 NaN
#> tv2 3.453 0.1869 5.412 31.58 (21.90, 45.55) 31.07 NaN
#> tq 2.180 0.1536 7.045 8.846 (6.547, 11.95) 8.557 NaN
#> tka -0.2304 0.4307 186.9 0.7942 (0.3415, 1.847) 37.13 NaN
#> prop.sd 0.1850 0.01205 6.514 0.1850 (0.1614, 0.2087)
#>
#> Covariance Type (fit$covMethod): r,s
#> Some strong fixed parameter correlations exist (fit$cor) :
#> cor:tv1,tcl cor:tv2,tcl cor:tq,tcl
#> 0.932 -0.946 0.933
#> cor:tka,tcl cor:prop.sd,tcl cor:om.eta.cl,tcl
#> 0.933 0.737 -0.750
#> cor:om.eta.v1,tcl cor:om.eta.v2,tcl cor:om.eta.q,tcl
#> -0.563 0.115 0.919
#> cor:om.eta.ka,tcl cor:tv2,tv1 cor:tq,tv1
#> 0.808 -0.989 0.992
#> cor:tka,tv1 cor:prop.sd,tv1 cor:om.eta.cl,tv1
#> 0.999 0.782 -0.740
#> cor:om.eta.v1,tv1 cor:om.eta.v2,tv1 cor:om.eta.q,tv1
#> -0.623 0.118 0.982
#> cor:om.eta.ka,tv1 cor:tq,tv2 cor:tka,tv2
#> 0.871 -0.985 -0.989
#> cor:prop.sd,tv2 cor:om.eta.cl,tv2 cor:om.eta.v1,tv2
#> -0.775 0.764 0.602
#> cor:om.eta.v2,tv2 cor:om.eta.q,tv2 cor:om.eta.ka,tv2
#> -0.140 -0.974 -0.865
#> cor:tka,tq cor:prop.sd,tq cor:om.eta.cl,tq
#> 0.993 0.782 -0.741
#> cor:om.eta.v1,tq cor:om.eta.v2,tq cor:om.eta.q,tq
#> -0.619 0.173 0.975
#> cor:om.eta.ka,tq cor:prop.sd,tka cor:om.eta.cl,tka
#> 0.851 0.784 -0.741
#> cor:om.eta.v1,tka cor:om.eta.v2,tka cor:om.eta.q,tka
#> -0.622 0.121 0.981
#> cor:om.eta.ka,tka cor:om.eta.cl,prop.sd cor:om.eta.v1,prop.sd
#> 0.870 -0.721 -0.625
#> cor:om.eta.v2,prop.sd cor:om.eta.q,prop.sd cor:om.eta.ka,prop.sd
#> 0.0691 0.841 0.656
#> cor:om.eta.v1,om.eta.cl cor:om.eta.v2,om.eta.cl cor:om.eta.q,om.eta.cl
#> 0.499 -0.172 -0.747
#> cor:om.eta.ka,om.eta.cl cor:om.eta.v2,om.eta.v1 cor:om.eta.q,om.eta.v1
#> -0.657 0.0185 -0.669
#> cor:om.eta.ka,om.eta.v1 cor:om.eta.q,om.eta.v2 cor:om.eta.ka,om.eta.v2
#> -0.424 0.0617 0.0332
#> cor:om.eta.ka,om.eta.q
#> 0.843
#>
#>
#> No correlations in between subject variability (BSV) matrix
#> Full BSV covariance (fit$omega) or correlation (fit$omegaR; diagonals=SDs)
#> Distribution stats (mean/skewness/kurtosis/p-value) available in fit$shrink
#> Information about run found (fit$runInfo):
#> • covMethod = "r,s": the Hessian is ill-conditioned (rcond 1.0e-05, cond 9.57e+04), and the sandwich inverts it twice where "r" inverts it once -- so the correction is amplified quadratically in the weakly-identified direction, which loads mainly on `logchol_eta.q`. Check that parameter's relative standard error before reading its "r,s" value as a finding; the well-determined parameters are unaffected.
#> Censoring (fit$censInformation): No censoring
#> Minimization message (fit$message):
#> NLOPT_XTOL_REACHED: Optimization stopped because xtol_rel or xtol_abs (above) was reached.
# }
