This example is an artificial realization of an
process via formula
Gaussian white noise,
. An additive outlier with
was added at time point
, a temporary change outlier with
was added at time point
.
import com.imsl.stat.*;
import java.util.*;
public class ARMAOutlierIdentificationEx2 {
public static void main(String args[]) throws Exception {
double resStdErr, aic, constant;
int[][] outlierStatistics;
int numOutliers;
double[] omegaWeights, ar, ma;
int[] model = new int[4];
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
};
model[0] = 1;
model[1] = 1;
model[2] = 1;
model[3] = 0;
ARMAOutlierIdentification armaOutlier
= new ARMAOutlierIdentification(series);
armaOutlier.setRelativeError(1.0e-5);
armaOutlier.compute(model);
double[] outlierFreeSeries = armaOutlier.getOutlierFreeSeries();
numOutliers = armaOutlier.getNumberOfOutliers();
outlierStatistics = armaOutlier.getOutlierStatistics();
omegaWeights = armaOutlier.getOmegaWeights();
constant = armaOutlier.getConstant();
ar = armaOutlier.getAR();
ma = armaOutlier.getMA();
resStdErr = armaOutlier.getResidualStandardError();
aic = armaOutlier.getAIC();
System.out.printf("%n%n ARMA parameters:%n");
System.out.printf(Locale.ENGLISH, "constant:%11.6f%n", constant);
System.out.printf(Locale.ENGLISH, "ar[0]:%14.6f%n", ar[0]);
System.out.printf(Locale.ENGLISH, "ma[0]:%14.6f%n%n", ma[0]);
System.out.printf("Number of outliers:%3d%n%n", numOutliers);
System.out.printf(" Outlier statistics:%n");
System.out.printf("Time point%6sOutlier type%n", " ");
for (int i = 0; i < numOutliers; i++) {
System.out.printf("%10d%18d%n", outlierStatistics[i][0],
outlierStatistics[i][1]);
}
System.out.printf("%n Omega statistics:%n");
System.out.printf("Time point%6sOmega%n", " ");
for (int i = 0; i < numOutliers; i++) {
System.out.printf(Locale.ENGLISH, "%10d%11.6f%n",
outlierStatistics[i][0], omegaWeights[i]);
}
System.out.printf(Locale.ENGLISH, "%nRSE:%9.6f%n", resStdErr);
System.out.printf(Locale.ENGLISH, "AIC:%12.6f", aic);
}
}
ARMA parameters:
constant: 10.834213
ar[0]: 0.785117
ma[0]: -0.496502
Number of outliers: 2
Outlier statistics:
Time point Outlier type
150 1
200 3
Omega statistics:
Time point Omega
150 4.477876
200 3.381473
RSE: 1.007223
AIC: 1417.044613
Link to Java source.