This example is an artificial realization of an
process via formula
using System;
using Imsl.Stat;
public class ARMAOutlierIdentificationEx2
{
public static void Main(String[] args)
{
double resStdErr, aic;
int[,] outlierStatistics;
int numOutliers;
double[] omegaWeights;
int[] model = { 1, 1, 1, 0 };
double[] outlierFreeSeries;
double constant;
double[] ar, ma;
double[] series = {
50.0000000, 50.2728081, 50.6242599, 51.0373917, 51.9317627, 50.3494759,
51.6597252, 52.7004929, 53.5499802, 53.1673279, 50.2373505, 49.3373871,
49.5516472, 48.6692696, 47.6606636, 46.8774185, 45.7315445, 45.6469727,
45.9882355, 45.5216560, 46.0479660, 48.1958656, 48.6387749, 49.9055367,
49.8077278, 47.7858467, 47.9386749, 49.7691956, 48.5425873, 49.1239853,
49.8518791, 50.3320694, 50.9146347, 51.8772049, 51.8745689, 52.3394470,
52.7273712, 51.4310036, 50.6727448, 50.8370399, 51.2843437, 51.8162918,
51.6933670, 49.7038231, 49.0189247, 49.455703, 50.2718010, 49.9605980,
51.3775749, 50.2285385, 48.2692299, 47.6495590, 49.2938499, 49.1924858,
49.6449242, 50.0446815, 51.9972496, 54.2576981, 52.9835434, 50.4193535,
50.3617897, 51.8276901, 53.1239929, 54.0682144, 54.9238319, 55.6877632,
54.8896332, 54.0701065, 52.2754097, 52.2522354, 53.1248703, 51.1287193,
50.5003815, 49.6504173, 47.2453079, 45.4555626, 45.8449707, 45.9765129,
45.7682228, 45.2343674, 46.6496811, 47.0894432, 49.3368340, 50.8058052,
49.9132500, 49.5893288, 48.2470627, 46.9779968, 45.6760864, 45.7070389,
46.6158409, 47.5303612, 47.5630417, 47.0389214, 46.0352287, 45.8161545,
45.7974396, 46.0015373, 45.3796463, 45.3461685, 47.6444016, 49.3327446,
49.3810692, 50.2027817, 51.4567032, 52.3986320, 52.5819206, 52.7721825,
52.6919098, 53.3274345, 55.1345940, 56.8962631, 55.7791634, 55.0616989,
52.3551178, 51.3264084, 51.0968323, 51.1980476, 52.8001442, 52.0545082,
50.8742943, 51.5150337, 51.2242050, 50.5033989, 48.7760124, 47.4179192,
49.7319527, 51.3320541, 52.3918304, 52.4140434, 51.0845947, 49.6485748,
50.6893463, 52.9840813, 53.3246994, 52.4568024, 51.9196091, 53.6683121,
53.4555359, 51.7755814, 49.2915611, 49.8755112, 49.4546776, 48.6171913,
49.9643021, 49.3766441, 49.2551308, 50.1021881, 51.0769119, 55.8328133,
52.0212708, 53.4930801, 53.2147255, 52.2356453, 51.9648819, 52.1816330,
51.9898071, 52.5623627, 51.0717278, 52.2431946, 53.6943054, 54.3752098,
54.1492615, 53.8523254, 52.1093712, 52.3982697, 51.2405128, 50.3018112,
51.3819618, 49.5479546, 47.5024452, 47.4447708, 47.8939056, 48.4070015,
48.2440681, 48.7389755, 49.7309227, 49.1998024, 49.5798340, 51.1196213,
50.6288414, 50.3971405, 51.6084099, 52.4564743, 51.6443901, 52.4080658,
52.4643364, 52.6257210, 53.1604691, 51.9309731, 51.4137230, 52.1233368,
52.9867249, 53.3180733, 51.9647636, 50.7947655, 52.3815842, 50.8353729,
49.4136009, 52.8355217, 52.2234840, 51.1392517, 48.5245132, 46.8700218,
46.1607285, 45.2324257, 47.4157829, 48.9989090, 49.6230736, 50.4352913,
51.1652985, 50.2588654, 50.7820129, 51.0448799, 51.2880516, 49.6898804,
49.0288200, 49.9338837, 48.2214432, 46.2103348, 46.9550171, 47.5595894,
47.7176018, 48.4502945, 50.9816895, 51.6950073, 51.6973495, 52.1941261,
51.8988075, 52.5617599, 52.0218391, 49.5236053, 47.9684906, 48.2445183,
48.8275146, 49.7176971, 51.5649338, 52.5627213, 52.0182419, 50.9688835,
51.5846901, 50.9486771, 48.8685837, 48.5600624, 48.4760094, 48.5348396,
50.4187813, 51.2542381, 50.1872864, 50.4407692, 50.6222687, 50.4972000,
51.0036087, 51.3367500, 51.7368202, 53.0463791, 53.6261253, 52.0728683,
48.9740753, 49.3280830, 49.2733917, 49.8519020, 50.8562126, 49.5594254,
49.6109200, 48.3785629, 48.0026474, 49.4874268, 50.1596375, 51.8059540,
53.0288620, 51.3321075, 49.3114815, 48.7999306, 47.7201881, 46.3433914,
46.5303612, 47.6294632, 48.6012459, 47.8567657, 48.0604057, 47.1352806,
49.5724792, 50.5566483, 49.4182968, 50.5578079, 50.6883736, 50.6333389,
51.9766159, 51.0595245, 49.3751640, 46.9667702, 47.1658173, 47.4411278,
47.5360374, 48.9914742, 50.4747620, 50.2728043, 51.9117165, 53.7627792};
ARMAOutlierIdentification armaOutlier = new ARMAOutlierIdentification(series);
armaOutlier.RelativeError = 1.0e-5;
armaOutlier.Compute(model);
outlierFreeSeries = armaOutlier.GetOutlierFreeSeries();
numOutliers = armaOutlier.NumberOfOutliers;
outlierStatistics = armaOutlier.GetOutlierStatistics();
omegaWeights = armaOutlier.GetOmegaWeights();
constant = armaOutlier.Constant;
ar = armaOutlier.GetAR();
ma = armaOutlier.GetMA();
resStdErr = armaOutlier.ResidualStandardError;
aic = armaOutlier.AIC;
Console.Out.WriteLine("\n\n ARMA parameters:");
Console.Out.WriteLine("constant:{0, 11:f6}", constant);
Console.Out.WriteLine("ar[0]:{0,14:f6}", ar[0]);
Console.Out.WriteLine("ma[0]:{0,14:f6}", ma[0]);
Console.Out.WriteLine();
Console.Out.WriteLine("Number of outliers:{0,3:d}", numOutliers);
Console.Out.WriteLine();
Console.Out.WriteLine(" Outlier statistics:");
Console.Out.WriteLine("Time point Outlier type");
for (int i = 0; i < numOutliers; i++)
Console.Out.WriteLine("{0,10:d}{1,18:d}", outlierStatistics[i,0],
outlierStatistics[i,1]);
Console.Out.WriteLine("\n Omega statistics:");
Console.Out.WriteLine("Time point Omega");
for (int i = 0; i < numOutliers; i++)
Console.Out.WriteLine("{0,10:d}{1,11:f6}", outlierStatistics[i,0],
omegaWeights[i]);
Console.Out.WriteLine("\nRSE:{0,12:f6}", resStdErr);
Console.Out.WriteLine("AIC:{0,12:f6}", aic);
}
}
ARMA parameters:
constant: 10.829171
ar[0]: 0.785217
ma[0]: -0.496449
Number of outliers: 2
Outlier statistics:
Time point Outlier type
150 1
200 3
Omega statistics:
Time point Omega
150 4.477853
200 3.381622
RSE: 1.007223
AIC: 1417.044262
Link to C# source.