Skip to content

Module_Statistics_TimeSeriesAnalysis

cyclone_dll edited this page Sep 13, 2026 · 9 revisions

Location: Home / Statistics module / Time series analysis

Statistics module — Statistics Module

Time series analysis — Time Series Analysis

Vorcyc.Mathematics.Statistics.TimeSeriesAnalysis provides time series analysis methods including smoothing, decomposition, forecasting, autocorrelation, partial autocorrelation, moving average, and exponential smoothing.

All methods below are on class: Vorcyc.Mathematics.Statistics.TimeSeriesAnalysis


📒Contents


Vorcyc.Mathematics.Statistics.TimeSeriesAnalysis class

Vorcyc.Mathematics.Statistics.TimeSeriesAnalysis provides time series analysis methods including smoothing, decomposition, forecasting, autocorrelation, partial autocorrelation, moving average, and exponential smoothing.

Methods

1. Smooth method

  • public static T[] Smooth<T>(this Span<T> series, int windowSize) where T : IFloatingPointIeee754<T>
    • Smooths a time series.
    • Parameters:
      • series: Time series data.
      • windowSize: Smoothing window size.
    • Returns: Smoothed time series.

2. Decompose method

  • public static (T[] Trend, T[] Seasonal, T[] Residual) Decompose<T>(this Span<T> series, int period) where T : IFloatingPointIeee754<T>
    • Decomposes a time series into trend, seasonal, and residual components.
    • Parameters:
      • series: Time series data.
      • period: Seasonal period.
    • Returns: Tuple of trend, seasonal, and residual arrays.

3. Forecast method

  • public static T[] Forecast<T>(this Span<T> series, int forecastPeriod) where T : IFloatingPointIeee754<T>
    • Forecasts future values of a time series.
    • Parameters:
      • series: Time series data.
      • forecastPeriod: Number of periods to forecast.
    • Returns: Forecast values array.

4. Autocorrelation method

  • public static T[] Autocorrelation<T>(this Span<T> series, int lagMax) where T : IFloatingPointIeee754<T>
    • Computes the autocorrelation function of a time series.
    • Parameters:
      • series: Time series data.
      • lagMax: Maximum lag.
    • Returns: Autocorrelation function values.

5. PartialAutocorrelation method

  • public static T[] PartialAutocorrelation<T>(this Span<T> series, int lagMax) where T : IFloatingPointIeee754<T>
    • Computes the partial autocorrelation function of a time series.
    • Parameters:
      • series: Time series data.
      • lagMax: Maximum lag.
    • Returns: Partial autocorrelation function values.

6. MovingAverage method

  • public static T[] MovingAverage<T>(this Span<T> series, int windowSize) where T : IFloatingPointIeee754<T>
    • Computes the moving average of a time series.
    • Parameters:
      • series: Time series data.
      • windowSize: Moving average window size.
    • Returns: Moving average values.

7. ExponentialSmoothing method

  • public static T[] ExponentialSmoothing<T>(this Span<T> series, T alpha) where T : IFloatingPointIeee754<T>
    • Applies exponential smoothing to a time series.
    • Parameters:
      • series: Time series data.
      • alpha: Smoothing coefficient.
    • Returns: Exponentially smoothed time series.

8. Holt / Holt–Winters (0.10.18)

These live on the same TimeSeriesAnalysis partial class (TimeSeriesAnalysis_Extended.cs).

  • public static T[] Holt<T>(this ReadOnlySpan<T> series, T alpha, T beta)
    • Double exponential smoothing fitted values.
  • public static (T[] Fitted, HoltState<T> State) HoltWithState<T>(this ReadOnlySpan<T> series, T alpha, T beta)
    • Same recurrence, plus the terminal level and trend (not fitted[^1] - fitted[^2]).
  • public static T[] ForecastHolt<T>(this ReadOnlySpan<T> series, int forecastPeriod, T alpha, T beta)
    • Extrapolates LastLevel + h · LastTrend.
  • public static (T[] Fitted, T[] Forecast) HoltWinters<T>(...)
    • Additive Holt–Winters; forecast uses the last-season vector S[(h-1) mod m].
  • public static (T[] Fitted, T[] Forecast, HoltWintersState<T> State) HoltWintersWithState<T>(...)
    • Also returns LastLevel, LastTrend, and LastSeasonal so a caller can continue without refitting.
var (fitted, state) = series.HoltWithState(0.8, 0.3);
double[] ahead = series.ForecastHolt(5, 0.8, 0.3);
var (hwFit, hwFc, hwState) = series.HoltWintersWithState(12, 6, 0.4, 0.1, 0.2);

Code example

Example using multiple methods from the TimeSeriesAnalysis class, with comments:

using System;
using Vorcyc.Mathematics.Statistics;

public class TimeSeriesAnalysisExample
{
    public static void Main()
    {
        // Define time series data
        Span<double> series = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };

        // Smooth
        double[] smoothedSeries = series.Smooth(3);
        Console.WriteLine("Smoothed Series: " + string.Join(", ", smoothedSeries));

        // Decompose
        var (trend, seasonal, residual) = series.Decompose(3);
        Console.WriteLine("Trend: " + string.Join(", ", trend));
        Console.WriteLine("Seasonal: " + string.Join(", ", seasonal));
        Console.WriteLine("Residual: " + string.Join(", ", residual));

        // Forecast
        double[] forecast = series.Forecast(5);
        Console.WriteLine("Forecast: " + string.Join(", ", forecast));

        // Autocorrelation
        double[] acf = series.Autocorrelation(5);
        Console.WriteLine("Autocorrelation: " + string.Join(", ", acf));

        // Partial autocorrelation
        double[] pacf = series.PartialAutocorrelation(5);
        Console.WriteLine("Partial Autocorrelation: " + string.Join(", ", pacf));

        // Moving average
        double[] movingAverage = series.MovingAverage(3);
        Console.WriteLine("Moving Average: " + string.Join(", ", movingAverage));

        // Exponential smoothing
        double[] exponentialSmoothing = series.ExponentialSmoothing(0.5);
        Console.WriteLine("Exponential Smoothing: " + string.Join(", ", exponentialSmoothing));
    }
}

Language / 语言: English · 简体中文


Home


首页

Clone this wiki locally