Skip to content

Add autocorrelation (ACF/PACF) and Ljung-Box test #66

@devcrocod

Description

@devcrocod

Description

Add autocorrelation and partial autocorrelation functions for time-series analysis, plus the Ljung-Box formal test for serial correlation.

  • ACF(k)Cov(xₜ, xₜ₊ₖ) / Var(xₜ), measures correlation at lag k
  • PACF — partial autocorrelation via Durbin-Levinson recursion, isolates the direct correlation at lag k after removing shorter-lag effects
  • Ljung-Box test — formal test for autocorrelation at multiple lags, using chi-squared distribution (already available in kstats-distributions)

Useful for detecting periodicity (daily/weekly patterns) in latency data, SRE monitoring, and general time-series diagnostics. ACF/PACF would live in kstats-correlation alongside existing correlation functions; Ljung-Box in kstats-hypothesis alongside existing statistical tests.

Example usage

val latencies = doubleArrayOf(/* hourly latency measurements */)

// Autocorrelation at lags 1..20
val acf = autocorrelation(latencies, maxLag = 20)
acf[1]  // lag-1 autocorrelation
acf[24] // lag-24 (daily cycle if hourly data)

val pacf = partialAutocorrelation(latencies, maxLag = 20)

// Formal test: is there significant autocorrelation?
val result = ljungBoxTest(latencies, lags = 10)
result.statistic  // Q statistic
result.pValue     // significance

Related to #64

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions