我正在尝试对模拟的iid Poisson数据实施Fisher计分,但是却遇到了堆栈溢出错误。我从函数进行了一些简单的打印,发现猜测值在第一次迭代后没有改变。
fs_pois <- function(data, true, guess) {
if (abs(guess-true) < 0.01) return(guess)
else return(fs_pois(data, true, guess + (mean(data)*exp(-guess))-1))
}
data <- rpois(100,lambda=0.34)
fs_pois(data, 0.34, 0.36)
产生
Error: C stack usage 7970416 is too close to the limit
有人知道发生了什么吗?非常感激
谢谢你的建议。在考虑了收敛之后,我回头看了数学模型,发现我遗漏了对数,并且将收敛到真实参数值与收敛到ML估计值混淆了。我的修改代码如下:
fs_pois <- function(data, MLE, guess) {
cat(guess,"\n")
if (abs(guess-MLE) < 0.01) return(guess)
else return(fs_pois(data, MLE, guess + (mean(data)*exp(-guess))-1))
}
set.seed(111)
data <- rpois(25,lambda=2)
fs_pois(data, log(mean(data)), -1)
作为对任何阅读者的一般说明:这可能不是实现渔夫评分的方式。这只是为了在R中实践递归。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句