首页 > 解决方案 > 使用 R 进行 GPD 分布的最大间距乘积

问题描述

我想估计广义帕累托分布的参数。该location参数是已知的,因此我必须估计ScaleShape参数。我点击了这个链接:Maximum Product of Spacings using R。方程如下。

Sn = (1/(n + 1))*(log D[i] 从 i = 1 到 n + 1 的总和),其中 D[i] = F(x[i]) - F(x[i - 1])

我根据上面的链接修改了 GPD 的代码。

fnn <- function(para, x){
  n <- length(x)
  c <- numeric(n - 1)
  d <- numeric(n - 1)
  for (i in 2:n){
    c[i - 1] <- pgpd(x[i], loc = 0, scale = para[1], shape = para[2]) 
    d[i - 1] <- pgpd(x[i-1], loc = 0, scale = para[1], shape = para[2]) 
  }
  s <- (1/(n + 1))*sum(log(c - d))
  return(-s)
}


set.seed(1234)
n = 15
mydata <- rgpd(n, loc = 0, scale = 1, shape = 2)
x <- sort(mydata)
opt2 <- optim(c(0,0), fnn, x = x)

但我收到以下错误。 Error in pgpd(x[i], loc = 0, scale = para[1], shape = para[2]) : invalid scale parameter 是因为初步估计吗?谢谢。

标签: rparametersmathematical-optimizationdistributionestimation

解决方案


推荐阅读