假设有以下数据:
8232302 684531 116857 89724 82267 75988 63871
23718 1696 436 439 248 235
想要一种简单的方法来将此(以及其他几个数据集)拟合到帕累托分布。理想情况下,它将输出匹配的理论值,不太理想的是参数。
假设有以下数据:
8232302 684531 116857 89724 82267 75988 63871
23718 1696 436 439 248 235
想要一种简单的方法来将此(以及其他几个数据集)拟合到帕累托分布。理想情况下,它将输出匹配的理论值,不太理想的是参数。
好吧,如果你有一个来自帕累托分布和(其中是下界参数,而是形状参数),那么它的对数似然样本是:
这是的单调递增,因此最大化器是与观察到的数据一致的最大值。由于参数定义了帕累托分布的支持下限,因此最优值为
这不依赖于。接下来,使用普通的微积分技巧,的 MLE必须满足
一些简单的代数告诉我们的 MLE是
在许多重要的意义上(例如最佳渐近效率,因为它达到了 Cramer-Rao 下界),这是将数据拟合到帕累托分布的最佳方法。下面的 R 代码计算给定数据集的 MLE X
。
pareto.MLE <- function(X)
{
n <- length(X)
m <- min(X)
a <- n/sum(log(X)-log(m))
return( c(m,a) )
}
# example.
library(VGAM)
set.seed(1)
z = rpareto(1000, 1, 5)
pareto.MLE(z)
[1] 1.000014 5.065213
编辑:根据@cardinal 和我下面的评论,我们还可以注意到是的样本平均值的倒数,这恰好发生在呈指数分布。因此,如果我们可以访问可以拟合指数分布的软件(这更有可能,因为它似乎出现在许多统计问题中),那么可以通过以这种方式转换数据集并对其进行拟合来完成对 Pareto 分布的拟合到变换尺度上的指数分布。
您可以使用包中fitdist
提供的功能fitdistrplus
:
library(MASS)
library(fitdistrplus)
library(actuar)
# suppose data is in dataPar list
fp <- fitdist(dataPar, "pareto", start=list(shape = 1, scale = 500))
#the mle parameters will be stored in fp$estimate