Jak sprawdzić, czy moje dane pasują do rozkładu wykładniczego?


22

Jak mogę sprawdzić, czy moje dane, np. Wynagrodzenie, pochodzą z ciągłego wykładniczego rozkładu w R?

Oto histogram mojej próbki:

wprowadź opis zdjęcia tutaj

. Każda pomoc będzie mile widziana!


1
czy twoja zmienna jest dyskretna czy ciągła? Rozkład wykładniczy jest definiowany jako ciągły .
Ciekawy

ciągły. Zastanawiam się, czy jest jakikolwiek test w R, aby to sprawdzić
rozstrzygnięty

1
Witamy. Poszukaj tej funkcji fitdistrw R. Dostosowuje funkcje gęstości prawdopodobieństwa (pdf) na podstawie metody szacowania maksymalnego prawdopodobieństwa (MLE). Szukaj również w tej witrynie terminów, takich jak pdf, fitdistr, mle i podobne pytania. Pamiętaj, że takie pytania prawie wymagają powtarzalnego przykładu, aby uzyskać dobre odpowiedzi. Pomaga także, jeśli pytanie nie dotyczy wyłącznie programowania (co może spowodować, że zostanie ono zawieszone jako nie na temat).
Andre Silva,

8
Rozkład wykładniczy będzie wykreślany jako linia prosta względem pozycja kreślenia), gdzie pozycja kreślenia to (ranga - a ) / ( n - 2 a + 1 ) , ranga to 1 dla najniższej wartości, n to wielkość próbki, i Popularne wybory dla to 1 / 2 . To daje nieformalny test, który może być tak samo lub bardziej przydatny niż jakikolwiek test formalny. -ln(1--za)/(n-2)za+1)1nza1/2)
Nick Cox,

@Berkan rozwinął pomysł kwantylu w swoim poście.
Nick Cox,

Odpowiedzi:


29

Zrobiłbym to, najpierw oceniając jedyny parametr rozkładu rateprzy użyciu fitdistr. Nie powie ci to, czy rozkład pasuje, czy nie, więc musisz użyć testu dopasowania . W tym celu możesz użyć ks.test:

require(vcd)
require(MASS)

# data generation
ex <- rexp(10000, rate = 1.85) # generate some exponential distribution
control <- abs(rnorm(10000)) # generate some other distribution

# estimate the parameters
fit1 <- fitdistr(ex, "exponential") 
fit2 <- fitdistr(control, "exponential")

# goodness of fit test
ks.test(ex, "pexp", fit1$estimate) # p-value > 0.05 -> distribution not refused
ks.test(control, "pexp", fit2$estimate) #  significant p-value -> distribution refused

# plot a graph
hist(ex, freq = FALSE, breaks = 100, xlim = c(0, quantile(ex, 0.99)))
curve(dexp(x, rate = fit1$estimate), from = 0, col = "red", add = TRUE)

wprowadź opis zdjęcia tutaj

Z mojego osobistego doświadczenia (chociaż nigdy oficjalnie nigdzie go nie znalazłem, proszę o potwierdzenie lub poprawienie mnie), ks.testbędzie działać tylko wtedy, gdy najpierw podasz oszacowanie parametru. Nie można pozwolić, aby oszacowała parametry automatycznie, jak np. goodfitRobi to. Dlatego potrzebujesz tej dwustopniowej procedury fitdistr.

Aby uzyskać więcej informacji śledzić doskonałe przewodnika Ricci: Oprawa dystrybucje z R .


2
+1. Czy test ks.test jest najlepszym testem do sprawdzania poprawności dopasowania w takich sytuacjach? Myślę, że odpowiedziałeś również na jedno moje pytanie .
Andre Silva,

4
tylko jeden na jednego, powinieneś być ostrożny, jeśli szacujesz parametry na podstawie samych danych. W takim przypadku test taki jak Anderson Darling może być najlepszy, ponieważ jest odporny na takie sytuacje.
JPC

W teście KS dla wykładniczości, gdy parametr częstości jest szacowany na podstawie danych: patrz Naiwne pytanie dotyczące testu Kołmogorowa Smirnowa .
Scortchi - Przywróć Monikę

8

Podczas gdy normalnie zalecałbym sprawdzenie wykładniczości za pomocą wykresów diagnostycznych (takich jak wykresy QQ), omówię testy, ponieważ ludzie często ich chcą:

Jak sugeruje Tomas, test Kołmogorowa-Smirnowa nie nadaje się do testowania wykładniczości z nieokreślonym parametrem.

Jeśli jednak dostosujesz tabele do oszacowania parametru, otrzymasz test Lillieforsa dla rozkładu wykładniczego.

Lilliefors, H. (1969), „O teście Kołmogorowa – Smirnowa dla rozkładu wykładniczego o średniej nieznanej”, Journal of American Statistics Association , t. 64 s. 387–389.

Zastosowanie tego testu jest omówione w praktycznych statystykach nieparametrycznych Conovera .

Jednak w D'Agostino & Stephens ' Goodness of Fit Techniques omawiają podobną modyfikację testu Andersona-Darlinga (nieco skośnie, jeśli dobrze pamiętam, ale myślę, że wszystkie wymagane informacje na temat tego, jak podejść do niego w przypadku wykładniczym, to: w książce), a to prawie na pewno będzie miało większą moc w stosunku do interesujących alternatyw.

n(1-r2))r

Wreszcie, można zastosować podejście płynnego testu , jak w książce Rayner & Best ( Smooth Tests of Goodness of Fit , 1990 - chociaż uważam, że jest nowsza, z Thas i „ in R ” dodanymi do tytułu). Przypadek wykładniczy obejmuje również:

JCW Rayner i DJ Best (1990), „Smooth Tests of Goodness of Fit: An Overview”, International Statistics Review , tom. 58, nr 1 (kwiecień 1990), s. 9–17

Cosma Shalizi omawia również sprawne testy w jednym rozdziale notatek z wykładu na temat zaawansowanej analizy danych na studiach licencjackich lub w Ch15 swojej książki Zaawansowana analiza danych z podstawowego punktu widzenia .

W przypadku niektórych z powyższych może być konieczna symulacja rozkładu statystyki testowej; dla innych dostępne są tabele (ale w niektórych z tych przypadków symulacja może być łatwiejsza, a nawet dokładniejsza - tak jak w przypadku testu Lilliefors, ze względu na ograniczony rozmiar symulacji w oryginale).

n(1-r2))


5

Możesz użyć wykresu qq , który jest graficzną metodą do porównania dwóch rozkładów prawdopodobieństwa poprzez wykreślenie ich kwantyli względem siebie.

W R nie ma gotowej funkcji wykresu qq dla rozkładu wykładniczego (przynajmniej wśród funkcji podstawowych). Możesz jednak użyć tego:

qqexp <-  function(y, line=FALSE, ...) { 
    y <- y[!is.na(y)]
    n <- length(y)
    x <- qexp(c(1:n)/(n+1))
    m <- mean(y)
    if (any(range(y)<0)) stop("Data contains negative values")
    ylim <- c(0,max(y))
    qqplot(x, y, xlab="Exponential plotting position",ylim=ylim,ylab="Ordered sample", ...)
    if (line) abline(0,m,lty=2)
    invisible()
  }

Podczas interpretacji wyników: Jeśli dwa porównywane rozkłady są podobne, punkty na wykresie qq będą w przybliżeniu leżeć na linii y = x. Jeśli rozkłady są liniowo powiązane, punkty na wykresie qq będą w przybliżeniu leżeć na linii, ale niekoniecznie na linii y = x.


2
W Stata qexpz SSC jest implementacją w puszce.
Nick Cox,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.