【发布时间】:2014-06-29 18:54:59
【问题描述】:
我正在尝试估计 Burr 分布的参数。这个过程应该很简单。我导出并编码了一个对数似然函数,并使用“maxLik”函数进行估计。
从错误消息中,我了解到log(n) 可能会获取 char 或 NaN 值,这就是返回错误的原因,但这并没有真正帮助。我检查了几次代码。它应该工作。如果我更改 loglik 函数(例如,我正在使用带有一个参数的拉普拉斯分布的 loglik),那么代码就可以工作。所以,我认为我定义 loglik 函数的方式有问题。
这是我正在使用的代码:
y = c(rep(Mean.Income,Number))
N=length(y)
logLik = function(m,n,k)
{
ll = N*(log(m)+log(n)+log(k)) - (k+1)*sum(log(1+m*y^n)) + (n-1)*sum(y)
return (ll)
}
estimate = maxLik(logLik,start=c(0.1, 0.1, 0.1), print.level=2, method="NR", grad=NULL, hess=NULL)
y - 收入数据。它由收入和获得该收入的家庭数量组成。可能是大数字的问题吗?我有大约 3000 个观察值,收入在 5,000-400,000 之间变化,出现次数(数字变量)从 4 到 8530 不等。
另外,我觉得log(1+m*y^n) 这部分可能有问题,因为y 是向量,m, n 是数字。
当我自己检查函数时,它可以工作。例如:
> logLik(1,5,0.1)
[1] 2560797466
我将非常感谢任何关于我做错了什么的提示。
【问题讨论】:
标签: r distribution