Multinomial Logistic Regression (MLR)
Posted: Tue Jun 28, 2011 1:59 pm
Hi,
I am trying to adapt the example MLR in the help guide but keep getting errors.
Basically, I will have 7 categories of dependant variable (1-7), and 5 regressors (2 of which are dummy variables). However, when I try to run the below code I get the error message "B7 is not defined or is an illegal command".
I think I may be getting things very mixed up here!
Any help would be apprciated. Thanks
' declare parameter vector
coef (7) b2
coef (7) b3
coef (7) b4
coef (7) b5
coef (7) b6
coef (7) b7
mlogit.append xb2 = b2(1)+b2(2)*x1+b2(3)+b2(4)+b2(5)+b2(6)+b2(7)*x7
mlogit.append xb3 = b3(1)+b3(2)*x1+b3(3)+b3(4)+b3(5)+b3(6)+b3(7)*x7
mlogit.append xb4 = b4(1)+b4(2)*x1+b4(3)+b4(4)+b4(5)+b4(6)+b4(7)*x7
mlogit.append xb5 = b5(1)+b5(2)*x1+b5(3)+b5(4)+b5(5)+b5(6)+b5(7)*x7
mlogit.append xb6 = b6(1)+b6(2)*x1+b6(3)+b6(4)+b6(5)+b6(6)+b6(7)*x7
mlogit.append xb7 = b7(1)+b7(2)*x1+b7(3)+b7(4)+b7(5)+b7(6)+b7(7)*x7
' define prob for each choice
mlogit.append denom = 1+exp(xb2)+exp(xb3)+exp(xb4)+exp(xb5)+exp(xb6)+exp(xb7)
mlogit.append pr1 = 1/denom
mlogit.append pr2 = exp(xb2)/denom
mlogit.append pr3 = exp(xb3)/denom
mlogit.append pr4 = exp(xb4)/denom
mlogit.append pr5 = exp(xb5)/denom
mlogit.append pr6 = exp(xb6)/denom
mlogit.append pr7 = exp(xb7)/denom
' specify likelihood
mlogit.append logl1 = (1-dd2-dd3-dd4-dd5-dd6)*log(pr1)+dd2*log(pr2)+dd3*log(pr3)+dd4*log(pr4) +dd5*log(pr5)+dd6*log(pr6)+dd7*log(pr7)
' specify analytic derivatives
for!i = 2 to 7
mlogit.append @deriv b{!i}(1) grad{!i}1 b{!i}(2) grad{!i}2 b{!i}(3) grad{!i}3 b{!i}(4) grad{!i}4 b{!i}(5) grad{!i}5 b{!i}(6) grad{!i}6 b{!i}(7) grad{!i}7
mlogit.append grad{!i}1 = dd{!i}-pr{!i}
mlogit.append grad{!i}2 = grad{!i}1*x1
mlogit.append grad{!i}3 = grad{!i}1*x2
mlogit.append grad{!i}4 = grad{!i}1*x3
mlogit.append grad{!i}5 = grad{!i}1*x4
mlogit.append grad{!i}6 = grad{!i}1*x5
mlogit.append grad{!i}7 = grad{!i}1*x6
next
' get starting values from binomial logit
equation eq2.binary(d=l) dd2 c x1 x2 x3 x4 x5 x6
b2 = eq2.@coefs
equation eq3.binary(d=l) dd3 c x1 x2 x3 x4 x5 x6
b3 = eq3.@coefs
equation eq4.binary(d=l) dd4 c x1 x2 x3 x4 x5 x6
b4 = eq4.@coefs
equation eq5.binary(d=l) dd5 c x1 x2 x3 x4 x5 x6
b5 = eq5.@coefs
equation eq6.binary(d=l) dd6 c x1 x2 x3 x4 x5 x6
b6 = eq6.@coefs
equation eq7.binary(d=l) dd7 c x1 x2 x3 x4 x5 x6
b7 = eq7.@coefs
I am trying to adapt the example MLR in the help guide but keep getting errors.
Basically, I will have 7 categories of dependant variable (1-7), and 5 regressors (2 of which are dummy variables). However, when I try to run the below code I get the error message "B7 is not defined or is an illegal command".
I think I may be getting things very mixed up here!
Any help would be apprciated. Thanks
' declare parameter vector
coef (7) b2
coef (7) b3
coef (7) b4
coef (7) b5
coef (7) b6
coef (7) b7
mlogit.append xb2 = b2(1)+b2(2)*x1+b2(3)+b2(4)+b2(5)+b2(6)+b2(7)*x7
mlogit.append xb3 = b3(1)+b3(2)*x1+b3(3)+b3(4)+b3(5)+b3(6)+b3(7)*x7
mlogit.append xb4 = b4(1)+b4(2)*x1+b4(3)+b4(4)+b4(5)+b4(6)+b4(7)*x7
mlogit.append xb5 = b5(1)+b5(2)*x1+b5(3)+b5(4)+b5(5)+b5(6)+b5(7)*x7
mlogit.append xb6 = b6(1)+b6(2)*x1+b6(3)+b6(4)+b6(5)+b6(6)+b6(7)*x7
mlogit.append xb7 = b7(1)+b7(2)*x1+b7(3)+b7(4)+b7(5)+b7(6)+b7(7)*x7
' define prob for each choice
mlogit.append denom = 1+exp(xb2)+exp(xb3)+exp(xb4)+exp(xb5)+exp(xb6)+exp(xb7)
mlogit.append pr1 = 1/denom
mlogit.append pr2 = exp(xb2)/denom
mlogit.append pr3 = exp(xb3)/denom
mlogit.append pr4 = exp(xb4)/denom
mlogit.append pr5 = exp(xb5)/denom
mlogit.append pr6 = exp(xb6)/denom
mlogit.append pr7 = exp(xb7)/denom
' specify likelihood
mlogit.append logl1 = (1-dd2-dd3-dd4-dd5-dd6)*log(pr1)+dd2*log(pr2)+dd3*log(pr3)+dd4*log(pr4) +dd5*log(pr5)+dd6*log(pr6)+dd7*log(pr7)
' specify analytic derivatives
for!i = 2 to 7
mlogit.append @deriv b{!i}(1) grad{!i}1 b{!i}(2) grad{!i}2 b{!i}(3) grad{!i}3 b{!i}(4) grad{!i}4 b{!i}(5) grad{!i}5 b{!i}(6) grad{!i}6 b{!i}(7) grad{!i}7
mlogit.append grad{!i}1 = dd{!i}-pr{!i}
mlogit.append grad{!i}2 = grad{!i}1*x1
mlogit.append grad{!i}3 = grad{!i}1*x2
mlogit.append grad{!i}4 = grad{!i}1*x3
mlogit.append grad{!i}5 = grad{!i}1*x4
mlogit.append grad{!i}6 = grad{!i}1*x5
mlogit.append grad{!i}7 = grad{!i}1*x6
next
' get starting values from binomial logit
equation eq2.binary(d=l) dd2 c x1 x2 x3 x4 x5 x6
b2 = eq2.@coefs
equation eq3.binary(d=l) dd3 c x1 x2 x3 x4 x5 x6
b3 = eq3.@coefs
equation eq4.binary(d=l) dd4 c x1 x2 x3 x4 x5 x6
b4 = eq4.@coefs
equation eq5.binary(d=l) dd5 c x1 x2 x3 x4 x5 x6
b5 = eq5.@coefs
equation eq6.binary(d=l) dd6 c x1 x2 x3 x4 x5 x6
b6 = eq6.@coefs
equation eq7.binary(d=l) dd7 c x1 x2 x3 x4 x5 x6
b7 = eq7.@coefs