全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件
4164 3
2019-01-03
我用Python按照:https://ask.hellobi.com/blog/datasciencemeditation/7540,http://www.doc88.com/p-2089722981617.html。这两个链接实现门槛回归(没办法,没看到Python有什么库提供门槛回归方法),由于第2个链接里的论文根本没提到SCAD惩罚函数的样子,我就去搜索到了第一个链接。总而言之,现在我的确跑出来结果了,但是门槛值 c 的估计值竟然比实际存在的门槛变量的取值还大好多倍,这肯定不正确。。。
所以我怀疑是不是我对SCAD惩罚函数的理解有错误,总之我今天又谷歌,搜索到了http://vlambda.com/wz_wRtUGSimSJ.html。这篇文章,里面的SCAD惩罚函数又和第一个链接看到的不一样,我已经迷糊了

我的意思是,现在我搞不清楚SCAD是不是函数表达式弄错了,但不论是否弄错,我发现我不能理解SCAD如何把参数估计为0。参数估计为0就会将某段的回归全部系数估计为0,从而能直接告知这个分段不需要,这是第二个链接论文告诉我的。。。但反正,现在门槛 c 值就不对。。。门槛自变量的数据最大也才1W出头,而估计出的C竟然数倍于它们
以下是代码,其中pay_data_x为189*9的矩阵自变量数据,pay_data_y为因变量。M_c是分段,这里分了2段,先分别用pay_data_x的第2列数据的标准差和均值做分段门槛值的初始值(即第2列数据为门槛变量)
另外就是,是否有可能我对门槛值c的求导有错误??

复制代码
分3段,故有9*3=27个参数,可以看到第2和第3段参数估计一模一样

[[ 2.21651758e+02  1.24799988e+04  1.24799988e+04]

[-2.70472227e-02  1.26663922e+08  1.26663922e+08]

[ 2.84548849e-02  3.16436052e+07  3.16436052e+07]

[ 3.82476892e-02  3.05133523e+07  3.05133523e+07]

[ 1.13002044e-02  2.92317240e+07  2.92317240e+07]

[ 8.44805488e-02  3.13574382e+07  3.13574382e+07]

[-1.01630661e-01  2.93887077e+07  2.93887077e+07]

[ 3.42105205e-02  3.08086230e+07  3.08086230e+07]

[ 7.84099476e+00  2.79222208e+07  2.79222208e+07]]

门槛值c:[[ 26632.39914284], [113303.41470849]]
二维码

扫码加我 拉你入群

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

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

全部回复
2019-2-17 18:27:08
我最近也在看这个方法。不想调程序,想自己编一个。你现在搞明白了吗?
二维码

扫码加我 拉你入群

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

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

2020-4-1 13:23:12
阿卜拉克萨斯 发表于 2019-1-3 10:49
我用Python按照:https://ask.hellobi.com/blog/datasciencemeditation/7540,http://www.doc88.com/p-2089 ...
楼主看范老师的原文吧  原文里面写的挺清楚的   2001年的JASA
二维码

扫码加我 拉你入群

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

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

2021-3-18 15:42:43
画一下惩罚函数导数的图像,可以看到在小于lam那一段是赋予大的权重,这样就能达到收缩系数了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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