UNPKG

ts-arima-forecast

Version:

TypeScript library for ARIMA, SARIMA (soon), and SARIMAX (soon) forecasting

104 lines 3.4 kB
import { ARIMA } from "../models/arima"; interface ForecastResult { forecasts: number[]; confidenceIntervals: { lower: number[]; upper: number[]; }; } export interface StepwiseForecastResult extends ForecastResult { updatedModels: ARIMA[]; errors: number[]; actualValues: number[]; } export interface RealTimeForecastResult extends ForecastResult { errors?: number[]; actualValues?: number[]; } export declare abstract class ForecastStrategy { protected baseModel: ARIMA; protected initialData: number[]; constructor(baseModel: ARIMA, initialData: number[]); abstract forecast(steps: number): ForecastResult; abstract forecastWithRealTimeData(actualObservations: number[]): RealTimeForecastResult; abstract addObservationAndForecast(newObservation: number): { forecast: number; lowerBound: number; upperBound: number; error?: number; }; } export declare class Stepwise extends ForecastStrategy { private refitModel; private verbose; private currentData; private currentModel; private lastForecast; constructor(baseModel: ARIMA, initialData: number[], options?: { refitModel?: boolean; verbose?: boolean; }); forecast(steps: number): ForecastResult; forecastWithRealTimeData(actualObservations: number[]): StepwiseForecastResult; addObservationAndForecast(newObservation: number): { forecast: number; lowerBound: number; upperBound: number; error?: number; }; reset(newInitialData: number[]): void; getCurrentData(): number[]; getCurrentModel(): ARIMA; } export declare class RollingWindow extends ForecastStrategy { private windowSize; private verbose; private currentData; private lastForecast; constructor(baseModel: ARIMA, initialData: number[], options?: { windowSize?: number; verbose?: boolean; }); forecast(steps: number): ForecastResult; forecastWithRealTimeData(actualObservations: number[]): RealTimeForecastResult; addObservationAndForecast(newObservation: number): { forecast: number; lowerBound: number; upperBound: number; error?: number; }; setWindowSize(newWindowSize: number): void; getWindowSize(): number; getCurrentData(): number[]; reset(newInitialData: number[]): void; } export declare class Adaptive extends ForecastStrategy { private stepwiseStrategy; private rollingStrategy; private adaptationThreshold; private errorWindow; private maxErrorWindowSize; private currentStrategy; private verbose; constructor(baseModel: ARIMA, initialData: number[], options?: { windowSize?: number; adaptationThreshold?: number; maxErrorWindowSize?: number; verbose?: boolean; }); forecast(steps: number): ForecastResult; forecastWithRealTimeData(actualObservations: number[]): RealTimeForecastResult; addObservationAndForecast(newObservation: number): { forecast: number; lowerBound: number; upperBound: number; error?: number; }; private shouldSwitchStrategy; private addError; private switchStrategy; getCurrentStrategy(): 'stepwise' | 'rolling'; reset(newInitialData: number[]): void; } export {}; //# sourceMappingURL=strategies.d.ts.map