Class TimeSeriesAnalysisService

java.lang.Object
com.leumanuel.woozydata.service.TimeSeriesAnalysisService

public class TimeSeriesAnalysisService extends Object
Service class for time series analysis and forecasting. Provides methods for various time series operations including moving averages, decomposition, forecasting, and outlier detection.
Version:
1.0
Author:
Leu A. Manuel
  • Constructor Details

    • TimeSeriesAnalysisService

      public TimeSeriesAnalysisService()
  • Method Details

    • simpleMovingAverage

      public double[] simpleMovingAverage(double[] data, int windowSize)
      Calculates Simple Moving Average (SMA) for a time series.
      Parameters:
      data - Array of time series values
      windowSize - Size of the moving window
      Returns:
      Array containing moving averages
      Throws:
      IllegalArgumentException - if windowSize is larger than data length
    • autoRegressiveModel

      public double[] autoRegressiveModel(double[] data, int lag)
      Fits an Autoregressive (AR) model to the time series data.
      Parameters:
      data - Array of time series values
      lag - Number of lagged terms to include
      Returns:
      Array of AR coefficients
      Throws:
      IllegalArgumentException - if lag is larger than data length
    • movingAverageModel

      public double[] movingAverageModel(double[] data, int lag)
      Fits a Moving Average (MA) model to the time series data.
      Parameters:
      data - Array of time series values
      lag - Number of lagged error terms
      Returns:
      Array of MA coefficients
      Throws:
      IllegalArgumentException - if lag is larger than data length
    • armaModel

      public double[] armaModel(double[] data, int arLag, int maLag)
      Fits an ARMA (Autoregressive Moving Average) model.
      Parameters:
      data - Array of time series values
      arLag - AR component lag
      maLag - MA component lag
      Returns:
      Array containing combined AR and MA coefficients
    • arimaModel

      public double[] arimaModel(double[] data, int arLag, int d, int maLag)
      Fits an ARIMA (Autoregressive Integrated Moving Average) model.
      Parameters:
      data - Array of time series values
      arLag - AR component lag
      d - Order of differencing
      maLag - MA component lag
      Returns:
      Array containing model coefficients
    • exponentialMovingAverage

      public double[] exponentialMovingAverage(double[] data, double alpha)
      Calculates Exponential Moving Average (EMA).
      Parameters:
      data - Array of time series values
      alpha - Smoothing factor (0 < alpha < 1)
      Returns:
      Array containing exponential moving averages
      Throws:
      IllegalArgumentException - if alpha is not between 0 and 1
    • forecast

      public DataFrame forecast(DataFrame df, String timeCol, String valueCol, int periods)
      Generates forecasts for future time periods.
      Parameters:
      df - DataFrame containing time series data
      timeCol - Column containing time values
      valueCol - Column containing series values
      periods - Number of periods to forecast
      Returns:
      DataFrame containing forecasted values
    • decompose

      public DataFrame decompose(DataFrame df, String timeCol, String valueCol)
      Decomposes time series into trend, seasonal, and residual components.
      Parameters:
      df - DataFrame containing time series data
      timeCol - Column containing time values
      valueCol - Column containing series values
      Returns:
      DataFrame with decomposed components
    • seasonalAdjustment

      public DataFrame seasonalAdjustment(DataFrame df, String timeCol, String valueCol)
      Removes seasonal component from time series.
      Parameters:
      df - DataFrame containing time series data
      timeCol - Column containing time values
      valueCol - Column containing series values
      Returns:
      DataFrame with seasonally adjusted values
    • detectTimeSeriesOutliers

      public DataFrame detectTimeSeriesOutliers(DataFrame df, String timeCol, String valueCol)
      Detects outliers in time series data using IQR method.
      Parameters:
      df - DataFrame containing time series data
      timeCol - Column containing time values
      valueCol - Column containing series values
      Returns:
      DataFrame containing identified outliers