Note that the reason that the user gets a singular covariance message is that the model, as specified, is not identified.
Here is the specification in EQ4:
Code: Select all
DLCOL_APT = (EXP(C(2))/(EXP(C(2))+EXP(C(3))))*DLHOTELR_IND+ (EXP(C(3))/(EXP(C(2))+EXP(C(3))))*DLOFFR_IND
Recall that we want an adding up condition on the coefficients. The user specifies two transformed coefficients as
exp(c(2))/(exp(c(2))+exp(c(3)))
and
exp(c(3)/(exp(c(2))+exp(c(3)))
To further clarify startz's comment that the coefficients do add up to one, note that it's the
transformed coefficients that will satisfy the adding up condition in this specification, not the estimated coefficients C(2), C(3)) themselves.
Furthermore, it's easy to see that this specification is overparametrized. Suppose for a moment that I find that I want the transformed coefficients to each equal .5. Then I can set exp(c(3)) to .5 and exp(c(2)) to .5. But I can also set those two values to any (positive) multiple of .5 and, since I have a ratio of terms, I will get the same transformed coefficient values. Hence the specification is trivially not identified.
What you'll need to do to get an estimable equation is normalize one of the terms. Then the remaining coefficient in the specification will define both of the transformed values (via the adding up condition). More generally, if you have K coefficients with an adding up condition, you'll have to normalize 1 of them and the remaining K-1 will determine the remaining fractions. The easiest normalization is to set C(2) to zero (or equivalently, exp(C(2))=1) So, if we specify
Code: Select all
DLCOL_APT = (1/(1+EXP(C(3))))*DLHOTELR_IND+ (EXP(C(3))/(1+EXP(C(3))))*DLOFFR_IND
Cross-section econometrician and statistician types will recognize these as logistic transforms of the coefficient C(3) which sum to 1.
Lastly, I will note that the user hasn't specified a constant in the model above. This may or may not be what the user wanted, but I wanted to point it out.