Skip to main content

spm_monitor_partial

Function spm_monitor_partial 

Source
pub fn spm_monitor_partial(
    chart: &SpmChart,
    partial_values: &[f64],
    argvals: &[f64],
    n_observed: usize,
    config: &PartialDomainConfig,
) -> Result<PartialMonitorResult, FdarError>
Expand description

Monitor a single partially-observed curve.

§Arguments

  • chart - Phase I SPM chart
  • partial_values - Observed values (length m, but only first n_observed are used)
  • argvals - Full grid points (length m)
  • n_observed - Number of observed grid points (from the start of the domain)
  • config - Partial domain configuration

For domain fractions below 0.3, conditional expectation accuracy degrades significantly. Consider collecting more of the domain or using a dedicated early-detection method.

§Example

use fdars_core::matrix::FdMatrix;
use fdars_core::spm::phase::{spm_phase1, SpmConfig};
use fdars_core::spm::partial::{spm_monitor_partial, PartialDomainConfig, DomainCompletion};
let data = FdMatrix::from_column_major(
    (0..200).map(|i| (i as f64 * 0.1).sin()).collect(), 20, 10
).unwrap();
let argvals: Vec<f64> = (0..10).map(|i| i as f64 / 9.0).collect();
let chart = spm_phase1(&data, &argvals, &SpmConfig { ncomp: 2, ..SpmConfig::default() }).unwrap();
let partial_values = vec![0.0, 0.1, 0.2, 0.3, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0];
let config = PartialDomainConfig { ncomp: 2, completion: DomainCompletion::ZeroPad, ..PartialDomainConfig::default() };
let result = spm_monitor_partial(&chart, &partial_values, &argvals, 5, &config).unwrap();
assert!(result.domain_fraction > 0.0);

§Errors

Returns FdarError::InvalidDimension if dimensions are inconsistent. Returns FdarError::InvalidParameter if n_observed is 0, if argvals is not sorted, or if the computed domain fraction is out of range.