如果用stata做,看了一个贴子:
http://www.stata.com/support/faq ... terval-constraints/
说应该用nl命令。我们的问题类似于这个贴子里提到的example 6。
我的问题和你的不完全一样,但基本类似,我的是8个自变量,限制条件1要求每个系数大于0,其他都一样。
针对我自己的问题,我编辑了命令如下():
. local ma2 (exp({t2})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. local ma3 (exp({t3})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. local ma4 (exp({t4})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. local ma5 (exp({t5})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. local ma6 (exp({t6})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. local ma7 (exp({t7})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. local ma8 (exp({t8})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. local ma1 (1/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})+exp({t7})+exp({t8})))
. nl (y= `ma1'*x1 + `ma2'*x2 + `ma3'*x3 + `ma4'*x4 + `ma5'*x5 + `ma6'*x6 + `ma7'*x7 + `ma8'*x8 + {a9}), delta(1e-7) nolog
. local na2 exp(_b[t2:_cons])/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. local na3 exp(_b[t3:_cons])/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. local na4 exp(_b[t4:_cons])/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. local na5 exp(_b[t5:_cons])/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. local na6 exp(_b[t6:_cons])/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. local na7 exp(_b[t7:_cons])/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. local na8 exp(_b[t8:_cons])/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. local na1 1/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons])+exp(_b[t7:_cons])+exp(_b[t8:_cons]))
. nlcom (a1: `na1') (a2: `na2') (a3: `na3')(a4: `na4') (a5: `na5') (a6: `na6')(a7: `na7') (a8: `na8')
命令可以执行,但问题是回归结果表中Std. Err., t, p等出现很多类似缺失值的那些点,根本没有数值。
也许你可以看看是否哪里有问题,也可以在此基础上修改或完善一下。有了结果告诉我一下,谢谢