;+ ; NAME: ; dw_critical ; ; ; PURPOSE: ; return the critical values for the Durbin-Watson test statistic ; from http://www.tau.ac.il/~yonar/econometrics/durbinwatson.pdf ; ; CATEGORY: ; stats ; ; INPUTS: ; sig: sigificance level (1%, 2.5%, 5%) ; reg: number of regressors (2,3,4,5,6) ; n: number of data pairs, 15 to 100 rounded to array ; ; OUTPUTS: ; an array with the [lower, upper] bounds of the test statistic ; ; EXAMPLE: ; see ; http://people.bu.edu/balarsen/Home/IDL/Entries/2007/12/1_Durbin-Watson_test_for_autocorrelation.html ; ; IDL> print, dw_critical(1, 2, 23) ; 1.01700 1.18600 ; IDL> print, dw_critical(1, 2, 51) ; 1.32400 1.40300 ; IDL> print, dw_critical(1, 2, 101) ; 1.52200 1.56200 ; IDL> print, dw_critical(1, 2, 100) ; 1.52200 1.56200 ; IDL> print, dw_critical(1, 2, 36) ; 1.20500 1.31500 ; ; ; ; MODIFICATION HISTORY: ; ; Mon Jan 7 16:25:00 2008, Brian Larsen ; updated for new round2array() inputs ; Sat Dec 1 12:39:06 2007, Brian Larsen ; written and tested ; ;- FUNCTION dw_critical, sig, reg, n IF sig NE 1 AND sig NE 2.5 AND sig NE 5 THEN $ message, /ioerror, 'significance must be 1%, 2.5%, or 5%' IF reg NE 2 AND reg NE 3 AND reg NE 4 AND reg NE 5 AND reg NE 6 THEN $ message, /ioerror, 'regressors must be 2,3,4,5,6' IF n_elements(n) EQ 0 THEN $ message, /ioerror, 'must enter number of elements' CASE sig OF 1:BEGIN crit = [$ 15, 0.811, 1.069, 0.700, 1.252, 0.591, 1.465, 0.487, 1.705, 0.390, 1.967, $ 16, 0.844, 1.087, 0.738, 1.253, 0.633, 1.447, 0.532, 1.664, 0.437, 1.901, $ 17, 0.873, 1.102, 0.773, 1.255, 0.672, 1.432, 0.574, 1.631, 0.481, 1.847, $ 18, 0.902, 1.118, 0.805, 1.259, 0.708, 1.422, 0.614, 1.604, 0.522, 1.803, $ 19, 0.928, 1.133, 0.835, 1.264, 0.742, 1.416, 0.650, 1.583, 0.561, 1.767, $ 20, 0.952, 1.147, 0.862, 1.270, 0.774, 1.410, 0.684, 1.567, 0.598, 1.736, $ 21, 0.975, 1.161, 0.889, 1.276, 0.803, 1.408, 0.718, 1.554, 0.634, 1.712, $ 22, 0.997, 1.174, 0.915, 1.284, 0.832, 1.407, 0.748, 1.543, 0.666, 1.691, $ 23, 1.017, 1.186, 0.938, 1.290, 0.858, 1.407, 0.777, 1.535, 0.699, 1.674, $ 24, 1.037, 1.199, 0.959, 1.298, 0.881, 1.407, 0.805, 1.527, 0.728, 1.659, $ 25, 1.055, 1.210, 0.981, 1.305, 0.906, 1.408, 0.832, 1.521, 0.756, 1.645, $ 26, 1.072, 1.222, 1.000, 1.311, 0.928, 1.410, 0.855, 1.517, 0.782, 1.635, $ 27, 1.088, 1.232, 1.019, 1.318, 0.948, 1.413, 0.878, 1.514, 0.808, 1.625, $ 28, 1.104, 1.244, 1.036, 1.325, 0.969, 1.414, 0.901, 1.512, 0.832, 1.618, $ 29, 1.119, 1.254, 1.053, 1.332, 0.988, 1.418, 0.921, 1.511, 0.855, 1.611, $ 30, 1.134, 1.264, 1.070, 1.339, 1.006, 1.421, 0.941, 1.510, 0.877, 1.606, $ 31, 1.147, 1.274, 1.085, 1.345, 1.022, 1.425, 0.960, 1.509, 0.897, 1.601, $ 32, 1.160, 1.283, 1.100, 1.351, 1.039, 1.428, 0.978, 1.509, 0.917, 1.597, $ 33, 1.171, 1.291, 1.114, 1.358, 1.055, 1.432, 0.995, 1.510, 0.935, 1.594, $ 34, 1.184, 1.298, 1.128, 1.364, 1.070, 1.436, 1.012, 1.511, 0.954, 1.591, $ 35, 1.195, 1.307, 1.141, 1.370, 1.085, 1.439, 1.028, 1.512, 0.971, 1.589, $ 36, 1.205, 1.315, 1.153, 1.376, 1.098, 1.442, 1.043, 1.513, 0.987, 1.587, $ 37, 1.217, 1.322, 1.164, 1.383, 1.112, 1.446, 1.058, 1.514, 1.004, 1.585, $ 38, 1.227, 1.330, 1.176, 1.388, 1.124, 1.449, 1.072, 1.515, 1.019, 1.584, $ 39, 1.237, 1.337, 1.187, 1.392, 1.137, 1.452, 1.085, 1.517, 1.033, 1.583, $ 40, 1.246, 1.344, 1.197, 1.398, 1.149, 1.456, 1.098, 1.518, 1.047, 1.583, $ 45, 1.288, 1.376, 1.245, 1.424, 1.201, 1.474, 1.156, 1.528, 1.111, 1.583, $ 50, 1.324, 1.403, 1.285, 1.445, 1.245, 1.491, 1.206, 1.537, 1.164, 1.587, $ 55, 1.356, 1.428, 1.320, 1.466, 1.284, 1.505, 1.246, 1.548, 1.209, 1.592, $ 60, 1.382, 1.449, 1.351, 1.484, 1.317, 1.520, 1.283, 1.559, 1.248, 1.598, $ 65, 1.407, 1.467, 1.377, 1.500, 1.346, 1.534, 1.314, 1.568, 1.283, 1.604, $ 70, 1.429, 1.485, 1.400, 1.514, 1.372, 1.546, 1.343, 1.577, 1.313, 1.611, $ 75, 1.448, 1.501, 1.422, 1.529, 1.395, 1.557, 1.368, 1.586, 1.340, 1.617, $ 80, 1.465, 1.514, 1.440, 1.541, 1.416, 1.568, 1.390, 1.595, 1.364, 1.624, $ 85, 1.481, 1.529, 1.458, 1.553, 1.434, 1.577, 1.411, 1.603, 1.386, 1.630, $ 90, 1.496, 1.541, 1.474, 1.563, 1.452, 1.587, 1.429, 1.611, 1.406, 1.636, $ 95, 1.510, 1.552, 1.489, 1.573, 1.468, 1.596, 1.446, 1.618, 1.425, 1.641, $ 100, 1.522, 1.562, 1.502, 1.582, 1.482, 1.604, 1.461, 1.625, 1.441, 1.647 $ ] pts = crit[indgen(38)*11] lower = [ $ [crit[indgen(38)*11+1]], $ [crit[indgen(38)*11+3]], $ [crit[indgen(38)*11+5]], $ [crit[indgen(38)*11+7]], $ [crit[indgen(38)*11+9]] $ ] upper = [ $ [crit[indgen(38)*11+2]], $ [crit[indgen(38)*11+4]], $ [crit[indgen(38)*11+6]], $ [crit[indgen(38)*11+8]], $ [crit[indgen(38)*11+10]] $ ] END 2.5:BEGIN CRIT = [ $ 15, 0.949, 1.222, 0.827, 1.405, 0.706, 1.615, 0.588, 1.848, 0.478, 2.099, $ 16, 0.980, 1.235, 0.864, 1.403, 0.748, 1.594, 0.636, 1.806, 0.527, 2.035, $ 17, 1.009, 1.248, 0.899, 1.403, 0.788, 1.578, 0.680, 1.773, 0.574, 1.983, $ 18, 1.035, 1.261, 0.930, 1.405, 0.825, 1.567, 0.720, 1.746, 0.619, 1.939, $ 19, 1.060, 1.274, 0.959, 1.407, 0.859, 1.558, 0.758, 1.724, 0.660, 1.902, $ 20, 1.082, 1.286, 0.988, 1.410, 0.890, 1.551, 0.794, 1.705, 0.699, 1.871, $ 21, 1.104, 1.297, 1.012, 1.415, 0.920, 1.546, 0.826, 1.691, 0.734, 1.845, $ 22, 1.124, 1.308, 1.036, 1.419, 0.947, 1.543, 0.858, 1.678, 0.769, 1.823, $ 23, 1.144, 1.319, 1.059, 1.424, 0.973, 1.541, 0.887, 1.668, 0.801, 1.804, $ 24, 1.161, 1.329, 1.080, 1.429, 0.997, 1.539, 0.914, 1.659, 0.830, 1.787, $ 25, 1.178, 1.339, 1.099, 1.435, 1.019, 1.539, 0.939, 1.652, 0.859, 1.773, $ 26, 1.194, 1.348, 1.118, 1.439, 1.041, 1.538, 0.964, 1.646, 0.886, 1.761, $ 27, 1.208, 1.358, 1.135, 1.445, 1.061, 1.539, 0.986, 1.641, 0.911, 1.751, $ 28, 1.222, 1.367, 1.153, 1.450, 1.080, 1.540, 1.007, 1.637, 0.934, 1.742, $ 29, 1.236, 1.375, 1.168, 1.455, 1.098, 1.541, 1.028, 1.634, 0.958, 1.734, $ 30, 1.249, 1.383, 1.183, 1.460, 1.115, 1.542, 1.047, 1.632, 0.978, 1.727, $ 31, 1.261, 1.391, 1.197, 1.465, 1.132, 1.544, 1.066, 1.630, 0.999, 1.721, $ 32, 1.273, 1.399, 1.211, 1.469, 1.147, 1.546, 1.083, 1.628, 1.018, 1.715, $ 33, 1.284, 1.406, 1.224, 1.474, 1.163, 1.548, 1.099, 1.627, 1.037, 1.711, $ 34, 1.294, 1.413, 1.236, 1.479, 1.176, 1.550, 1.115, 1.626, 1.054, 1.707, $ 35, 1.305, 1.420, 1.248, 1.484, 1.190, 1.553, 1.131, 1.626, 1.071, 1.704, $ 36, 1.315, 1.426, 1.259, 1.488, 1.203, 1.555, 1.145, 1.625, 1.087, 1.701, $ 37, 1.324, 1.433, 1.270, 1.493, 1.215, 1.557, 1.159, 1.625, 1.102, 1.698, $ 38, 1.333, 1.439, 1.281, 1.497, 1.227, 1.560, 1.173, 1.625, 1.117, 1.695, $ 39, 1.342, 1.445, 1.291, 1.501, 1.238, 1.562, 1.185, 1.626, 1.131, 1.693, $ 40, 1.350, 1.451, 1.300, 1.506, 1.249, 1.564, 1.197, 1.626, 1.144, 1.692, $ 45, 1.388, 1.477, 1.343, 1.525, 1.298, 1.576, 1.252, 1.630, 1.204, 1.687, $ 50, 1.420, 1.500, 1.380, 1.543, 1.338, 1.588, 1.297, 1.636, 1.255, 1.685, $ 55, 1.447, 1.520, 1.411, 1.559, 1.373, 1.600, 1.335, 1.642, 1.297, 1.686, $ 60, 1.471, 1.538, 1.438, 1.573, 1.404, 1.610, 1.369, 1.649, 1.333, 1.688, $ 65, 1.492, 1.554, 1.461, 1.587, 1.430, 1.620, 1.398, 1.655, 1.365, 1.691, $ 70, 1.511, 1.568, 1.482, 1.599, 1.453, 1.630, 1.424, 1.662, 1.393, 1.695, $ 75, 1.528, 1.582, 1.501, 1.610, 1.474, 1.638, 1.446, 1.668, 1.418, 1.699, $ 80, 1.543, 1.594, 1.518, 1.619, 1.493, 1.647, 1.467, 1.674, 1.441, 1.703, $ 85, 1.557, 1.605, 1.534, 1.629, 1.510, 1.654, 1.485, 1.680, 1.461, 1.707, $ 90, 1.570, 1.614, 1.548, 1.638, 1.525, 1.662, 1.502, 1.686, 1.479, 1.711, $ 95, 1.582, 1.624, 1.560, 1.646, 1.539, 1.668, 1.517, 1.691, 1.495, 1.715, $ 100, 1.593, 1.633, 1.573, 1.654, 1.552, 1.675, 1.532, 1.696, 1.511, 1.718 $ ] pts = crit[indgen(38)*11] lower = [ $ [crit[indgen(38)*11+1]], $ [crit[indgen(38)*11+3]], $ [crit[indgen(38)*11+5]], $ [crit[indgen(38)*11+7]], $ [crit[indgen(38)*11+9]] $ ] upper = [ $ [crit[indgen(38)*11+2]], $ [crit[indgen(38)*11+4]], $ [crit[indgen(38)*11+6]], $ [crit[indgen(38)*11+8]], $ [crit[indgen(38)*11+10]] $ ] END 5:BEGIN crit = [ $ 15, 1.077, 1.361, 0.945, 1.543, 0.814, 1.750, 0.685, 1.977, 0.562, 2.220, $ 16, 1.106, 1.371, 0.982, 1.539, 0.857, 1.728, 0.734, 1.935, 0.615, 2.157, $ 17, 1.133, 1.381, 1.015, 1.536, 0.897, 1.710, 0.779, 1.900, 0.664, 2.104, $ 18, 1.158, 1.392, 1.046, 1.535, 0.933, 1.696, 0.820, 1.872, 0.710, 2.060, $ 19, 1.180, 1.401, 1.075, 1.535, 0.967, 1.685, 0.859, 1.848, 0.752, 2.022, $ 20, 1.201, 1.411, 1.100, 1.537, 0.998, 1.676, 0.894, 1.828, 0.792, 1.991, $ 21, 1.221, 1.420, 1.125, 1.538, 1.026, 1.669, 0.927, 1.812, 0.828, 1.964, $ 22, 1.240, 1.429, 1.147, 1.541, 1.053, 1.664, 0.958, 1.797, 0.863, 1.940, $ 23, 1.257, 1.437, 1.168, 1.543, 1.078, 1.660, 0.986, 1.786, 0.895, 1.919, $ 24, 1.273, 1.446, 1.188, 1.546, 1.101, 1.657, 1.013, 1.775, 0.925, 1.902, $ 25, 1.288, 1.454, 1.206, 1.550, 1.123, 1.654, 1.038, 1.767, 0.953, 1.886, $ 26, 1.302, 1.461, 1.224, 1.553, 1.143, 1.652, 1.062, 1.759, 0.979, 1.873, $ 27, 1.316, 1.468, 1.240, 1.556, 1.162, 1.651, 1.083, 1.753, 1.004, 1.861, $ 28, 1.328, 1.476, 1.255, 1.560, 1.181, 1.650, 1.104, 1.747, 1.028, 1.850, $ 29, 1.341, 1.483, 1.270, 1.563, 1.198, 1.650, 1.124, 1.743, 1.050, 1.841, $ 30, 1.352, 1.489, 1.284, 1.567, 1.214, 1.650, 1.143, 1.739, 1.070, 1.833, $ 31, 1.363, 1.496, 1.297, 1.570, 1.229, 1.650, 1.160, 1.735, 1.090, 1.825, $ 32, 1.373, 1.502, 1.309, 1.573, 1.244, 1.650, 1.177, 1.732, 1.109, 1.819, $ 33, 1.383, 1.508, 1.321, 1.577, 1.258, 1.651, 1.193, 1.730, 1.127, 1.813, $ 34, 1.393, 1.514, 1.332, 1.580, 1.271, 1.652, 1.208, 1.728, 1.144, 1.807, $ 35, 1.402, 1.519, 1.343, 1.584, 1.283, 1.653, 1.222, 1.726, 1.160, 1.803, $ 36, 1.411, 1.524, 1.354, 1.587, 1.295, 1.654, 1.236, 1.725, 1.175, 1.799, $ 37, 1.419, 1.530, 1.364, 1.590, 1.307, 1.655, 1.249, 1.723, 1.190, 1.795, $ 38, 1.427, 1.535, 1.373, 1.594, 1.317, 1.656, 1.261, 1.723, 1.204, 1.792, $ 39, 1.435, 1.540, 1.382, 1.597, 1.328, 1.658, 1.273, 1.722, 1.218, 1.789, $ 40, 1.442, 1.544, 1.391, 1.600, 1.338, 1.659, 1.285, 1.721, 1.231, 1.786, $ 45, 1.475, 1.566, 1.430, 1.615, 1.383, 1.666, 1.336, 1.720, 1.287, 1.776, $ 50, 1.503, 1.585, 1.462, 1.628, 1.421, 1.674, 1.378, 1.721, 1.334, 1.771, $ 55, 1.527, 1.601, 1.490, 1.640, 1.452, 1.681, 1.414, 1.724, 1.374, 1.768, $ 60, 1.549, 1.616, 1.514, 1.652, 1.480, 1.689, 1.444, 1.727, 1.408, 1.767, $ 65, 1.567, 1.629, 1.536, 1.662, 1.503, 1.696, 1.471, 1.731, 1.438, 1.767, $ 70, 1.583, 1.641, 1.554, 1.671, 1.524, 1.703, 1.494, 1.735, 1.464, 1.768, $ 75, 1.598, 1.652, 1.571, 1.680, 1.543, 1.709, 1.515, 1.739, 1.486, 1.770, $ 80, 1.611, 1.662, 1.586, 1.688, 1.560, 1.715, 1.534, 1.743, 1.507, 1.772, $ 85, 1.624, 1.671, 1.600, 1.696, 1.575, 1.721, 1.551, 1.747, 1.525, 1.774, $ 90, 1.635, 1.679, 1.612, 1.703, 1.589, 1.726, 1.566, 1.751, 1.542, 1.776, $ 95, 1.645, 1.687, 1.623, 1.709, 1.602, 1.732, 1.579, 1.755, 1.557, 1.778, $ 100, 1.654, 1.694, 1.634, 1.715, 1.613, 1.736, 1.592, 1.758, 1.571, 1.780 $ ] pts = crit[indgen(38)*11] lower = [ $ [crit[indgen(38)*11+1]], $ [crit[indgen(38)*11+3]], $ [crit[indgen(38)*11+5]], $ [crit[indgen(38)*11+7]], $ [crit[indgen(38)*11+9]] $ ] upper = [ $ [crit[indgen(38)*11+2]], $ [crit[indgen(38)*11+4]], $ [crit[indgen(38)*11+6]], $ [crit[indgen(38)*11+8]], $ [crit[indgen(38)*11+10]] $ ] END ENDCASE return, [lower[round2array(pts, n), reg-2], upper[round2array(pts, n), reg-2]] END