package com.imsl.test.example.stat; import com.imsl.stat.*; /** *

* Performs a lack-of-fit test between an \(\text{ARMA}(2,1)\) and Wolfer's * sunspot data.

* * Consider the Wölfer Sunspot Data (Anderson 1971, page 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. An \(\text{ARMA}(2,1)\) with nonzero mean is fit to the series. * and the autocorrelations of the residuals are estimated * using the AutoCorrelation class. Class LackOfFit is * used to compute a portmanteau lack of fit test using 10 lags. * * The warning message from ARMA in the output can be ignored. (See * {@link ARMAEx2} for a full explanation of the warning message.) * * @see Code * @see Output */ public class LackOfFitEx1 { public static void main(String args[]) throws Exception { int p = 2, q = 1, lagmax = 10, npfree = 4; double tolerance = 0.125; // sunspot data for 1770 through 1869 double[] x = { 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 }; // Get residuals from ARMA(2,1) for autocorrelation/lack of fit ARMA arma = new ARMA(p, q, x); arma.setMethod(ARMA.LEAST_SQUARES); arma.setConvergenceTolerance(tolerance); arma.compute(); double[] residuals = arma.getResidual(); // Get autocorrelations from residuals for lack of fit test AutoCorrelation ac = new AutoCorrelation(residuals, lagmax); double[] correlations = ac.getAutoCorrelations(); // Get lack of fit test statistic and p-value double[] result = LackOfFit.compute(x.length, correlations, npfree, lagmax); // Print parameter estimates, test statistic, and p-value // NOTE: Test Statistic Q follows a Chi-squared dist. System.out.println("Lack of Fit Statistic, Q = " + result[0]); System.out.println("P-value of Q = " + result[1]); } }