全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3473 3
2013-10-08

有个问题想咨询一下大牛,我现在有一个模型有13个参数需要估计,其中有一个参数是非负的(密度函数决定了该参数的非负性),我原以为将该参数的先验分布设为一个非负数的分布,比如对数正态分布就可以了,但是貌似不行。这是我的R代码(基于MCMC)(其余12个参数的先验分布为均值为0,标准差为2的正态分布):

##一共有13参数需要估计,我想用logistic回归的参数估计值作为其中12个未知参数的初始值
out<-glm(y ~ LOAN+YOJ+ DEROG+ DELINQ+ NINQ+ CLNO+Mgr+ Office+ Other+ ProfExe+Sales,data = data,family=binomial(),x=T)

x <- out$x
y <- out$y

##beta是一个13维的向量,beta[1]就是第13个未知参数,就是这个参数不能为负数,我将这个参数的
##先验分布设为对数正态分布(均值为1,标准差为2)
lupost <- function(beta, x, y) {

eta <- as.numeric(x %*% beta[2:13])
theta <- pnorm(eta)^beta[1]
logl<-sum(log(dbinom(y,1,theta)))
return(logl - sum(beta[2:13]^2)/8-log(beta[1])-((log(beta[1])-1)^2)/8)
}

set.seed(42)
#将beta[1]的初始值设为1,其余参数的初始值就是logistic回归估计的值
beta.init <- c(1,as.numeric(coefficients(out)))

out <- metrop(lupost,beta.init, 1000, x = x, y = y)
但是这样子貌似不行,给出错误提示:
Error in system.time(out <- .Call("metrop", func1, initial, nbatch, blen, :
logh: func returned NA or NaN
In addition: Warning messages:
1: In log(beta[1]) : NaNs produced
2: In log(beta[1]) : NaNs produced
有哪位大牛知道,这种参数有非负约束的贝叶斯估计该怎么办?

二维码

扫码加我 拉你入群

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

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

全部回复
2013-10-8 23:18:16
清楓 发表于 2013-10-8 22:48
支持楼主!顶一个!
呵呵,谢谢
二维码

扫码加我 拉你入群

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

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

2016-3-15 13:15:41
请问是用什么软件做的呀
二维码

扫码加我 拉你入群

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

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

2020-12-29 17:09:20
请问你这给问题最后解决了吗?我也遇到了相似的问题,想请教一下啊,谢谢!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群