Esempio n. 1
0
def test_negloglike():
    AR = (np.array([1, .5, .3, 0, .2, .1, 0, .2, .05, 1, .5,
                    .3]), np.array([3, 2, 2]))
    MA = (np.array([1, .2, 0, .1, 0, 0, 1, .3]), np.array([2, 2, 2]))
    arma = ARMA(A=AR, B=MA, C=None)
    # Noise generated with R for comparison
    # ( setRNG(seed=0); noise <- makeTSnoise(10, 2, 2) )
    w0_series0 = np.array([1.2629543, -0.3262334])
    w0_series1 = np.array([-1.1476570, -0.2894616])
    w_series0 = np.array([
        1.329799263, 1.272429321, 0.414641434, -1.539950042, -0.928567035,
        -0.294720447, -0.005767173, 2.404653389, 0.763593461, -0.799009249
    ])
    w_series1 = np.array([
        -0.2992151, -0.4115108, 0.2522234, -0.8919211, 0.4356833, -1.2375384,
        -0.2242679, 0.3773956, 0.1333364, 0.8041895
    ])
    noise = (np.vstack([w0_series0,
                        w0_series1]).T, np.vstack([w_series0, w_series1]).T)

    result = arma.simulate(sampleT=10, noise=noise)
    pred = arma.forecast(y=result)

    negloglike = stats.negloglike(pred, result)
    R_negloglike = 25.4247320523
    nptest.assert_almost_equal(negloglike, R_negloglike)
Esempio n. 2
0
def test_negloglike():
    AR = (np.array([1, .5, .3, 0, .2, .1, 0, .2, .05, 1, .5, .3]),
          np.array([3, 2, 2]))
    MA = (np.array([1, .2, 0, .1, 0, 0, 1, .3]),
          np.array([2, 2, 2]))
    arma = ARMA(A=AR, B=MA, C=None)
    # Noise generated with R for comparison
    # ( setRNG(seed=0); noise <- makeTSnoise(10, 2, 2) )
    w0_series0 = np.array([1.2629543, -0.3262334])
    w0_series1 = np.array([-1.1476570, -0.2894616])
    w_series0 = np.array(
        [1.329799263, 1.272429321, 0.414641434, -1.539950042, -0.928567035,
         -0.294720447, -0.005767173, 2.404653389, 0.763593461, -0.799009249])
    w_series1 = np.array(
        [-0.2992151, -0.4115108, 0.2522234, -0.8919211, 0.4356833, -1.2375384,
         -0.2242679, 0.3773956, 0.1333364, 0.8041895])
    noise = (np.vstack([w0_series0, w0_series1]).T,
             np.vstack([w_series0, w_series1]).T)

    result = arma.simulate(sampleT=10, noise=noise)
    pred = arma.forecast(y=result)

    negloglike = stats.negloglike(pred, result)
    R_negloglike = 25.4247320523
    nptest.assert_almost_equal(negloglike, R_negloglike)
Esempio n. 3
0
def test_forecast():
    AR = (np.array([1, .5, .3, 0, .2, .1, 0, .2, .05, 1, .5,
                    .3]), np.array([3, 2, 2]))
    MA = (np.array([1, .2, 0, .1, 0, 0, 1, .3]), np.array([2, 2, 2]))
    arma = ARMA(A=AR, B=MA, C=None)

    series0 = np.array([
        1.58239012, 0.85063747, -0.11981462, -1.69017627, -0.19912156,
        0.02830831, 0.16284912, 2.42364792, -0.15007052, -1.27531927
    ])
    series1 = np.array([
        -0.5172168, -0.4261651, 0.2958942, -0.8559883, 0.7033546, -1.0857290,
        -0.2788928, 0.7393030, -0.2999778, 0.6363970
    ])
    R_result = np.vstack([series0, series1]).T

    # One ahead forecast generated with R
    # ( arma <- l(arma, R_result); R_pred <- arma$estimates$pred )
    pred0 = np.array([
        0.00000000, -0.37127368, -0.54455969, -0.14820550, 0.72904133,
        0.32310958, 0.16860013, 0.01899776, -0.91366463, -0.47630989
    ])
    pred1 = np.array([
        0.00000000, -0.05479565, 0.05066136, 0.03484596, 0.26779526,
        0.15181266, -0.05463401, 0.36191171, -0.43331575, -0.16779191
    ])
    R_pred = np.vstack([pred0, pred1]).T

    pred = arma.forecast(y=R_result)
    nptest.assert_almost_equal(R_pred, pred)

    # One ahead forecast with trend generated with R
    # ( arma_trend <- l(arma_trend, R_result_trend);
    # R_pred_trend <- arma_trend$estimates$pred )
    TREND = np.array([1., 2.])
    arma_trend = ARMA(A=AR, B=MA, C=None, TREND=TREND)
    series0 = np.array([
        2.5823901, 0.9506375, 0.2701854, -1.1311763, 0.1139784, 0.4486183,
        0.6048481, 2.8091458, 0.2663152, -0.8590244
    ])
    series1 = np.array([
        1.48278321, 0.37383493, 1.17589420, 0.37601165, 1.67255459,
        -0.05844899, 0.80133515, 1.76057423, 0.74401876, 1.68619050
    ])
    R_result_trend = np.vstack([series0, series1]).T

    pred0 = np.array([
        1.00000000, -0.27127368, -0.15455969, 0.41079450, 1.04214133,
        0.74341958, 0.61059913, 0.40449566, -0.49727892, -0.06001498
    ])
    pred1 = np.array([
        2.00000000, 0.7452043, 0.9306614, 1.2668460, 1.2369953, 1.1790927,
        1.0255940, 1.3831829, 0.6106808, 0.8820015
    ])
    R_pred_trend = np.vstack([pred0, pred1]).T

    pred_trend = arma_trend.forecast(y=R_result_trend)
    nptest.assert_almost_equal(R_pred_trend, pred_trend)
Esempio n. 4
0
def test_forecast():
    AR = (np.array([1, .5, .3, 0, .2, .1, 0, .2, .05, 1, .5, .3]),
          np.array([3, 2, 2]))
    MA = (np.array([1, .2, 0, .1, 0, 0, 1, .3]),
          np.array([2, 2, 2]))
    arma = ARMA(A=AR, B=MA, C=None)

    series0 = np.array(
        [1.58239012, 0.85063747, -0.11981462, -1.69017627, -0.19912156,
         0.02830831, 0.16284912, 2.42364792, -0.15007052, -1.27531927])
    series1 = np.array(
        [-0.5172168, -0.4261651, 0.2958942, -0.8559883, 0.7033546, -1.0857290,
         -0.2788928, 0.7393030, -0.2999778, 0.6363970])
    R_result = np.vstack([series0, series1]).T

    # One ahead forecast generated with R
    # ( arma <- l(arma, R_result); R_pred <- arma$estimates$pred )
    pred0 = np.array(
        [0.00000000, -0.37127368, -0.54455969, -0.14820550, 0.72904133,
         0.32310958, 0.16860013, 0.01899776, -0.91366463, -0.47630989])
    pred1 = np.array(
        [0.00000000, -0.05479565, 0.05066136, 0.03484596, 0.26779526,
         0.15181266, -0.05463401, 0.36191171, -0.43331575, -0.16779191])
    R_pred = np.vstack([pred0, pred1]).T

    pred = arma.forecast(y=R_result)
    nptest.assert_almost_equal(R_pred, pred)

    # One ahead forecast with trend generated with R
    # ( arma_trend <- l(arma_trend, R_result_trend);
    # R_pred_trend <- arma_trend$estimates$pred )
    TREND = np.array([1., 2.])
    arma_trend = ARMA(A=AR, B=MA, C=None, TREND=TREND)
    series0 = np.array(
        [2.5823901, 0.9506375, 0.2701854, -1.1311763, 0.1139784, 0.4486183,
         0.6048481, 2.8091458, 0.2663152, -0.8590244])
    series1 = np.array(
        [1.48278321, 0.37383493, 1.17589420, 0.37601165, 1.67255459,
         -0.05844899, 0.80133515, 1.76057423, 0.74401876, 1.68619050])
    R_result_trend = np.vstack([series0, series1]).T

    pred0 = np.array(
        [1.00000000, -0.27127368, -0.15455969, 0.41079450, 1.04214133,
         0.74341958, 0.61059913, 0.40449566, -0.49727892, -0.06001498])
    pred1 = np.array(
        [2.00000000, 0.7452043, 0.9306614, 1.2668460, 1.2369953, 1.1790927,
         1.0255940, 1.3831829, 0.6106808, 0.8820015])
    R_pred_trend = np.vstack([pred0, pred1]).T

    pred_trend = arma_trend.forecast(y=R_result_trend)
    nptest.assert_almost_equal(R_pred_trend, pred_trend)