我试图通过使用模拟数据集在 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?