Come verificare se i miei dati si adattano alla normale distribuzione del registro?


Risposte:


6

... Ho appena notato che hai il tag "regressione" lì. Se hai un problema di regressione, non puoi guardare la distribuzione univariata della risposta per valutare la forma distributiva, poiché dipende dal modello delle x. Se stai chiedendo di verificare se una variabile di risposta (y) in un qualche tipo di regressione o GLM ha una distribuzione lognormale o di Pareto in cui i mezzi differiscono attraverso l'osservazione, questa è una domanda molto diversa (ma fondamentalmente si riduce a analoghi tipi di analisi sui residui). Potete per favore chiarire se si tratta di un problema di regressione. La mia risposta, al momento, riguarda la valutazione lognormale univariata o Pareto

Hai alcune domande abbastanza diverse lì.

Come verificare se i miei dati si adattano alla normale distribuzione del registro?

Prendi i log e fai un normale diagramma QQ. Guarda e vedi se la distribuzione è abbastanza vicina ai tuoi scopi.

Vorrei verificare in R se i miei dati corrispondono alle distribuzioni log-normali o Pareto

Accettare fin dall'inizio che nessuna delle distribuzioni considerate sarà una descrizione esatta. Stai cercando un modello ragionevole. Ciò significa che con campioni di piccole dimensioni, non si rifiuterà alcuna opzione ragionevole, ma con dimensioni del campione sufficienti si rifiuteranno tutti. Peggio ancora, con campioni di grandi dimensioni, respingerai modelli perfettamente decenti, mentre a campioni di piccole dimensioni non rifiuterai quelli cattivi.

Tali test non sono realmente una base utile per la selezione del modello.

In breve, la tua domanda di interesse - qualcosa del tipo "qual è un buon modello per questi dati, uno che è abbastanza vicino da rendere utile l'inferenza successiva?" non viene semplicemente risposto dalla bontà dei test di idoneità. Tuttavia, in alcuni casi le statistiche sulla bontà di adattamento (piuttosto che sulle decisioni che escono da regole di rigetto basate su di esse) possono in alcuni casi fornire un utile sommario di particolari tipi di mancanza di adattamento.

Forse ks.test potrebbe aiutarmi a farlo

No. In primo luogo, c'è il problema che ho appena menzionato, e in secondo luogo, un test di Kolmogorov-Smirnov è un test per una distribuzione completamente specificata. Non ne hai uno.

In molti casi, consiglierei grafici QQ e display simili. Per i casi di inclinazione corretta come questo, tenderei a lavorare con i log (un lognormal sembrerà quindi normale, mentre un Pareto sembrerà esponenziale). A dimensioni del campione ragionevoli non è difficile distinguere visivamente se i dati sembrano più quasi normali dell'esponenziale o viceversa. Per prima cosa, ottieni alcuni dati effettivi da ciascuno di essi e traccia quelli - diciamo almeno una mezza dozzina di campioni, in modo da sapere come sono fatti.

Vedi un esempio di seguito

come potrei ottenere i parametri alpha e k per la distribuzione di pareto per i miei dati?

Se devi stimare i parametri, usa MLE ... ma non farlo per decidere tra Pareto e lognormal.

Puoi dire quale di questi è lognormale e quale è Pareto?

inserisci qui la descrizione dell'immagine

Si noti che con i normali grafici QQ (colonna di sinistra) vediamo i registri del set di dati 1 che fornisce una linea abbastanza retta, mentre il set di dati 2 mostra l'asimmetria giusta. Con i grafici esponenziali, i log del set di dati 1 mostrano una coda destra più leggera dell'esponenziale, mentre il set di dati 2 mostra una linea abbastanza dritta (i valori nella coda destra tendono a oscillare un po 'anche quando il modello è corretto; questo è non insolito con le code pesanti; è uno dei motivi per cui è necessario tracciare diversi campioni di dimensioni simili a quello che si sta guardando per vedere che aspetto hanno in genere i grafici)

Codice usato per fare quei quattro grafici:

qqnorm(log(y1))
qqnorm(log(y2))
qex <- function(x) qexp((rank(x)-.375)/(length(x)+.25))
plot(qex(y1),log(y1))
plot(qex(y2),log(y2))

Se hai un problema di tipo di regressione - uno in cui i mezzi cambiano con altre variabili, puoi davvero valutare l'idoneità di entrambe le assunzioni distributive in presenza di un modello adatto alla media.


3

Questa è una questione di selezione del modello , ovviamente, supponendo che tu voglia solo verificare se i tuoi dati provengono da un modello o dall'altro e che il tuo obiettivo non è trovare il modello giusto tra l'oceano infinito dimensionale delle distribuzioni. Quindi, un'opzione è utilizzare AIC (che favorisce i modelli con il valore AIC più basso e non tenterò di descriverlo qui). Dai un'occhiata al seguente esempio con dati simulati:

rm(list=ls())

set.seed(123)
x = rlnorm(100,0,1)

hist(x)

# Loglikelihood and AIC for lognormal model

ll1 = function(param){
if(param[2]>0) return(-sum(dlnorm(x,param[1],param[2],log=T)))
else return(Inf)
}

AIC1 = 2*optim(c(0,1),ll1)$value + 2*2

# Loglikelihood and AIC for Pareto model

dpareto=function(x, shape=1, location=1) shape * location^shape / x^(shape + 1)

ll2 = function(param){
if(param[1]>0 & min(x)> param[2]) return(-sum(log(dpareto(x,param[1],param[2]))))
else return(Inf)
}


AIC2 = 2*optim(c(1,0.01),ll2)$value + 2*2

# Comparison using AIC, which in this case favours the lognormal model.

 c(AIC1,AIC2)

1

Forse fitdistr ()?

inserisci qui la descrizione dell'immagine

require(MASS)
hist(x, freq=F)
fit<-fitdistr(x,"log-normal")$estimate
lines(dlnorm(0:max(x),fit[1],fit[2]), lwd=3)


> fit
meanlog     sdlog 
3.8181643 0.1871289 



> dput(x)
c(52.6866903145324, 39.7511298620398, 50.0577071855833, 33.8671245370402, 
51.6325665911116, 41.1745418750494, 48.4259060939127, 67.0893697776377, 
35.5355051232044, 44.6197404834786, 40.5620805256951, 39.4265590077884, 
36.0718655240496, 56.0205581625823, 52.8039852992611, 46.2069383488226, 
36.7324212941395, 44.7998046213554, 47.9727885542368, 36.3400338997286, 
32.7514839453244, 50.6878893947656, 53.3756089181472, 39.4769689441593, 
38.5432770167907, 62.350999487007, 44.5140171935881, 47.4026606915147, 
57.3723511479393, 64.4041641945078, 51.2286815562554, 60.4921839777139, 
71.6127652225805, 40.6395409719693, 48.681036613906, 52.3489622656967, 
46.6219563536878, 55.6136160469819, 62.3003761050482, 42.7865905767138, 
50.2413659137295, 45.6327941365187, 46.5621907725798, 48.9734785224035, 
40.4828649022511, 59.4982559591637, 42.9450436744074, 66.8393386407167, 
40.7248473206552, 45.9114242834839, 34.2671010054407, 45.7569869970351, 
50.4358523486278, 44.7445606782492, 44.4173298921541, 41.7506552050873, 
34.5657344132409, 47.7099864540652, 38.1680974794929, 42.2126680994737, 
35.690599714042, 37.6748157160789, 35.0840798650981, 41.4775827114607, 
36.6503753230464, 42.7539062488003, 39.2210050689652, 45.9364763482558, 
35.3687017955285, 62.8299659875044, 38.1532612008011, 39.9183076516292, 
59.0662388169057, 47.9032427690417, 42.4419580084314, 45.785859495192, 
59.5254284342724, 47.9161476636566, 32.6868959277799, 30.1039453246766, 
37.7606323857655, 35.754797368422, 35.5239777126187, 43.7874313667592, 
53.0328404605954, 37.4550326357314, 42.7226751172495, 44.898430515261, 
59.7229655935187, 41.0701258705001, 42.1672231656919, 60.9632847841197, 
60.3690132883734, 45.6469334940722, 39.8300067022836, 51.8185235060234, 
44.908828102875, 50.8200011497451, 53.7945569828737, 65.0432670527801, 
49.0306734716282, 35.9442821219144, 46.8133296904456, 43.7514416949611, 
43.7348972849838, 57.592040060118, 48.7913517211383, 38.5555058596449
)

1
Sebbene questa soluzione si adatti a un lognormale ai dati, non dice se l'adattamento è buono o se un Pareto è una scelta migliore.
whuber
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.