Gofstat проблема с подходящим списком - PullRequest
1 голос
/ 24 марта 2020

Я получаю сообщение об ошибке при выполнении функции gofstat () R со списком fitdist. Я не понимаю значение этой ошибки и ее причины.

> gofstat(list(fitw, fitg, fitln), fitnames=c("weibull", "gamma", "lnorm"))
Error in names(Chi2$chisqpvalue) <- names(Chi2$chisqdf) <- fitnames[1] : 
  attempt to set an attribute on NULL

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

prob <- c(0.004926108, 0.510983890, 0.306590334, 0.048409000, 0.032272667, 0.005378778, 0.005378778, 0.037651445, 0.005378778, 0.037651445, 0.005378778)

fitw <- fitdist(prob, distr = "weibull", method = "mle")
fitg<- fitdist(prob, distr = "gamma", method = "mle")
fitln <- fitdist(prob, distr = "lnorm", method = "mle")
gofstat(list(fitw, fitg, fitln), fitnames=c("weibull", "gamma", "lnorm"))

У меня странная сторона в том, что gofstat работает индивидуально:

> gofstat(fitw)
Goodness-of-fit statistics
                             1-mle-weibull
Kolmogorov-Smirnov statistic     0.2354052
Cramer-von Mises statistic       0.1426774
Anderson-Darling statistic       0.8750089

Goodness-of-fit criteria
                               1-mle-weibull
Akaike's Information Criterion     -33.74893
Bayesian Information Criterion     -32.95314
> gofstat(fitg)
Goodness-of-fit statistics
                             1-mle-gamma
Kolmogorov-Smirnov statistic   0.2760907
Cramer-von Mises statistic     0.1983721
Anderson-Darling statistic     1.1044287

Goodness-of-fit criteria
                               1-mle-gamma
Akaike's Information Criterion   -32.26493
Bayesian Information Criterion   -31.46914
> gofstat(fitln)
Goodness-of-fit statistics
                             1-mle-lnorm
Kolmogorov-Smirnov statistic   0.2781579
Cramer-von Mises statistic     0.1279150
Anderson-Darling statistic     0.8426833

Goodness-of-fit criteria
                               1-mle-lnorm
Akaike's Information Criterion   -36.57233
Bayesian Information Criterion   -35.77654

Кстати, какой дистрибутив, по вашему мнению, подходит лучше?

1 Ответ

0 голосов
/ 24 марта 2020

Ошибка возникает из-за проблем с определением разрывов chisq. Если вы посмотрите на приведенный вами пример, то на 0,005378778 возникнет неожиданный всплеск, который делает его весьма проблематичным c, особенно когда n мало:

table(prob)
prob
0.004926108 0.005378778 0.032272667 0.037651445    0.048409 0.306590334 
          1           4           1           2           1           1 
 0.51098389 
          1

Вы можете попробовать что-то похожее на приведенное ниже, но, поскольку вы, скорее всего, сосредоточены на mle, все должно быть в порядке:

library(fitdistrplus)

fits = lapply(fitnames,function(i){
fitdist(prob, distr = i, method = "mle")
})

 gofstat(fits,chisqbreaks=c(0,0.01,0.1,0.6))

Goodness-of-fit statistics
                             1-mle-weibull 2-mle-gamma 3-mle-lnorm
Kolmogorov-Smirnov statistic     0.2354052   0.2760907   0.2781579
Cramer-von Mises statistic       0.1426774   0.1983721   0.1279150
Anderson-Darling statistic       0.8750089   1.1044287   0.8426833

Goodness-of-fit criteria
                               1-mle-weibull 2-mle-gamma 3-mle-lnorm
Akaike's Information Criterion     -33.74893   -32.26493   -36.57233
Bayesian Information Criterion     -32.95314   -31.46914   -35.77654

Опять же, ваши наблюдения ограничены, поэтому оценка численности будет сложной , Ваш второй вопрос о том, какой дистрибутив лучше, очень сложно сказать, потому что n мало, 4 повторных значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...