[Gretl-devel] VECM restrictions and scaling

Sven Schreiber svetosch at gmx.net
Tue Sep 18 05:48:32 EDT 2007


Now looking at the algorithm in more detail...

Allin Cottrell schrieb:

> 
> First, we scan the matrices R and q (as in R*vec(beta) = q), 
> looking for rows that satisfy this criterion:
> 
> * There's exactly one non-zero entry, r_{ij}, in the given row of 
>   R, and the corresponding q_i is non-zero.

seems ok; do you also check whether there are restrictions on alpha (and
which kind)?

> 
> For each such row we record the coordinates i and j and the 
> implied value of the associated beta element, v_j = q_i/r_{ij}.  
> Based on j we determine the associated column of the beta matrix: 
> k = j / p_1, where p_1 is the number of rows in beta (and '/' 
> indicates truncated integer division).

Is this really what you mean?
If we're talking about the first element in the first cointegration
vector, then with "human" (=one-based) matrix indexing we have i=j=1
and, for example, p_1 = 3. Then k = 1 '/' 3 = 0, but should be 1?


> 
> We then ask: Is row i the first such row pertaining to column k of 
> beta?  If so, we flag this row (which I'll call a scaling row) for 
> removal.  If not, we flag it for replacement with a homogeneous 
> restriction.  For example, suppose we find two rows of R that 
> correspond to
> 
> b[2,1] = 1
> b[2,3] = -1
> 
> We'll remove the first row, and replace the second with
> 
> b[2,1] + b[2,3] = 0

ok; what do you do if there are more than two relevant rows?

> 
> In general, the replacement R row is all zeros apart from a 1 in 
> column j0 and the value x in column j1, where
> 
> * j0 is the non-zero column in the scaling row pertaining to 
>   column k of beta;
> 
> * j1 is the non-zero column in the row of R to be replaced; and
> 
> * x = -v_{j0} / v_{j1}

looks ok, too

> 
> We then do the maximization using the switching algorithm. Once 
> that's done, but before computing the variance of the estimates, 
> we re-scale beta and alpha using the saved information from the 
> scaling rows.

Could you store the maximized likelihood value before the rescaling?
Just as a debug check if the rescaling leaves it unchanged.

> 
> For each column, k, of beta, if there's an associated scale factor 
> v_j (as defined above; strictly speaking, v_{j0}):
> 
> * Construct the value s_k = b_j / v_j, where b_j is the jth 
>   element of the estimated vec(beta).
> 
> * Divide each non-zero element of the beta column by s_k; multiply 
>   each non-zero element of column k of alpha by s_k.

ok

> 
> We then recompute the relevant blocks of the observed information 
> matrix using the rescaled beta and alpha, and I think the variance 
> comes out right.

yes the problem seems to lie with the point estimates themselves

well sorry, couldn't find any obvious mistakes :-(
-sven


More information about the Gretl-devel mailing list