在 R 中估计帕累托类型 2 的参数

Estimating the parameters for a Pareto type 2 in R

提问人:Renata Dis 提问时间:10/1/2022 更新时间:10/1/2022 访问量:114

问:

我有一个从 0 到 1(百分比数据,包括 0)的连续变量,我想确定最佳分布来对其进行建模。我在 R-Studio 上,这里有数据问题。请注意,大约 27% 的观测值为 0,我确实计划在进行过程中探索零通货膨胀。

我检查了直方图和 ecdf(见下文)以了解我正在处理的内容。Fitdistrplus 给了我“beta”,而 gamlss 给了我一个帕累托 2 型,我不是很熟悉。

enter image description here enter image description here

我已经确定了 beta 分布的参数并拟合了它,使用 KS 测试了其他一些分布,但停留在帕累托类型 2 上。问题是:我所有估计位置和规模的尝试都失败了。据我所知,这是因为数据集中的零。如果我向整个数据集添加少量(即 0.0001),它就会起作用,但老实说,我不确定这是否是一个好的解决方案,并且会使将其与其他任何东西进行比较成为活生生的地狱。我尝试了 EnvStats、VGAM、CaDENCE,但都给了我错误。因此,我谦虚地来到这里,希望有人可以提出另一种选择来估计该数据集的帕累托类型 2 参数。

r 参数 分布 帕累托最优

评论


答:

1赞 Emmanuel Hamel 10/1/2022 #1

您可以考虑以下方法:

library(DEoptim)

df <- read.csv("percentData.csv")
data <- unlist(df)

log_Lik <- function(data, param)
{
  x <- data
  k <- param[1]
  s <- param[2]
  log_Lik <- sum(log(k/(s + x) * (s / (s + x)) ^ k)) 
  return(-log_Lik)
}

obj_Res <- DEoptim(fn = log_Lik, lower = c(0, 0), upper = c(1000, 1000), data = data, control = list(parallelType = 1))
obj_Res$optim$bestmem

评论

0赞 Renata Dis 10/3/2022
感谢您向我介绍 Deoptim 包!实时节省时间!
0赞 Emmanuel Hamel 10/3/2022
DEoptim 是一个非常强大的软件包,用于优化多变量函数。根据我的个人经验,它是我用过的最强大的优化算法。它之所以稳健,部分原因是它不是基于衍生品。