如果您希望将对数逻辑分布拟合到数据中,这样做相当简单。在下面的示例中,我使用该函数dllog来获取给定的一组形状和比例参数值的对数逻辑密度,但自己编写 PDF 代码也没有问题。
(对数-)似然和 MLE
对数逻辑分布的随机变量的密度具有概率密度函数 [PDF]:
f(Xi;α,β)=(βα)(Xiα)β−1(1+(Xiα)β)2
在哪里α和β分别是尺度和形状参数。
对于给定的数据样本X1,…,XN,这意味着样本的对数似然为:
ℓN(α,β∣X1,…,XN)=∑i=1Nlogf(Xi;α,β)
给定数据样本的参数的 MLE 由对数似然的最大化器给出:
α^MLE,β^MLE=argmaxα,βℓN(α,β∣X1,…,XN)
计算和优化对数似然
在下面的代码中:
0. 我使用该函数rllog从具有参数的对数逻辑分布中生成随机样本c(5, 6)。
1. 该函数fnLLLL计算数据的(负)对数似然。
2. 该函数fnLLLL使用包中的函数dllog来FAdist计算对数逻辑分布的 PDF 。
3.计算使负对数似然最小化的和的值,这些值是优化器的初始值。这些优化值是和f
optimαβc(2, 3)5.1327585.654340, 负对数似然函数的优化值为。9239.179
# simulate some log-logistic data
library(FAdist)
vY = rllog(n = 1000, shape = 5, scale = 6)
# log-likelihood function
fnLLLL = function(vParams, vData) {
# uses the density function of the log-logistic function from FAdist
return(-sum(log(dllog(vData, shape = vParams[1], scale = vParams[2]))))
}
# optimize it
optim(c(2, 3), fnLLLL, vData = vY)
这给出了:
> optim(c(2, 3), fnLLLL, vData = vY)
$par
[1] 5.132758 5.654340
$value
[1] 9239.179
$counts
function gradient
57 NA
$convergence
[1] 0
$message
NULL