Example 1: ARMA

Consider the Wolfer Sunspot Data (Anderson 1971, p. 660) consisting of the number of sunspots observed each year from 1749 through 1924. The data set for this example consists of the number of sunspots observed from 1770 through 1869. The method of moments estimates

{\rm{\hat \theta }}_{\rm{0}} {\rm{,\hat \phi }}_{\rm{1}} {\rm{,\hat \phi }}_{\rm{2}} {\rm{, and \, \hat \theta }}_{\rm{1}}

for the ARMA(2, 1) model

z_t = \theta _0 + \phi _1 z_{t - 1} + \phi _2 z_{t - 2} - \theta _1 A_{t - 1} + A_t

where the errors A_t are independently normally distributed with mean zero and variance

\sigma _A^2

using System;
using Imsl.Stat;
using PrintMatrix = Imsl.Math.PrintMatrix;

public class ARMAEx1
{
    public static void  Main(String[] args)
    {
        double[] z = new double[]{  100.8, 81.6, 66.5, 34.8, 30.6, 
                                     7, 19.8, 92.5, 154.4, 125.9, 
                                     84.8, 68.1, 38.5, 22.8, 10.2,
                                     24.1, 82.9, 132, 130.9, 118.1, 
                                     89.9, 66.6, 60, 46.9, 41,
                                     21.3, 16, 6.4, 4.1, 6.8,
                                     14.5, 34, 45, 43.1, 47.5, 
                                     42.2, 28.1, 10.1, 8.1, 2.5, 
                                     0, 1.4, 5, 12.2, 13.9, 
                                     35.4, 45.8, 41.1, 30.4, 23.9, 
                                     15.7, 6.6, 4, 1.8, 8.5,
                                     16.6, 36.3, 49.7, 62.5, 67,
                                     71, 47.8, 27.5, 8.5, 13.2, 
                                     56.9, 121.5, 138.3, 103.2, 85.8, 
                                     63.2, 36.8, 24.2, 10.7, 15, 
                                     40.1, 61.5, 98.5, 124.3, 95.9, 
                                     66.5, 64.5, 54.2, 39, 20.6, 
                                     6.7, 4.3,  22.8, 54.8, 93.8,
                                     95.7, 77.2, 59.1, 44, 47,  
                                     30.5, 16.3, 7.3, 37.3, 73.9};
		
        ARMA arma = new ARMA(2, 1, z);
        arma.RelativeError = 0.0;
        arma.MaxIterations = 0;
        arma.Compute();
		
        new PrintMatrix("AR estimates are:  ").Print(arma.GetAR());
        Console.Out.WriteLine();
        new PrintMatrix("MA estimate is:  ").Print(arma.GetMA());
    }
}

Output

  AR estimates are:  
           0           
0   1.24425777984372   
1  -0.575149766040151  


   MA estimate is:  
           0           
0  -0.124089747872598  


Link to C# source.