p = 2 q = 1 dim = 2 # Make a realization of an ARMA model # Tmin , Tmax and N points for TimeGrid dt = 1.0 size = 400 timeGrid = ot.RegularGrid(0.0, dt, size) # white noise cov = ot.CovarianceMatrix([[0.1, 0.0], [0.0, 0.2]]) whiteNoise = ot.WhiteNoise(ot.Normal([0.0] * dim, cov), timeGrid) # AR/MA coefficients ar = ot.ARMACoefficients(p, dim) ar[0] = ot.SquareMatrix([[-0.5, -0.1], [-0.4, -0.5]]) ar[1] = ot.SquareMatrix([[0.0, 0.0], [-0.25, 0.0]]) ma = ot.ARMACoefficients(q, dim) ma[0] = ot.SquareMatrix([[-0.4, 0.0], [0.0, -0.4]]) # ARMA model creation myARMA = ot.ARMA(ar, ma, whiteNoise) # Create a realization timeSeries = ot.TimeSeries(myARMA.getRealization()) cov[0, 0] += 0.01 * ot.DistFunc.rNormal() cov[1, 1] += 0.01 * ot.DistFunc.rNormal()
from __future__ import print_function import openturns as ot import matplotlib.pyplot as plt ot.RandomGenerator.SetSeed(0) ot.Log.Show(ot.Log.NONE) # %% # Create an arma process tMin = 0.0 n = 1000 timeStep = 0.1 myTimeGrid = ot.RegularGrid(tMin, timeStep, n) myWhiteNoise = ot.WhiteNoise(ot.Triangular(-1.0, 0.0, 1.0), myTimeGrid) myARCoef = ot.ARMACoefficients([0.4, 0.3, 0.2, 0.1]) myMACoef = ot.ARMACoefficients([0.4, 0.3]) arma = ot.ARMA(myARCoef, myMACoef, myWhiteNoise) tseries = ot.TimeSeries(arma.getRealization()) # Create a sample of N time series from the process N = 100 sample = arma.getSample(N) # %% # CASE 1 : we specify a (p,q) order # Specify the order (p,q) p = 4 q = 2
#! /usr/bin/env python import openturns as ot size = 100 # ARMA parameters arcoefficients = ot.ARMACoefficients([0.3]) macoefficients = ot.ARMACoefficients(0) timeGrid = ot.RegularGrid(0.0, 0.1, size) # White noise ==> gaussian whiteNoise = ot.WhiteNoise(ot.Normal(), timeGrid) myARMA = ot.ARMA(arcoefficients, macoefficients, whiteNoise) # A realization of the ARMA process # The realization is supposed to be of a stationnary process realization = ot.TimeSeries(myARMA.getRealization()) # In the strategy of tests, one has to detect a trend tendency # We check if the time series writes as x_t = a +b * t + c * x_{t-1} # H0 = c is equal to one and thus # p-value threshold : probability of the H0 reject zone : 0.05 # p-value : probability (test variable decision > test variable decision (statistic) evaluated on data) # Test = True <=> p-value > p-value threshold test = ot.DickeyFullerTest(realization) print("Drift and linear trend model=", test.testUnitRootInDriftAndLinearTrendModel(0.05)) print("Drift model=", test.testUnitRootInDriftModel(0.05)) print("AR1 model=", test.testUnitRootInAR1Model(0.05))