全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
867 0
2023-02-14
如题,
模型为:
y=b0+b1*x1+b2*x2+b3*x3+b4*x4+b5*x5+b6*x6
数据结构为:
stkcd    date    y    x1     x2    x3   x4   x5   x6   
1           1
1           2
……
1           100
2           1
2           2
……
2           100
希望能够进行窗口期为20天的滚动回归(在每一个stkcd内部分组回归),同时施加约束条件:b1+b2+b3+b4+b5+b6=1并且b1-b6均大于0(也就是说,b1-b6代表x1-x6在一个组合中的权重)。

我目前尝试了几种办法:
第一,
constraint def 1 b1+b2+b3+b4+b5+b6=1
rolling _b _se, window(20) stepsize(1): cnsreg y x1 x2 x3 x4 x5 x6, constraints(1 )
但是,不知道怎么约束b1-b6都为正值,而且这个回归的运行速度非常慢。


第二,

*设置约束条件
local ma6 (exp({t5})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})))
local ma5 (exp({t5})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})))
local ma4 (exp({t4})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})))
local ma3 (exp({t3})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})))
local ma2 (exp({t2})/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})))
local ma1 (1/(1+exp({t2})+exp({t3})+exp({t4})+exp({t5})+exp({t6})))


nl (y= `ma1'*x1+ `ma2'*x2+ `ma3'*x3+ `ma4'*x4+ `ma5'*x5+ `ma6'*x6+ {a7}) if  !missing, delta(1e-7)  ///
initial( `ma1' 1/6 `ma2' 1/6 `ma3' 1/6 `ma4' 1/6 `ma5' 1/6 `ma6' 1/6  )

但是程序报错了:"invalid parameter 1/6 in initial()" ,尝试了多个初始值都不对,不知道应该如何修改。

而且在将系数还原的时候,
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]))
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]))
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]))
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]))
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]))
local na1 1/(1+exp(_b[t2:_cons])+exp(_b[t3:_cons])+exp(_b[t4:_cons])+exp(_b[t5:_cons])+exp(_b[t6:_cons]))


nlcom (a1: `na1') (a2: `na2') (a3: `na3')(a4: `na4')(a5: `na5')(a6: `na6')
系统会提示迭代次数超过限制,也无法继续。

第三,用asreg和rangestat进行滚动回归,但是不知道怎么施加约束条件。

向各位群友们求助 ! 如果解决,可赠送论坛币,谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群