Determinazione automatica della distribuzione di probabilità in base a un set di dati


12

Dato un set di dati:

x <- c(4.9958942,5.9730174,9.8642732,11.5609671,10.1178216,6.6279774,9.2441754,9.9419299,13.4710469,6.0601435,8.2095239,7.9456672,12.7039825,7.4197810,9.5928275,8.2267352,2.8314614,11.5653497,6.0828073,11.3926117,10.5403929,14.9751607,11.7647580,8.2867261,10.0291522,7.7132033,6.3337642,14.6066222,11.3436587,11.2717791,10.8818323,8.0320657,6.7354041,9.1871676,13.4381778,7.4353197,8.9210043,10.2010750,11.9442048,11.0081195,4.3369520,13.2562675,15.9945674,8.7528248,14.4948086,14.3577443,6.7438382,9.1434984,15.4599419,13.1424011,7.0481925,7.4823108,10.5743730,6.4166006,11.8225244,8.9388744,10.3698150,10.3965596,13.5226492,16.0069239,6.1139247,11.0838351,9.1659242,7.9896031,10.7282936,14.2666492,13.6478802,10.6248561,15.3834373,11.5096033,14.5806570,10.7648690,5.3407430,7.7535042,7.1942866,9.8867927,12.7413156,10.8127809,8.1726772,8.3965665)

.. Vorrei determinare la distribuzione di probabilità più adatta (gamma, beta, normale, esponenziale, poisson, chi-quadrato, ecc.) Con una stima dei parametri. Sono già a conoscenza della domanda sul seguente link, in cui viene fornita una soluzione utilizzando R: /programming/2661402/given-a-set-of-random-numbers-drawn-from-a- distribuzione-univariata-continua-f la migliore soluzione proposta è la seguente:

> library(MASS)
> fitdistr(x, 't')$loglik                                                              #$
> fitdistr(x, 'normal')$loglik                                                         #$
> fitdistr(x, 'logistic')$loglik                                                       #$
> fitdistr(x, 'weibull')$loglik                                                        #$
> fitdistr(x, 'gamma')$loglik                                                          #$
> fitdistr(x, 'lognormal')$loglik                                                      #$
> fitdistr(x, 'exponential')$loglik                                                    #$

E viene selezionata la distribuzione con il valore loglik più piccolo. Tuttavia, altre distruzioni come la distribuzione beta richiedono la specifica di alcuni parametri addizionali nella funzione fitdistr ():

   fitdistr(x, 'beta', list(shape1 = some value, shape2= some value)).

Dato che sto cercando di determinare la migliore distribuzione senza alcuna informazione preliminare, non so quale possa essere il valore dei parametri per ogni distribuzione. Esiste un'altra soluzione che tiene conto di questo requisito? non deve essere in R.

Risposte:


18

Cosa fai riguardo all'infinito di distribuzioni che non sono nella lista?

Cosa fai quando nessuno di quelli nella tua lista si adatta adeguatamente? ad es. se la tua distribuzione è fortemente bimodale

Come hai intenzione di affrontare il fatto che l'esponenziale è solo un caso speciale della gamma, e come tale, la gamma deve sempre adattarsi meglio a qualsiasi set di dati, poiché ha un parametro aggiuntivo, e quindi deve avere una migliore probabilità ?

Come gestite il fatto che la probabilità è definita solo fino a una costante moltiplicativa e che la probabilità per diverse distribuzioni potrebbe non essere automaticamente comparabile se non definita in modo coerente?

Non è che questi siano necessariamente insolubili, ma fare queste cose in modo sensato non è banale; certamente è necessario più pensiero che limitarsi a far saltare tutto attraverso il calcolo di un MLE e il confronto delle probabilità.


3
Mi occupo solo delle distribuzioni nell'elenco, e se nessuna delle distribuzioni si adatta, quindi affronterò il problema in seguito. ma per ora raggiungere quel punto è abbastanza buono per me. Per quanto riguarda l'ultima domanda relativa alla distribuzione gamma, sì, può adattarsi meglio con alcuni parametri, la mia domanda riguarda esattamente questo, esiste un algoritmo che mi permette di scorrere diversi valori dei parametri per le diverse distribuzioni nell'elenco? e restituire la distribuzione più adatta con i parametri appropriati?

1
Bene, sì e no. Puoi trovare una "figura di merito" per calcolare quale set di parametri ti offre la soluzione migliore e scrivere un ciclo di "salita" per ottimizzare il valore della figura di merito. Un esempio di FOM è il valore R per gli adattamenti di regressione.
Carl Witthoft,

mi iscrivo a questo +1.

4
@shachem Hai perso il punto sulla gamma. Le distribuzioni con parametri aggiuntivi avranno sempre una maggiore probabilità, anche quando i dati provengono dalla distribuzione con meno parametri . Devi considerare questo. Alcune misure di adattamento si adattano a questo effetto. Ad essere sincero, penso che la cosa che stai cercando di fare sia probabilmente "rispondere alla domanda sbagliata", un po 'come chiedere "come faccio a capire quale di questi martelli è il migliore per battere in questa vite"
Glen_b -Reinstate Monica,

1
Se "la probabilità è definita solo fino a una costante moltiplicativa", Glen, allora come si può dare un senso alla tua affermazione che "le distribuzioni con parametri aggiuntivi avranno sempre una probabilità migliore"? In effetti, come è possibile confrontare le probabilità che sono così mal definite? Sospetto che qualche idea chiave sia stata lasciata non dichiarata ...
whuber

3

Ho trovato una funzione che risponde alla mia domanda usando matlab. È disponibile su questo link: http://www.mathworks.com/matlabcentral/fileexchange/34943

Prendo un vettore di dati come input

   allfitdist(data)

e restituisce le seguenti informazioni per la migliore distribuzione adatta:

   DistName- the name of the distribution
   NLogL - Negative of the log likelihood
   BIC - Bayesian information criterion (default)
   AIC - Akaike information criterion
   AICc - AIC with a correction for finite sample sizes 
   ParamNames
   ParamDescription
   Params
   etc.

1
OK, ora tutto ciò che devi fare è trasferire il file m in un file R. :-)
Carl Witthoft,

Nemmeno! Come ho già detto, non è necessario essere un file R, quindi la funzione matlab risolve completamente il mio problema :-)

AIC, BIC, AICc, ecc. Possono essere un modo per decidere, ma se questo ha davvero senso dipende da cosa stai cercando di fare. Ad esempio, cosa fai se una distribuzione è molto vicina alle altre in termini di log L? Se quello che stai cercando di fare è prevedere, di solito ignorare i modelli vicini in termini di criterio non deve essere semplicemente scartato. Ad esempio, la media dei modelli è un modo per tenerne conto.
Björn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.