First, sorry for my english (I'm french).
I have a problem with the writing of a mlogit program. When the program is running, the error "dd2 is not define" appear. I don't no why, and I don't know if the program is write correctly.
I have 12 variables :
dependent variable : pa (7 states)
predictor varibales : ges (4 states), infce (3 states), formace (3 states), mo (6 states), eqbat (3 states), eqmat (5 states), stru (4 states), surf (5 states), capt (3 states), mort (4 states).
The program is :
Code: Select all
' Chargement de la base de données "bpm"
load "bpm"
' déclaration du vecteur des paramètres
coef (11) b2
coef (11) b3
coef (11) b4
coef (11) b5
coef (11) b6
coef (11) b7
logl mlogit
mlogit.append @logl logl1
mlogit.append xb2 = b2(1)+b2(2)*ges+b2(3)*infce+b2(4)*formace+b2(5)*mo+b2(6)*eqbat+b2(7)*eqmat+b2(8)*stru+b2(9)*surf+b2(10)*capt+b2(11)*mort
mlogit.append xb3 = b3(1)+b3(2)*ges+b3(3)*infce+b3(4)*formace+b3(5)*mo+b3(6)*eqbat+b3(7)*eqmat+b3(8)*stru+b3(9)*surf+b3(10)*capt+b3(11)*mort
mlogit.append xb4 = b4(1)+b4(2)*ges+b4(3)*infce+b4(4)*formace+b4(5)*mo+b4(6)*eqbat+b4(7)*eqmat+b4(8)*stru+b4(9)*surf+b4(10)*capt+b4(11)*mort
mlogit.append xb5 = b5(1)+b5(2)*ges+b5(3)*infce+b5(4)*formace+b5(5)*mo+b5(6)*eqbat+b5(7)*eqmat+b5(8)*stru+b5(9)*surf+b5(10)*capt+b5(11)*mort
mlogit.append xb6 = b6(1)+b6(2)*ges+b6(3)*infce+b6(4)*formace+b6(5)*mo+b6(6)*eqbat+b6(7)*eqmat+b6(8)*stru+b6(9)*surf+b6(10)*capt+b6(11)*mort
mlogit.append xb7 = b7(1)+b7(2)*ges+b7(3)*infce+b7(4)*formace+b7(5)*mo+b7(6)*eqbat+b7(7)*eqmat+b7(8)*stru+b7(9)*surf+b7(10)*capt+b7(11)*mort
mlogit.append denom = 1+exp(xb2)+exp(xb3)+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
mlogit.append logl1 = (1-dd2-dd3-dd4-dd5-dd6-dd7)*log(pr1)+dd2*log(pr2)+dd3*log(pr3)+dd4*log(pr4)+dd5*log(pr5)+dd6*log(pr6)+dd7*log(pr7)
' Dérivées analytiques
for !i=2 to 7
mlogit.append @deriv b!i(1) grad !i1 b!i(2) grad !i2 b!i(3) grad !i3 b!i(4) grad !i4 b!i(5) grad !i5 b!i(6) grad !i6 b!i(7) grad !i7 b!i(8) grad !i8 b!i(9) grad !i9 b!i(10) grad !i10 b!i(11) grad !i11
mlogit.append grad !i1 = dd!i-pr!i
mlogit.append grad !i2 = grad !i1*ges
mlogit.append grad !i3 = grad !i1*infce
mlogit.append grad !i4 = grad !i1*formace
mlogit.append grad !i5 = grad !i1*mo
mlogit.append grad !i6 = grad !i1*eqbat
mlogit.append grad !i7 = grad !i1*eqmat
mlogit.append grad !i8 = grad !i1*stru
mlogit.append grad !i9 = grad !i1*surf
mlogit.append grad !i10 = grad !i1*capt
mlogit.append grad !i11 = grad !i1*mort
next
' Calculer les valeurs initiales à partir de Logit Binomiaux
equation eq2.binary(d=1) dd2 c ges infce formace mo eqbat eqmat stru surf capt mort
b2 = eq2.@coefs
equation eq3.binary(d=1) dd3 c ges infce formace mo eqbat eqmat stru surf capt mort
b3 = eq3.@coefs
equation eq4.binary(d=1) dd4 c ges infce formace mo eqbat eqmat stru surf capt mort
b4 = eq4.@coefs
equation eq5.binary(d=1) dd5 c ges infce formace mo eqbat eqmat stru surf capt mort
b5 = eq5.@coefs
equation eq6.binary(d=1) dd6 c ges infce formace mo eqbat eqmat stru surf capt mort
b6 = eq6.@coefs
equation eq2.binary(d=1) dd7 c ges infce formace mo eqbat eqmat stru surf capt mort
b7 = eq7.@coefs
' Estimation Max. de Vraissemblance et affichage résultats
mlogit.ml(d)
show mlogit.output
Is anybody can help me ? I'm inexperienced in programation and i found this program in a book.
Thanks