On Sun, Nov 18, 2012 at 1:37 PM, Allin Cottrell wrote:
On Sun, 18 Nov 2012, Lee Adkins quoted Allin:

>> In this example the computed variance for the baths
>> coefficient is 2.15e-13, which seems on the big side to be
>> forced to zero. I think the only way to get this "right" would
>> be to somehow keep track of which coefficients, if any, are
>> assigned a definite numerical value by the restriction -- i.e.
>> look for rows of the R matrix that have only one non-zero
>> entry?

and wrote:

> Yes, I think so, too since the std errors (and coefficients) can always be
> changed by an arbitrary amount by rescaling y or x or both.

I've now put that into CVS. Here's a precise account of what's new:

When transcribing from the numerically computed variance matrix for
restricted OLS estimates, we examine the R matrix (as in R\beta =
q). For each row of R, if it contains a single non-zero element we
record the column position of that element, call it p. And we
override the calculated values for all elements in row p and column
p of the variance matrix with zeros.

If anyone can think of a way this could end up doing the wrong

It's almost working.  Here is the example:

<hansl>

open "C:\Program Files (x86)\gretl\data\poe\br.gdt"
square sqft bedrooms
logs price sqft
series price = price/100
series y = price
list xlist = const l_sqft sq_bedrooms bedrooms baths age
matrix R = zeros(3,3)~I(3)
matrix r = {  -700 ; 700; -5 }

ols price xlist
restrict --full
R = R
q = r
end restrict
matrix s = $stderr matrix v =$vcv
R
s
v
</hansl>

produces

? R
R (3 x 6)

0   0   0   1   0   0
0   0   0   0   1   0
0   0   0   0   0   1

? s
s (6 x 1)

625.86
87.986
7.2960
1.8334e-006
0.0000
0.0000

? v
v (6 x 6)

3.9170e+005      -54786.       2744.3  3.0797e-011  2.4730e-011 -1.1930e-012
-54786.       7741.5      -431.54 -2.0534e-012 -2.6880e-013 -5.0720e-014
2744.3      -431.54       53.232 -1.4314e-012 -1.2340e-014 -1.0910e-014
3.0797e-011 -2.0534e-012 -1.4314e-012  3.3613e-012  6.1714e-013  4.9556e-014
2.4730e-011 -2.6880e-013 -1.2340e-014  6.1714e-013       0.0000       0.0000
-1.1930e-012 -5.0720e-014 -1.0910e-014  4.9556e-014       0.0000       0.0000

Since row 1 of the restrict matrix R contains a single number in column 4, variance of b4 should be = 0.  Also, the off diagonal elements aren't zero, to the right of column 3 and below row 3.  The negative variances for variables 5 and 6 are now zero though.
--