Covariance Step

The covariance step computes standard errors, confidence intervals, and the correlation matrix of parameter estimates via the sandwich (R/S) estimator.

Enabling the covariance step

result = (
    ModelBuilder()
    ...
    .estimation(method="FOCE", interaction=True)
    .covariance()              # Enable with default R/S sandwich
    .build()
    .fit()
)

Or with explicit matrix choice:

.covariance(matrix="R")   # R matrix only (inverse Hessian)
.covariance(matrix="SR")  # Default: sandwich R/S estimator

Accessing results

cov = result.covariance_result

cov.se_theta       # Standard errors of THETA, shape (n_theta,)
cov.se_omega_diag  # Standard errors of diagonal OMEGA elements
cov.se_sigma_diag  # Standard errors of diagonal SIGMA elements

cov.cov_matrix     # Full covariance matrix of all free parameters
cov.cor_matrix     # Correlation matrix
cov.condition_number  # Condition number of R matrix

# 95% confidence intervals for THETA
import numpy as np
ci_low  = result.theta_final - 1.96 * cov.se_theta
ci_high = result.theta_final + 1.96 * cov.se_theta

Output files

When running from a .ctl file the covariance step produces:

File

Contents

.cov

Covariance matrix (NONMEM 7.x format)

.cor

Correlation matrix

The R and S matrices

The sandwich estimator is:

Cov(θ) = R⁻¹ · S · R⁻¹

where:

  • R is the Hessian of the OFV with respect to free parameters (expected information matrix)

  • S is the cross-product of first derivatives (observed information matrix)

Both are computed by numerical finite differences in OpenPKPD.

Condition number

A high condition number (> 1000) indicates near-collinearity between parameters, typically caused by:

  • Overparameterisation (too many parameters for the data)

  • Correlation between THETA and OMEGA (model misspecification)

  • Starting values close to a boundary

Interpreting warnings

Warning

Likely cause

R matrix not positive definite

Convergence issue; OFV at a saddle point

Correlation > 0.95

Near-collinear parameters

Condition number > 1000

Check parameter identifiability