Я использую функцию 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-момент? И оправданно ли это использовать?