Exemple #1
0
static int re_estimate_VAR (irfboot *b, GRETL_VAR *v, int targ, int shock, 
			    int iter)
{
    int err;

    err = gretl_matrix_multi_ols(v->Y, v->X, v->B, v->E, NULL);

    if (!err) {
	VAR_write_A_matrix(v);
    }
    
    if (!err) {    
	gretl_matrix_multiply_mod(v->E, GRETL_MOD_TRANSPOSE,
				  v->E, GRETL_MOD_NONE,
				  v->S, GRETL_MOD_NONE);
	gretl_matrix_divide_by_scalar(v->S, v->df); /* was v->T in denom. */
	err = gretl_VAR_do_error_decomp(v->S, v->C, v->ord);
    }

    if (!err) {
	err = recalculate_impulse_responses(b, v, targ, shock, iter);
    }

    return err;
}
Exemple #2
0
static int nw_prewhiten (gretl_matrix *H, gretl_matrix **pA)
{
    gretl_matrix *H0, *H1, *A, *U;
    gretl_matrix_block *B;
    int T = H->rows;
    int k = H->cols;
    double h;
    int t, j;
    int err = 0;

    B = gretl_matrix_block_new(&H0, T-1, k,
			       &H1, T-1, k,
			       &A,  k, k,
			       &U,  T-1, k,
			       NULL);
    if (B == NULL) {
	return E_ALLOC;
    }

    for (j=0; j<k; j++) {
	for (t=1; t<T; t++) {
	    h = gretl_matrix_get(H, t, j);
	    gretl_matrix_set(H0, t-1, j, h);
	    h = gretl_matrix_get(H, t-1, j);
	    gretl_matrix_set(H1, t-1, j, h);
	}
    }

    /* estimate VAR */
    err = gretl_matrix_multi_ols(H0, H1, A, U, NULL);

    /* apply the "0.97 limit" if needed */
    if (!err) {
	err = maybe_limit_VAR_coeffs(A, H0, H1, U);
    }    

    if (!err) {
	/* replace incoming H with VAR residuals */
	for (j=0; j<k; j++) {
	    gretl_matrix_set(H, 0, j, 0.0);
	    for (t=1; t<T; t++) {
		h = gretl_matrix_get(U, t-1, j);
		gretl_matrix_set(H, t, j, h);
	    }
	}
    }

#if NW_DEBUG
    gretl_matrix_print(A, "prewhite A-hat");
    gretl_matrix_print(H, "prewhitened H");
#endif

    if (!err) {
	*pA = gretl_matrix_copy(A);
	if (*pA == NULL) {
	    err = E_ALLOC;
	}
    }

    gretl_matrix_block_destroy(B);

    return err;
}