我使用两种方法对简单线性模型进行拟合,一个是普通极大似然估计,另一个是使用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