Computes comprehensive quality metrics for RR interval data including artifact percentage, signal quality index, data completeness, HR stability, and overall quality grade. These metrics follow research standards for HRV data quality assessment.

calculate_rr_quality(rr_intervals, artifacts_detected, correction_metadata)

Arguments

rr_intervals

Numeric vector of RR intervals in milliseconds

artifacts_detected

Integer vector of artifact indices detected

correction_metadata

List containing correction method metadata

Value

A list containing:

  • artifact_percentage: Percentage of artifacts detected (0-100)

  • signal_quality_index: Composite quality score (0-100)

  • data_completeness: Percentage of valid data points (0-100)

  • hr_stability: Coefficient of variation of RR intervals

  • measurement_duration: Total measurement duration in minutes

  • quality_grade: Categorical assessment (A/B/C/D/F)

Details

Quality assessment follows research-validated standards:

  • Grade A (Excellent): <1% artifacts, >95% data completeness

  • Grade B (Good): 1-3% artifacts, >90% data completeness

  • Grade C (Fair): 3-5% artifacts, >80% data completeness

  • Grade D (Poor): 5-15% artifacts, >60% data completeness

  • Grade F (Unusable): >15% artifacts or <60% data completeness

Signal Quality Index components:

  • Inverse artifact percentage (higher = better)

  • Data completeness percentage

  • HR stability (lower variability = better for some contexts)

  • Measurement duration adequacy (minimum 5 minutes recommended)

References

Quality thresholds based on HRV research standards and clinical guidelines for artifact tolerance in heart rate variability analysis.

Examples

if (FALSE) { # \dontrun{
# Clean data assessment
clean_rr <- rep(800, 300) + rnorm(300, 0, 30)
quality <- calculate_rr_quality(clean_rr, integer(0), list(threshold_used = 250))

# Data with artifacts
rr_with_artifacts <- clean_rr
rr_with_artifacts[c(50, 100, 200)] <- c(400, 1600, 350)
quality_artifacts <- calculate_rr_quality(rr_with_artifacts, c(50, 100, 200),
                                         list(threshold_used = 250))
} # }