log_likelihood_batch

Function log_likelihood_batch 

pub fn log_likelihood_batch(
    equation: &impl Equation,
    subjects: &Data,
    parameters: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>,
    residual_error_models: &ResidualErrorModels,
) -> Result<Vec<f64>, PharmsolError>
Expand description

Compute log-likelihoods for all subjects in parallel, where each subject has its own parameter vector.

This function simulates each subject with their individual parameters and computes log-likelihood using prediction-based sigma (appropriate for parametric algorithms like SAEM, FOCE).

§Parameters

  • equation: The equation to use for simulation
  • subjects: The subject data (N subjects)
  • parameters: Parameter vectors for each subject (N × P matrix, row i = params for subject i)
  • residual_error_models: The residual error models (prediction-based sigma)

§Returns

A vector of N log-likelihoods, one per subject. Returns f64::NEG_INFINITY for subjects where simulation fails.

§Example

use pharmsol::prelude::simulator::log_likelihood_batch;
use pharmsol::{ResidualErrorModel, ResidualErrorModels};

let residual_error = ResidualAssayErrorModels::new()
    .add(0, ResidualErrorModel::constant(0.5));

let log_liks = log_likelihood_batch(
    &equation,
    &data,
    &parameters,
    &residual_error,
)?;