MLE не в оценке параметров экстремальных значений - PullRequest
0 голосов
/ 14 апреля 2020

Я использую функцию fevd из пакета "extReme" в другом сценарии ios, и у меня возникает проблема только в одном случае, не зная, почему.

Я использую GEV, чтобы убедиться, что у меня есть данные Набор достаточно большой. В основном я записываю группы по 5 тысяч образцов и проверяю количество различных видов на нем. Таким образом, я получаю вектор, подобный следующему:

> myArray
 [1] 183 196 200 208 157 199 140 174 175 189 211 163 184 182 196 174 175 155 150 189 124 203 204 209 182 201 153 201 176 181 192 195 175 189 148 192

Я вычисляю fevd группы выборок, и если возвращаемое значение стабильно для большого числа групповых выборок, я могу утверждать, что мои данные- набор достаточно велик.

> fit_mle <- fevd(myArray, method = "MLE", type="GEV", units = "Nº of species", period.basis = "Groups")
> fit_mle

fevd(x = myArray, type = "GEV", method = "MLE", units = "Nº of species", 
    period.basis = "Groups")

[1] "Estimation Method used: MLE"


 Negative Log-Likelihood Value:  155.9335 


 Estimated parameters:
   location       scale       shape 
178.1574819  23.2389029  -0.6866022 

 Standard Error Estimates:
 location     scale     shape 
4.1741186 3.6120844 0.1242689 

 Estimated parameter covariance matrix.
           location     scale       shape
location 17.4232659 -6.651717 -0.19183875
scale    -6.6517175 13.047154 -0.28548299
shape    -0.1918387 -0.285483  0.01544275

 AIC = 317.8671 

 BIC = 322.6176 
> rl_mle <- return.level(fit_mle, do.ci = TRUE, return.period= c(100,200,500,1000), R = 1000)
> rl_mle
fevd(x = myArray, type = "GEV", method = "MLE", units = "Nº of species", 
    period.basis = "Groups")

[1] "Normal Approx."

                         95% lower CI Estimate 95% upper CI
100-Groups return level      207.9403 210.5656     213.1908
200-Groups return level      208.2902 211.1117     213.9333
500-Groups return level      208.4532 211.5287     214.6042
1000-Groups return level     208.4839 211.7087     214.9335

Как показывают результаты, оценка стабильна от 100 до 1000 групп. Это работает в разных случаях myArray. Однако у меня возникла проблема со следующей:

> myArray
 [1] 188 201 173 177 150 188 182 172 153 164 187 182 193 132 161 189 140 138 168 145 117 174 200 191 186 201 210 187 197 193 192 177 162 191 148
[36] 186
> fit_mle <- fevd(myArray, method = "MLE", type="GEV", units = "Nº of species", period.basis = "Groups")
> fit_mle

fevd(x = myArray, type = "GEV", method = "MLE", units = "Nº of species", 
    period.basis = "Groups")

[1] "Estimation Method used: MLE"


 Negative Log-Likelihood Value:  476.6086 


 Estimated parameters:
 location     scale     shape 
-384.0441 8759.6028  354.4498 

 AIC = 959.2173 

 BIC = 963.9678 
> rl_mle <- return.level(fit_mle, do.ci = TRUE, return.period= c(100,200,500,1000), R = 1000)
Error in get(paste("ci.", newcl, sep = ""))(x = x, alpha = alpha, type = type,  : 
  ci: Sorry, unable to calculate the parameter covariance matrix.  Maybe try a different method.

Я полагаю, что проблема заключается в отрицательной оценке местоположения. Но я не знаю, почему это происходит.

Кроме того, если вместо MLE я использую L-момент, он работает правильно. Но я не знаю, почему и если в этом примере правильно использовать L-момент.

> fit_lmoments <- fevd(myArray, method = "Lmoments", type="GEV", units = "Nº of species", period.basis = "Groups")
> fit_lmoments
fevd(x = myArray, type = "GEV", method = "Lmoments", units = "Nº of species", 
    period.basis = "Groups")
[1] "GEV  Fitted to  myArray  using L-moments estimation."
   location       scale       shape 
171.5461102  24.9970606  -0.6954125 

Должен ли я использовать L-момент? И оправданно ли это использовать?

...