楼主: jqsn89
10658 8

[问答] 普通极大似然估计、BIC准则、变量选择 [推广有奖]

  • 3关注
  • 1粉丝

讲师

27%

还不是VIP/贵宾

-

威望
0
论坛币
93 个
通用积分
5.3850
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
347 点
帖子
168
精华
0
在线时间
525 小时
注册时间
2011-4-30
最后登录
2024-4-17

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我使用两种方法对简单线性模型进行拟合,一个是普通极大似然估计,另一个是使用BIC准则进行惩罚的惩罚似然估计。但是我模拟时发现两种方法的结果是一样的?难道是BIC部分的代码有错误,没起到惩罚作用?
求助!!!!!!!!!!!!

rm(list=ls()) #定义
set.seed(1234)
suijishu=runif(10000,-2,2)
zhu=matrix(suijishu,1000,10)
x0=zhu[,1:4]
x=zhu[,1:10]
ep=matrix(rnorm(1000),1000,1)
beta0=matrix(c(1,2,3,4),4,1)
y=x0%*%beta0+ep
y<-scale(y,scale=FALSE)
x<-scale(x,scale=FALSE)

SB0=function(beta) #普通极大似然估计
{tt<-y-x%*%beta
s<-t(tt)%*%tt
return (s)}
stL0<-nlm(SB0,c(rep(1,10)))$estimate
stL0

SB1<-function(beta) #BIC惩罚  为什么普通极大似然估计的估计值和BIC的一样?惩罚没起作用?
{tt1<-y-x%*%beta
df<-sum(abs(beta)>0.0001)
s<-t(tt1)%*%tt1+log(dim(x)[1])*df
return (s)}
stL<-nlm(SB1,c(rep(1,10)))$estimate
stL
二维码

扫码加我 拉你入群

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

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

关键词:极大似然估计 似然估计 极大似然 变量选择 BIC matrix 模型

沙发
jqsn89 发表于 2014-11-1 11:36:55 |只看作者 |坛友微信交流群
此处不考虑可引用包 因为我需要推广到其他函数。

求BIC函数的R代码

使用道具

藤椅
楚韵荆风 学生认证  发表于 2014-11-4 19:55:16 |只看作者 |坛友微信交流群
Carefully check the definition of BIC function!

使用道具

板凳
jqsn89 发表于 2014-11-4 23:31:36 |只看作者 |坛友微信交流群
楚韵荆风 发表于 2014-11-4 19:55
Carefully check the definition of BIC function!
之前这个问题已经解决,不过现在有个新问题:
惩罚函数需用到lambda值,我采用lambda<-seq(0,10,0.01),然后对每个lambda采用惩罚自适应LASSO估计,得出估计值beta。然后采用BIC准则算出每个估计beta值的的BIC值。最小的BIC值即为挑选出的最终估计。这个逻辑应该没错吧。每次得出这个最终估计需要运行一定的时间。测试100次或者1000次更加需要时间。请问有没有简便一点的方法??

使用道具

报纸
jqsn89 发表于 2014-11-4 23:32:13 |只看作者 |坛友微信交流群
楚韵荆风 发表于 2014-11-4 19:55
Carefully check the definition of BIC function!
之前这个问题已经解决,不过现在有个新问题:
惩罚函数需用到lambda值,我采用lambda<-seq(0,10,0.01),然后对每个lambda采用惩罚自适应LASSO估计,得出估计值beta。然后采用BIC准则算出每个估计beta值的的BIC值。最小的BIC值即为挑选出的最终估计。这个逻辑应该没错吧。每次得出这个最终估计需要运行一定的时间。测试100次或者1000次更加需要时间。请问有没有简便一点的方法??

使用道具

地板
jqsn89 发表于 2014-11-4 23:32:13 |只看作者 |坛友微信交流群
楚韵荆风 发表于 2014-11-4 19:55
Carefully check the definition of BIC function!
之前这个问题已经解决,不过现在有个新问题:
惩罚函数需用到lambda值,我采用lambda<-seq(0,10,0.01),然后对每个lambda采用惩罚自适应LASSO估计,得出估计值beta。然后采用BIC准则算出每个估计beta值的的BIC值。最小的BIC值即为挑选出的最终估计。这个逻辑应该没错吧。每次得出这个最终估计需要运行一定的时间。测试100次或者1000次更加需要时间。请问有没有简便一点的方法??

使用道具

7
jqsn89 发表于 2014-11-4 23:32:15 |只看作者 |坛友微信交流群
楚韵荆风 发表于 2014-11-4 19:55
Carefully check the definition of BIC function!
之前这个问题已经解决,不过现在有个新问题:
惩罚函数需用到lambda值,我采用lambda<-seq(0,10,0.01),然后对每个lambda采用惩罚自适应LASSO估计,得出估计值beta。然后采用BIC准则算出每个估计beta值的的BIC值。最小的BIC值即为挑选出的最终估计。这个逻辑应该没错吧。每次得出这个最终估计需要运行一定的时间。测试100次或者1000次更加需要时间。请问有没有简便一点的方法??

使用道具

8
楚韵荆风 学生认证  发表于 2014-11-5 10:57:28 |只看作者 |坛友微信交流群
Suggest you to select lambda from your theoretical result. Roughly speaking, randomly setting a candidate set for lambda would be time consuming and may not be useful in reality. This is the case especially when you try different simulation models.  

使用道具

9
jqsn89 发表于 2014-11-5 19:26:02 |只看作者 |坛友微信交流群
楚韵荆风 发表于 2014-11-5 10:57
Suggest you to select lambda from your theoretical result. Roughly speaking, randomly setting a cand ...
能详细点说吗?现在卡在求最优的lambda上

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 02:15