楼主: jqsn89
11358 8

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

  • 3关注
  • 1粉丝

已卖:87份资源

讲师

33%

还不是VIP/贵宾

-

威望
0
论坛币
19 个
通用积分
2.8351
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
321 点
帖子
169
精华
0
在线时间
549 小时
注册时间
2011-4-30
最后登录
2025-10-7

楼主
jqsn89 发表于 2014-11-1 11:20:46 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-29 17:58