optim() 得到观察到的信息矩阵

时间:2021-05-18 18:15:22

标签: r

我试图通过使用模拟数据集在 r 中使用 optim() 函数优化惩罚对数似然函数,对于逻辑模型,当我运行代码时,它返回一个错误,即未找到对象 mypdf。 代码是 如下:

library(simstudy)
d1 <- defData(varname = "x1", formula = 0.35, dist = "binary")
d1 <- defData(d1, varname = "x2", formula = 0.5, dist = "binary")
d1 <- defData(d1, varname = "x3", formula = 0.3, dist = "binary")

d1 <- defData(d1,varname = "y", formula = "-2 + 0.5*x1 + 0.5*x2 + 1*x3", 
dist = "binary", link = "logit")

dd <- genData(100, d1)

x.tilde<-as.matrix(x)

wrapper = function(args){
mypdf(x.tilde=arg[1],
    y=arg[2], 
    beta=arg[3])

myfnc<- y*log(exp(x.tilde %*% beta))/(1+exp(x.tilde %*% beta))+
(1-y)*log(1-(exp(x.tilde %*% beta)/(1+exp(x.tilde %*% beta))))

prior<- (beta/2)-log(1+exp(beta))

fnc<- myfnc+prior

return(fnc)
}


 par<- c(0.3, 0.25, 1, 0.521)

 fit2 <-optim (par=par,fn=mypdf ,hessian=TRUE)

info.mat<- -(fit2$hessian)

info.mat <- as.matrix(info.mat)
print(info.mat)


Error in (function (par)  : object 'mypdf' not found



any help?

0 个答案:

没有答案