Jak sprawdzić, czy moje dane pasują do dziennika normalnej dystrybucji?

Odpowiedzi:

6

... Właśnie zauważyłem, że masz tam tag „regresji”. Jeśli masz problem z regresją, nie możesz spojrzeć na jednoczynnikowy rozkład odpowiedzi w celu oceny kształtu rozkładu, ponieważ zależy to od wzoru x. Jeśli pytasz o sprawdzenie, czy zmienna odpowiedzi (y) w jakiejś regresji lub GLM ma logarytmiczny lub rozkład Pareto, w którym średnie różnią się w zależności od obserwacji, to jest zupełnie inne pytanie (ale w zasadzie sprowadza się do podobnych rodzajów analizy na resztkach). Czy możesz wyjaśnić, czy jest to problem regresji. Moja odpowiedź w tej chwili dotyczy oceny logarytmu jednoznacznego lub Pareto

Masz tam całkiem inne pytania.

Jak sprawdzić, czy moje dane pasują do dziennika normalnej dystrybucji?

Weź dzienniki i wykonaj normalny wykres QQ. Sprawdź, czy dystrybucja jest wystarczająco bliska dla twoich celów.

Chciałbym sprawdzić w R, czy moje dane są zgodne z log-normalnymi lub Pareto

Zaakceptuj od samego początku, że żadna z rozważanych dystrybucji nie będzie dokładnym opisem. Szukasz rozsądnego modelu. Oznacza to, że przy małych rozmiarach próbek nie odrzucisz żadnej rozsądnej opcji, ale przy wystarczającej wielkości próbki odrzucisz je wszystkie. Co gorsza, przy dużej wielkości próbki odrzucasz idealnie przyzwoite modele, podczas gdy przy małych rozmiarach próbek nie odrzucasz złych.

Takie testy nie są tak naprawdę użyteczną podstawą do wyboru modelu.

Krótko mówiąc, twoje pytanie dotyczące zainteresowania - coś w rodzaju „jaki jest dobry model dla tych danych, który jest wystarczająco blisko, aby uczynić późniejszym wnioskowanie przydatnym?” po prostu nie odpowiada na to test dobroci dopasowania. Jednak w niektórych przypadkach statystyki trafności dopasowania (zamiast decyzji opartych na regułach odrzucania na ich podstawie) mogą w niektórych przypadkach stanowić przydatne podsumowanie poszczególnych rodzajów braku dopasowania.

Być może ks.test może mi w tym pomóc

Nie. Po pierwsze, jest problem, o którym właśnie wspomniałem, a po drugie, test Kołmogorowa-Smirnowa jest testem dla całkowicie określonego rozkładu. Nie masz jednego z nich.

W wielu przypadkach polecam wykresy QQ i podobne wyświetlacze. W przypadku takich przypadków skośnych, zwykle pracuję z logami (lognormal będzie wtedy wyglądał normalnie, a Pareto będzie wykładniczy). Przy rozsądnych rozmiarach próby nie jest trudno wizualnie rozróżnić, czy dane wyglądają bardziej normalnie niż wykładniczo lub odwrotnie. Najpierw uzyskaj z nich kilka rzeczywistych danych i wykreśl je - powiedz przynajmniej pół tuzina próbek, abyś wiedział, jak wyglądają.

Zobacz przykład poniżej

jak mogę uzyskać parametry alfa i k dla rozkładu pareto dla moich danych?

Jeśli chcesz oszacować parametry, użyj MLE ... ale nie rób tego, aby wybrać między Pareto a lognormal.

Czy możesz powiedzieć, który z nich jest logarytmiczny, a który Pareto?

wprowadź opis zdjęcia tutaj

Zauważ, że przy normalnych wykresach QQ (lewa kolumna) widzimy, że logi zestawu danych 1 dają dość prostą linię, podczas gdy zestaw danych 2 pokazuje prawą skośność. W przypadku wykresów wykładniczych dzienniki zestawu danych 1 pokazują jaśniejszy prawy ogon niż wykładniczy, natomiast zestaw danych 2 pokazuje dość prostą linię (wartości w prawym ogonie mają tendencję do kołysania się nieco, nawet gdy model jest poprawny; jest to nie jest niczym niezwykłym w przypadku ciężkich ogonów; jest to jeden z powodów, dla których musisz wykreślić kilka próbek o podobnej wielkości do tej, na którą patrzysz, aby zobaczyć, jak zwykle wyglądają wykresy)

Kod użyty do wykonania tych czterech wykresów:

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))

Jeśli masz problem z typem regresji - taki, w którym średnie zmieniają się wraz z innymi zmiennymi, możesz naprawdę ocenić przydatność każdego z założeń dystrybucyjnych tylko w obecności odpowiedniego modelu dla średniej.

Glen_b - Przywróć Monikę
źródło
3

Jest to oczywiście kwestia wyboru modelu , zakładając, że chcesz po prostu sprawdzić, czy twoje dane pochodzą z jednego lub drugiego modelu i że twoim celem nie jest znalezienie odpowiedniego modelu wśród nieskończonego wymiaru oceanu rozkładów. Tak więc jedną z opcji jest użycie AIC (co faworyzuje modele o najniższej wartości AIC i nie będę tutaj próbował opisywać). Spójrz na następujący przykład z danymi symulowanymi:

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)
Teco
źródło
1

Może fitdistr ()?

wprowadź opis zdjęcia tutaj

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
)
Kolba
źródło
1
Chociaż to rozwiązanie jest logarytmiczne w stosunku do danych, nie mówi, czy dopasowanie jest dobre, czy też Pareto jest lepszym wyborem.
whuber