Не ясно, что вы пытаетесь сделать здесь. Вызов shape
позволяет увидеть, как изменение параметров threshold
или nextremes
в функции gpd
изменит параметр xi
результирующей обобщенной модели распределения Парето.
Есть несколько причин, по которым приведенный вами пример не работает. Давайте сначала покажем пример того, что работает . Экспоненциальное распределение является частным случаем GPD с mu = 0 и xi = 0, поэтому выборка, взятая из экспоненциального распределения, должна помочь:
library(evir) # For the shape() function
set.seed(69) # Makes this example reproducible
x <- rexp(300) # Random sample of 300 elements drawn from exponential distribution
shape(x)
Хорошо.
Однако ваш образец содержит NA. Что произойдет, если мы сделаем одно значение NA
в нашем примере?
x[1] <- NA
shape(x)
#> Error in optim(theta, negloglik, hessian = TRUE, ..., tmp = excess) :
#> non-finite value supplied by optim
Итак, NAs
не допускается.
К сожалению, вы обнаружите, что по-прежнему получаете ту же ошибку, если вы удалите значение NA. Для этого есть две причины. Во-первых, у вас есть 9 не-NA образцов. Что произойдет, если мы попробуем экспоненциальный образец длины-9?
shape(rexp(9))
#> Error in optim(theta, negloglik, hessian = TRUE, ..., tmp = excess) :
#> non-finite finite-difference value [1]
Мы обнаружим, что модель не сможет соответствовать менее чем с 16 точками данных.
Но это не единственное проблема. Что, если мы попытаемся получить график для данных, которые нельзя извлечь из обобщенного распределения Парето?
# Maybe a uniform distribution?
shape(runif(300, 1, 10))
#> Error in optim(theta, negloglik, hessian = TRUE, ..., tmp = excess) :
#> non-finite finite-difference value [1]
#> In addition: Warning message:
#> In sqrt(diag(varcov)) : NaNs produced
#>
Таким образом, вам нужна большая выборка без NA, и она должна приблизительно соответствовать в GPD, иначе функция gpd
выдаст ошибку.
Я мог бы помочь, если вы дадите нам более полную картину того, что вы пытаетесь сделать.