1 Generatory liczb losowych w R
W wielu zagadnieniach związanych z modelowaniem metodami Monte Carlo złożonych zjawisk (np. finansowych, biologicznych, fizycznych, chemicznych, metrologicznych, itp.) potrzebne są narzędzia umożliwiające symulować losowość, tak aby odzwierciedlić stochastyczną naturę zjawiska.
Generowane przez komputer liczby nazywamy pseudolosowymi, ponieważ mają one symulować losowość, jednakże są one wyznaczane w sposób deterministyczny (choć często w dość skomplikowany sposób). Ponieważ zapotrzebowanie na na dobre liczby pseudolosowe nieustannie rośnie w literaturze można znaleźć wiele metod ich generowania.
1.1 Liniowa metoda kongruencji
Mimo, że będziemy głównie korzystać z metod zaimplementowanych w R, przedstawimy poniżej jeden z najbardziej klasycznych algorytmów do symulacji liczb losowych zwany liniową metodą kongruencji (linear congruential method). Główna zaletą liniowych generatorów kongruencjalnych jest ich stosunkowo łatwą implementację i szybkość oraz zapotrzebowanie na niewielką ilość pamięci. Warto jednak zaznaczyć, że inne metody, takie jak Mersenne Twister, są dziś znacznie bardziej powszechne w praktycznym użyciu.
Liniowe generatory kongruencyjne są definiowane przez relację rekurencyjną: \[X_{i+1}=(aX_{i}+c)\text{ mod }m,\] gdzie \(a, c, m \in \mathbb{N}_{+}\) są parametrami, które należy wybrać oraz wartość \(X_0\) będącą tak zwanym ziarnem (seed) algorytmu.
Zatem, algorytm generuje liczby z przedziału \([0,m-1]\).
1.2 Zadanie 1 - kongruencyjny generator liczb losowych
Zaimplementuj funkcję lcm(N, x0, a, c, m)
obliczającą
według powyższego wzoru liniowy generator kongurencyjny, gdzie \(N\) jest długością generowanego ciągu, a
pozostałe argumenty parametrami generatora. Przeskaluj wartość \(X_n\) tak, aby funkcja zwracała wartość z
przedziału \([0,1]\). Wywołaj
zaimplementowaną funkcję dla podanych wartości argumentów
lcm(N = 10, x0 = 4, a = 13, c = 0, m = 64)
, a następnie
narysuj otrzymane wyniki. Co można zauważyć na podstawie wykresu? Czy
wygenerowane liczby są według Ciebie losowe?
Uwaga: Teoria dotycząca optymalnego wyboru parametrów i liczby początkowej \(X_0\) jest dość skomplikowana. Powszechnym wyborem jest jednak jest przyjęcie za \(X_0\) bieżącego czasu systemowego w mikrosekundach.
1.3 Zadanie 2 - kongruencyjny generator liczb losowych
Wywołaj wcześniej napisana funkcję dla poniższych argumentów. Czy w tym przypadku otrzymane wartości są bardziej losowe?
Uwaga: W ten sposób możemy generować losowe wartości z przedziału jednostajnego \(U[0,1]\).
2 Popularne rozkłady zmiennych.
W języku R jest wiele funkcji do obsługi większości rozkładów zmiennych losowych. Nazewnictwo funkcji jest zestandaryzowane i można je opisać za pomocą poniższego schematu:
Możliwe wartości dla prefixów to:
r
(random) - generuje próbę prostą z danego rozkładu o rozmiarzen
(pierwszy argument funkcji),p
(probability) - wyznacza wartość dystrybuanty w punktach określonych przez wektorx
(pierwszy argument funkcji),d
(density) - wyznacza wartość gęstości (dla rozkładów ciągłych) lub prawdopodobieństwa (dla rozkładów dyskretnych) danego rozkładu w punktach określonych przez wektorx
(pierwszy argument funkcji),q
(quantile) - wyznacza kwantyl danego rozkładu w punktachx
(pierwszy argument funkcji).
Pozostałe argumenty określają parametry rozkładu w wybranej rodzinie rozkładów.
2.1 Rozkład jednostajny
Zacznijmy od rozkładu jednostajnego, który jest jednym z najprostszych i najbardziej podstawowych rozkładów. Posiada on poniższą funkcję gęstości: \[f(x)= \begin{cases}\frac{1}{b-a}, & \text { gdy } a \leq x \leq b \\ 0, & \text { gdy } x<a \text { lub } x>b.\end{cases}\]
unif
jest nazwą rodziny rozkładów dla rozkładów
jednostajnych.
Na przykład aby wygenerować 10 zmiennych losowych z rozkładu \(U[0,1]\) wystarczy:
## [1] 0.2002145 0.6852186 0.9168758 0.2843995 0.1046501 0.7010575 0.5279600
## [8] 0.8079352 0.9565001 0.1104530
Funkcja set.seed
ustawia ziarno i determinuje wartości
kolejnych liczb pseudo losowych. Dzięki temu możemy zapewnić możliwość
powtórzenia swoich wyników, które bazują na losowości.
Dla rozkładu jednostajnego na innym przedziale niż \([0{,}1]\), używamy:
2.2 Zadania - rozkład jednostajny
2.2.1 Zadanie
unif
- 4 wykresy: gęstości i dystrybuanty
Stwórz cztery wykresy na wspólnym rysunku (używając
par(mfrow=c(2,2))
do podziału 1 rysunku na 4 panele)
ukazujące dwie gęstość rozkładu jednostajnego dla różnych parametrów i
odpowiednio ich dystrybuanty.
Wynik dla wybranych parametrów powinien przypominać
2.2.2 Zadanie
unif
- funkcja kwantylowa
Narysuj funkcję kwantylową dla zmiennych z przedziału [0,1].
Funkcja kwantylowa jest odwrotnością dystrybuanty. Dla danego prawdopodobieństwa \(p\) wyznacza wartość \(q\) dla której prawdopodobieństwo, że zmienna losowa osiągnie wartość mniejszą lub równą \(q\) wynosi \(p\), to jest, \(P(X\leq q)=p\).
2.2.3 Zadanie
unif
- histogram i gęstość rozkładu
Porównaj histogram z prawdziwą gęstością rozkładu. Wygeneruj 100 obserwacji z rozkładu \(U[2,8]\) i przedstaw je jako histogram. Następnie oblicz i nanieś na niego teoretyczny wykres gęstości rozkładu \(U[2,8]\).
Rysunek powinien przypominać (czerwona linia to teoretyczna gęstość
uzyskana za pomocą abline
. Histogram, by zamiast liczności
umieścił na wykresie częstotliwość występowania, powienien mieć argument
probability = TRUE
):
2.3 Metoda dystrybuanty odwrotnej
Najprostszą metodą symulacji obserwacji z ogólnych zmiennych losowych jest tak zwana metoda dystrybuanty odwrotnej.
Załóżmy, że interesuje nas zmienna losowa \(X\), której posiada dystrybuantę \(F_X\). Musimy założyć, że dystrybuanta \(F_X\) jest:
znana,
ciągła,
ściśle rosnąca,
wtedy \[X=F^{-1}_X(U),\]
gdzie \(F_X^{-1}\) jest odwrotnością \(F_X\) oraz \(U\) jest zmienną losową z rozkładu jednostajnego (z ang. uniform) \(U[0,1]\) tzn. (\(U\sim U[0,1]\)).
Intuicja
Szukamy ściśle monotonicznego odwzorowania \(T\colon [0,1]\rightarrow\mathbb{R}\), takiego, że zmienna \(X\) ma rozkład \(T(U)\), gdzie \(U\) ma rozkład jednostajny \(U[0,1]\). Zatem, \[F_X(x)=P(X\leq x)=P\left(T(U)\leq x\right)=P\left(U\leq T^{-1}(x)\right)=T^{-1}(x),\] gdzie ostatnia równość wynika z faktu, że \(P(U\leq y)=y\), gdy \(U\sim U[0,1]\).
Stąd wynika, że \(T(u)=F^{-1}_X(u)\).
W rezultacie mamy następujący algorytm na generowanie zmiennych losowych \(X\) o rozkładzie \(F_X\):
oblicz \(F^{-1}_X\) korzystając z \(F\),
wygeneruj niezależny zmienne losowe \(u_1, \dots, u_n\) z rozkładu jednostajnego \(U[0,1]\),
oblicz \(x_1=F^{-1}_X(u_1), \dots, x_n=F^{-1}_X(u_n)\).
Wtedy zmienne losowe \(x_1, \dots, x_n\) są niezależne o rozkładzie \(F_X\).
2.3.1 Zadanie - metoda dystrybuanty odwrotnej + rozkład wykładniczy
Wygeneruj 5 obserwacji z rozkładu wykładniczego metodą dystrybuanty odwrotnej. Przypomnijmy, że jeśli \(X\) ma rozkład wykładniczy z parametrem \(\lambda\), to dystrybuanta wyraża się poniższym wzorem \[F_X(x)=1-e^{-\lambda x}, \quad \text{dla }x\geq 0.\]
Wskazówka: należy samodzielnie wyznaczyć funkcję \(F^{-1}_{X; \lambda}(u)\).
Przykładowy wynik (przy ustalonym set.seed(202)
i dla
lambda=2
) to
## [1] 0.06897777 0.55456051 0.20008199 0.11390671 0.22965812
2.3.2 Metoda dystrybuanty odwrotnej cd
Wiemy, jak generować rozkład jednostajny na przedziale \([0,1]\). Pytanie jak można teraz zadać, to jak wygenerować przedział jednostajny na przedziale ogólnym \([a,b]\).
Możemy również użyć metody dystrybuanty odwrotnej. Przypomnijmy, że dystrybuanta rozkładu jednostajnego wyraża się wzorem: \[F(x)=\frac{x-a}{b-a}.\] Zatem, \[F^{-1}(u)=a+(b-a)u.\] Wobec tego mając zmienne \(u_1, \dots, u_n\) z rozkładu jednostajnego na przedziale \([0,1]\) możemy symulować rozkład \(U[a,b]\) za pomocą \[x_i=a+(b-a)u_i\]
2.3.3 Zadanie - metoda dystrybuanty odwrotnej - rozkład jednostajny
Używając metody dystrybuanty odwrotnej wygeneruj \(5\) zmiennych z rozkładu jednostajnego na przedziale \([2,6]\). Następnie wygeneruj \(5\) obserwacji z rozkładu \(U[2,6]\) używając gotowej funkcji w R.
Przykładowy wynik przy set.seed(202)
:
## [1] 2.515450 4.680605 3.319159 2.814909 3.473138
## [1] 5.129214 2.793936 2.876312 3.767799 4.569107
2.3.4 Uwagi - metoda dystrybuanty odwrotnej
Większość generatorów liczb losowych na komputerze, generuje tylko liczby z rozkładu jednostajnego, a następnie korzystając z metody dystrybuanty odwrotnej oblicza zmienne z innych rozkładów.
Wyjątkiem jest rozkład normalny, który nie ma prostej postaci analitycznej rozkładu, więc aby użyć metody dystrybuanty odwrotnej trzeba wykorzystać wymagające obliczeniowo aproksymacje numeryczne.
2.4 Rozkład normalny
Jednym z ważniejszych rozkładów jest rozkład normalny (Gaussowski) \(N(\mu, \sigma^2)\). Ma on dwa parametry: średnią \(\mu\) oraz wariancję \(\sigma^2\).
Uwaga: W języku R, funkcje dla rozkładu normalnego przyjmują jako parametr rozkładu odchylenie standardowe, czyli pierwiastek kwadratowy z wariancji, a nie samą wariancję.
Jeżeli \(X\sim N(0,1)\), to mówimy, że zmienna losowa \(X\) ma rozkład standardowy normalny. Funkcja gęstości rozkładu normalnego ma następujący wzór: \[f(x)=\frac{1}{\sigma \sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}.\]
Właściwości:
Symetria - rozkład normalny jest symetryczny względem średniej \(\mu\).
Krzywa rozkładu normalnego ma charakterystyczny dzwonowy kształt.
Reguła 68-95-99.7 - około 68% wartości mieści się w przedziale \([\mu-\sigma, \mu+\sigma]\), 95% w przedziale \([\mu-2\sigma, \mu+2\sigma]\), a 99.7% w przedziale \([\mu-3\sigma, \mu+3\sigma]\).
Zastosowania:
testy statystyczne, np. ANOVA, t-Studenta,
przedziału ufności,
analiza regresji,
modele predykcyjne.
Sprawdźmy, jak wyglądają podstawowe funkcje dotyczące rozkładu normalnego.
par(mfrow=c(2,2))
mu=0.5
sigma=1
x <- seq(-4,4,0.1)
values <- seq(0,1,0.1)
plot(x, dnorm(x, mean = mu, sd = sigma), type="l", main = "Gęstość") # domyślnie oblicza dla rozkładu standardowego normalnego
plot(x,pnorm(x, mean = mu, sd = sigma), type="l", main = "Dystrybuanta")
plot(values, qnorm(values, mean = mu, sd = sigma), type="l", main = "Funkcja kwantylowa")
draws <- rnorm(100, mean = mu, sd = sigma)
hist(draws, probability = TRUE)
curve(dnorm(x, mean = mu, sd = sigma), add = TRUE, col = "red")
2.4.1 Zadania - rozkład normaly
2.4.1.1 Zadanie - wykresy rozkładu normalnego
Przetestuj powyższy kod dla innych parametrów rozkładu normalnego. Jak zmiana parametrów wpływa na kształt wykresów?
2.4.1.2 Zadanie - symulacja egzaminu
Załóżmy, że wyniki egzaminu przeprowadzonego dla \(200\) studentów, mają rozkład normalny o średniej \(72\) i odchyleniu standardowym \(15.2\).
Wygeneruj wyniki z egzaminu.
Wyznacz, jakie jest prawdopodobieństwo uzyskania \(84\) punkty lub więcej na egzaminie. Wskazówka z rachunku prawdopodobieństwa $P(x ) = $
## [1] 0.2149176
2.4.1.3 Zadanie - 3 odchylenia standardowe
Dla zmiennej losowej mającej rozkład normalny \(N(0.5, 4)\) wyznacz prawdopodobieństwo, że znajduje się ona w granicach \(3\) odchyleń standardowych od średniej (tj. wyznacz \(P(\mu-3\sigma<X< \mu+3\sigma)\)).
Wskazówka:
\(P(\mu-3\sigma<X< \mu+3\sigma)=\dots\)
## [1] 0.9973002
2.5 Rozkład chi-kwadrat \(\chi^2\)
Gdy \(X_1, \dots, X_m\) są niezależnymi zmiennymi losowymi o rozkładzie \(N(0,1)\), wtedy \[V=X_1^2+\dots + X_m^2\] ma rozkład chi-kwadrat o \(m\) stopniach swobody \(\chi^2_{(m)}\).
Właściwości:
Rozkład chi-kwadrat jest asymetryczny i ma jedno ramię.
Jego kształt zależy od liczby stopni swobody. Przy małej liczbie stopni swobody jest bardziej skośny, a przy większej liczbie stopni swobody staje się bardziej zbliżony do rozkładu normalnego.
Zastosowania:
Testy zgodności, służą do sprawdzania, czy obserwowane dane pasują do oczekiwanego rozkładu teoretycznego.
Testy niezależności, służą do badania, czy istnieje zależność między dwiema zmiennymi kategorycznymi.
ANOVA czyli analiza wariancji w porównaniu istotności grup jakościowych.
Nazwa rodziny rozkładów chi-kwadrat w R to chisq
.
2.5.1 Zadanie - rozkład chi-kwadrat
Narysuj wykres gęstości rozkładu chi-kwadrat o 7 stopniach swobody. Następnie porównaj go z wykresem chi-kwadrat o 2 i 20 stopniach swobody.
Wynik powinien przypominać:
2.6 Rozkład t-Studenta
Jest również nazywany rozkładem t. Bardzo użyteczny przy pracy z małymi próbkami. Jest on podobny kształtem do rozkładu normalnego, natomiast ma tzw. “grubsze ogony”. Oznacza to, że prawdopodobieństwo otrzymania skrajnych obserwacji jest większe niż w przypadku rozkładu normalnego.
Zmienna T \[T=\frac{Z}{\sqrt{V/m}}\] ma rozkład t-Studenta o \(m\) stopniach swobody \(t_{(m)}\), gdzie \(Z\) jest zmienną losowa o rozkładzie \(N(0,1)\), \(V\) ma rozkład \(\chi^2_{(m)}\) oraz \(Z\) i \(V\) są niezależne.
W języku R rodzinę rozkładów t-Studenta wywołuje się za pomocą
t
.
Uwaga! Jeżeli próba prosta \(X_1, \dots, X_n\) ma rozkład \(N(\mu, \sigma^2)\), wtedy \[t=\frac{\bar{x}-\mu}{\sqrt{s^2/n}}\sim t_{(n-1)},\] gdzie \(s^2\) jest estymatorem wariancji \(s^2=\frac{1}{n-1}\sum_{i=1}^n \left(X_i-\bar{X}\right)^2\).
Zatem rozkład t-Studenta w praktyce często się wykorzystuje, gdy wariancja jest nieznana i musimy użyć estymatora i za jego pomocą zestandaryzować dane.
Właściwości:
średnia dla rozkładu t-Studenta wynosi \(0\),
liczba stopni swobody \(m\) determinuje kształt rozkładu. Im większa liczba stopni swobody, tym bardziej rozkład t-Studenta przypomina rozkład normalny.
Zastosowania:
Test t-Studenta dla jednej próby - porównuje średnią próby z wartością populacji, gdy liczba obserwacji jest mała, a populacja ma rozkład normalny lub zbliżony do normalnego.
Używany do porównywania średnich z dwóch niezależnych prób.
Używany do budowy przedziałów ufności, gdy liczba obserwacji jest mała, a odchylenie standardowe populacji nie jest znane.
2.6.1 Zadania - rozkład t-Studenta
2.6.1.1 Zadanie - wykresy rozkładu t-Studenta
Narysuj wykres rozkładu standardowego normalnego, a następnie nanieś na niego rozkład t-Studenta o \(2\), \(5\) i \(10\) stopniach swobody. Porównaj otrzymane wykresy.
2.6.1.2 Zadanie - statystyka t
Wygeneruj \(10\) obserwacji z rozkładu normalnego o średniej \(0.5\) i wariancji \(2\), a następnie oblicz statystykę \(t\) (ze wzoru powyżej). Narysuj rozkład t-Studenta o \(9\) stopniach swobody i zaznacz obliczoną wartość statystyki \(t\) na wykresie.
Na poniższym wykresie statystyka \(t\) została zaznaczona pionową, czerwoną
linią (polecenie abline
):
2.7 Rozkład F
Nazywany jest również rozkładem F - Snedecora lub rozkład Fishera-Snedecora.
Jeżeli \(V_1\) i \(V_2\) są dwiema niezależnymi zmiennymi losowymi o rozkładzie \(\chi^2\) o stopniach swobody \(m_1\) oraz \(m_2\) odpowiednio, wtedy \[F=\frac{V_1/m_1}{V_2/m_2}\] ma F rozkład \(F_{(m_1, m_2)}\).
Właściwości:
rozkład F jest niesymetryczny i ma ogon skierowany w prawo,
nieujemny.
Zastosowania:
ANOVA,
testowanie hipotez dotyczących proporcji wariancji dwóch populacji.
Funkcja gęstości i dystrybuanty dla rozkładu F w zależności od różnych wartosci parametrów prezentuje się następująco.
x=seq(0, 8, 0.01)
par(mfrow=c(1,2))
plot(x, df(x, 5,3), type="l", main ="Gęstość F(5,3)")
lines(x, df(x, 5,1), type="l", main ="Gęstość F(5,1)", col="red")
plot(x, pf(x, 5,3), type="l", main ="Dystrybuanta F(5,3)")
lines(x, pf(x, 5,1), type="l", main ="Dystrybuanta F(5,1)", col="red")
2.8 Rozkład dwumianowy (rozkład Bernoulliego)
Jest to rozkład dyskretny. Opisuje wynik \(n\) niezależnych prób w eksperymencie.
Zakłada się, że każda próba ma tylko dwa wyniki, tj. sukces lub porażkę.
Jeśli prawdopodobieństwo sukcesu wynosi \(p\), to prawdopodobieństwo uzyskania \(k\) udanych wyników w eksperymencie
składającym się z \(n\) niezależnych
prób jest następujące: \[P(X=k)=\binom{n}{k}p^k(1-p)^{n-k}.\]
Rodzina rozkładów Bernoullego w języku nazywa się
binom
.
Wygenerowanie zmiennych z rozkładu Bernoulliego przy pomocy rozkładu jednostajnego \(U[0,1]\) jest również możliwe.
Algorytm:
Generujemy liczby \(u_1,\dots, u_n\) z rozkładu \(U[0,1]\).
Następnie przekształcamy wylosowane liczby na zmienne binarne. Jeżeli \(u_i<p\) to przypisujemy wartość \(0\), a w przeciwnym przypadku, przypisujemy wartość \(1\).
2.8.1 Zadania - rozkład Bernoullego
2.8.1.1 Zadanie - quiz z angielskiego
W quizie z języka angielskiego jest dwanaście pytań wielokrotnego wyboru. Każde pytanie ma pięć możliwych odpowiedzi i tylko jedna z nich jest poprawna. Znajdź prawdopodobieństwo udzielenia czterech lub mniej poprawnych odpowiedzi, jeśli uczeń spróbuje odpowiedzieć na każde pytanie losowo.
Wskazówka: Prawdopodobieństwo udzielenia poprawnej
odpowiedzi na losowo wybrane pytanie wynosi \(1/5\). Aby znaleźć prawdopodobieństwo
uzyskania czterech lub mniej poprawnych odpowiedzi w losowych próbach,
stosujemy funkcję dbinom
z \(x =
0, \dots,4\).
## [1] 0.9274445
2.8.1.2 Zadanie - Bernulli - frakcje
Utwórz wektor \(x\) o rozmiarze
\(50\), zawierający losowe liczby z
przedziału \([0,1]\). Następnie utwórz
nowy wektor \(y\) o tym samym
rozmiarze, w którym zapiszesz \(0\)
jeżeli wartość \(x_i<0.5\) i \(1\) w przeciwnym przypadku. Oblicz frakcję
jedynek w wektorze \(y\). Następnie
wygeneruj wektor \(z\) używając funkcji
rbinorm
o prawdopodobieństwie sukcesu równemu \(\frac{1}{2}\) i również dla niego oblicz
frakcję otrzymanych jedynek. Czy wyniki są podobne? Wykonaj całe zadanie
bez używania pętli. Zwiększ rozmiar wektorów do 500 i powtórz
symulację.
Przykładowy wynik (dla długości równej 50):
## [1] 0.42
## [1] 0.56
2.9 Rozkład Poissona
Jest to drugi przykład rozkładu dyskretnego. Przypomnijmy, że rozkład Bernoulliego posiada górna granice (\(n\)) to jest liczbę eksperymentów. Czasami przeprowadzamy eksperyment i liczymy sukcesy bez zadanego z góry ograniczenia. Eksperymenty te są zwykle przeprowadzane przez pewien czas lub na pewnej przestrzeni, lub w obu przypadkach, na przykład:
liczba zdjęć zaobserwowanych przez detektor w ciągu minuty,
liczba włączeń klimatyzacji w ciągu godziny,
liczba budynków w mili kwadratowej,
liczba tranzystorów na płytce drukowanej.
Rozkład Poissona opisuje rozkład prawdopodobieństwa wystąpienia niezależnych zdarzeń w przedziale. Jeżeli parametr \(\lambda\) jest średnim wystąpieniem na przedział, to prawdopodobieństwo wystąpienia \(k\) zdarzeń w danym przedziale wynosi: \[P(X=k)=\frac{\lambda^k e^{-\lambda}}{k!}.\] Właściwości:
Rozkład Poissona jest dyskretny i definiowany na nieujemnych liczbach całkowitych: \(0,1,2,\dots\).
Wszystkie momenty wyższego rzędu rozkładu Poissona są równe \(\lambda\).
Własność braku pamięci, tj. prawdopodobieństwo wystąpienia zdarzenia w przyszłości jest niezależne od przeszłości.
Zastosowania:
modelowania liczby zdarzeń,
analizy danych, gdzie liczba zdarzeń jest niewielka w stosunku do wielkości badanej populacji.
Spójrzmy na dystrybuantę rozkładu Poissona.
2.9.1 Zadanie - Poisson - pożary
W mieście, średnia liczba zgłoszeń pożarów wynosi 3 dziennie. Zakładając, że liczba zgłoszeń pożarów ma rozkład Poissona:
Oblicz prawdopodobieństwo, że w ciągu jednego dnia zostanie zgłoszonych dokładnie 5 pożarów.
Jaka jest szansa, że nie zostanie zgłoszony żaden pożar w ciągu jednego dnia?
Oblicz prawdopodobieństwo, że w ciągu tygodnia (7 dni) liczba zgłoszeń pożarów będzie większa niż 25.
Wskazówka: Dla rozkładu Poissona zachodzi tak zwana zasada addytywności, to znaczy jeżeli mamy dwa rozkłady Poisson(\(\lambda_1\)) i Poisson(\(\lambda_2\)), to ich suma ma rozkład Poissona z parametrem \(\lambda_1+\lambda_2\).
- Wygeneruj 1000 symulacji liczby zgłoszeń pożarów na tydzień (7 dni). Narysuj histogram wyników i porównaj go z teoretycznym rozkładem Poissona o parametrach odpowiadających tygodniowi.
Przykładowy histogram:
3 Analiza rozkładu danych
Znalezienie odpowiedniego rozkładu dla danych jest kluczowe w statystyce, ponieważ umożliwia poprawne modelowanie, analizę i przewidywanie. Na przykład można go użyć do:
opisaniu danych - poprawne zrozumienie i opisanie właściwości danych,
przewidywania,
testowania hipotez,
symulacji - tworzenie realistycznych symulacji na podstawie modelu.
Dla danego zestawu danych powinno się wykonać następujące kroki:
Znalezienie kandydata na rozkład.
Estymacja parametrów rozkładu.
Ocena dopasowania rozkładu.
Powyższy schemat opiszemy bardziej szczegółowo w poniższych podsekcjach.
Dopasowany rozkład danych możemy wykorzystanie na przykład do analizy lub tworzenia predykcji.
3.1 Znalezienie kandydata na rozkład
Istotna jest eksploracja danych i ich rozumienie. W tym celu możemy
wykorzystać statystyki opisowe i wizualizacje (opisane w laboratorium
6), jak na przykład funkcja summary()
, histogramy lub
wykresy pudełkowe.
Funkcja descdist()
z pakietu fitdistrplus
jest bardzo użytecznym narzędziem do dopasowania odpowiedniego rozkładu
do danych. Funkcja ta generuje wykres i wypisuje informacje, które
pomagają w ocenie, jak dobrze dane empiryczne pasują do wybranych
rozkładów teoretycznych.
3.2 Estymacja parametrów rozkładów
W praktyce często nie generujemy sami rozkładu ze znanymi parametrami, a raczej otrzymujemy obserwacje i chcemy dopasować najlepszy rozkład z najlepiej dobranymi parametrami. Wyznaczanie nieznanych parametrów rozkładów statystycznych odbywa się za pomocą różnych metod estymacji. Przedstawimy kilka najczęściej stosowanych metod.
3.2.1 Metoda największej wiarygodności (MLE)
Polega ona na znalezieniu wartości parametrów, które maksymalizują funkcję wiarygodności, tj. prawdopodobieństwo uzyskania obserwowanych danych przy danych parametrach.
W R możemy użyć funkcji fitdist()
z biblioteki
fitdistrplus
. Pierwszy argumentem funkcji
fitdistr()
jest wektor obserwacji, na bazie którego
wykonana będzie estymacja, a drugim powinna być nazwa rozkładu. Trzecim
argumentem jest nazwa metody jaką chcemy użyć do estymacji parametru.
Domyślnie jest to metoda największej wiarygodności. W rezultacie
otrzymamy obiekt klasy fitdist
, który zawiera estymowane
parametry rozkładu (estimate) i błąd standardowy dla tych parametrów
(Std. Error).
## Fitting of the distribution ' norm ' by maximum likelihood
## Parameters:
## estimate Std. Error
## mean 0.4419066 0.2857308
## sd 2.8573081 0.2020421
3.2.2 Metoda Momentów
Metoda momentów polega na dopasowaniu teoretycznych momentów rozkładu do momentów empirycznych (obliczonych na podstawie danych), poprzez odpowiednie wyznaczenie parametrów rozkładu.
Aby użyć ją w R wystarczy użyć tej funkcji fitdist()
z
argumentem method="mme"
.
## Fitting of the distribution ' pois ' by matching moments
## Parameters:
## estimate Std. Error
## lambda 4.93 2.22036
3.3 Ocena dopasowania rozkładu
Ocenę dopasowania można dokonać za pomocą:
testów dopasowania (o tym w następnym laboratorium),
kryteriów informacyjnych i statystyk dopasowania,
wykresów QQ-plot.
3.3.1 Kryteria informacyjne i statystyki dopasowania
Kryteria informacyjne, takie jak AIC (Akaike Information Criterion) i BIC (Bayesian Information Criterion), są używane do oceny jakości dopasowania modeli statystycznych, uwzględniając złożoność modelu. Pomagają one w wyborze najlepszego modelu spośród konkurencyjnych modeli, karząc za nadmierne dopasowanie (overfitting).
Niższe wartości AIC i BIC wskazują na lepsze dopasowanie modelu przy uwzględnieniu złożoności modelu.
Statystyki dopasowania są miarami używanymi do oceny, jak dobrze teoretyczny rozkład pasuje do danych empirycznych. Wyróżniamy między innymi:
Statystyka Kołmogorowa-Smirnowa mierzy maksymalną różnicę między dystrybuantą teoretyczną a empiryczną. Niższa wartość oznacza lepsze dopasowanie.
Statystyka Craméra-von Misesa mierzy sumę odległości między dystrybuantą teoretyczną a empiryczną. Niższa wartość oznacza lepsze dopasowanie.
Statystyka Andersona-Darlinga mierzy dopasowanie z większym naciskiem na krańce rozkładu. Niższe wartości wskazują na lepsze dopasowanie.
Funkcja gofstat()
z biblioteki fitdistrplus
dostarcza zestawienie różnych statystyk dopasowania dla każdego z
dopasowanych rozkładów. Wystarczy, że jako argument podamy obiekt klasy
fitdist
lub listę obiektów fitdist
.
Rozważmy poniższy przykład:
library(fitdistrplus)
set.seed(324)
Y_dane <- rgamma(100, 1,2)
fit1 <- fitdist(Y_dane, "norm") # Dopasowanie rozkładu normalnego
fit2 <- fitdist(Y_dane, "exp") # Dopasowanie rozkładu wykładniczego
# Porównanie jakości dopasowania obu rozkładów
gofstat(list(fit1, fit2), fitnames = c("Norm", "Exp"))
## Goodness-of-fit statistics
## Norm Exp
## Kolmogorov-Smirnov statistic 0.1410153 0.07943591
## Cramer-von Mises statistic 0.5928108 0.04883928
## Anderson-Darling statistic 3.6702547 0.28922675
##
## Goodness-of-fit criteria
## Norm Exp
## Akaike's Information Criterion 124.5233 56.14095
## Bayesian Information Criterion 129.7337 58.74612
W rezultacie otrzymujemy, że rozkład wykładniczy znacznie lepiej opisuje dane niż rozkład normalny, zarówno pod względem statystyk dopasowania, jak i kryteriów informacyjnych, ponieważ dla wszystkich przyjmował mniejsze wartości.
3.3.2 Wykresy QQ plot
QQ-plot (Quantile-Quantile plot) jest narzędziem do wizualnej oceny, jak dobrze dane empiryczne dopasowują się do wybranego teoretycznego rozkładu. Wykres ten porównuje kwantyle empiryczne danych z kwantylami teoretycznymi.
Możemy to zrobić ręcznie postępując według poniższych kroków:
Posortuj zbiór danych w kolejności rosnącej.
Wybierz rozkład wraz z parametrami, który chcesz sprawdzić, czy pasuje do posiadanego zbioru danych. Można użyć na przykład funkcji
fitdist()
.Oblicz kwantyle teoretyczne dla wybranego rozkładu.
Następnie narysuj wykres, dla którego na osi poziomej będą teoretyczne wartości kwantyli, a na osi pionowej posortowane obserwacje z kroku 1.
Jeśli punkty na wykresie znajdują się w przybliżeniu wzdłuż linii prostej, sugeruje to, że zestaw danych jest zgodny z założonym rozkładem. Odchylenia od linii prostej wskazują na odstępstwa od założonego rozkładu i wymagają dalszych badań.
y <- rgamma(200, shape = 2, rate = 0.5)
y_sorted <- sort(y)
# parametry dla rozkładu log-normal
y_fit=fitdist(y, distr = "lnorm")
# Obliczenie teoretycznych kwantyli dla rozkładu log normal
p <- ppoints(length(y)) # Generuje równomiernie rozłożone wartości kwantyli
theoretical_quantiles <- qlnorm(p, meanlog = y_fit$estimate[1], sdlog = y_fit$estimate[2])
plot( theoretical_quantiles, y_sorted)
abline(a=0,b=1,col="red")
Możemy również użyć funkcji qqcomp()
z biblioteki
fitdistrplus
, która działa na obiektach klasy
fitdist
. Jako argument przekazujemy obiekt klasy
fitdist
lub listę obiektów klasy fitdist
.
Jeśli punkty na QQ plot układają się wzdłuż linii prostej \(y=x\), możemy uznać, że dopasowanie jest
dobre. Jeśli nie, może to sugerować, że wybrany rozkład nie jest
odpowiedni dla naszych danych.
y <- rgamma(200, shape = 2, rate = 0.5)
y_fit=fitdist(y, distr = "lnorm")
qqcomp(y_fit) # widzimy, że zdecydowanie pod koniec obserwacje nie leżą na prostej, zatem nie jest to prawdopodobnie dobry rozkład.
4 Przykład - Analiza danych
Ładujemy zbiór danych faithful
z biblioteki
fitdistrplus
. Zbiór danych zapiera informacje o czasie
trwania erupcji (w minutach) dla gejzeru Old Faithful w Parku Narodowym
Yellowstone, Wyoming, USA oraz czasami oczekiwań (w minutach) między
erupcjami. Wykonaj poniższy kod.
library(fitdistrplus)
attach(faithful)
summary(faithful)
value <- eruptions
hist(value, breaks = 30)
boxplot(value) # Zauważmy, że dużo wartości odstających. Zatem, prawdopodobnie będzie to musiał być rozkład który jest zdefiniowany tylko dla wartości dodatnich i ma `ciężki` ogon.
descdist(value, discrete = FALSE) # Funkcja pomagająca w dopasowaniu rozkładu do danych
normalize <- function(x) {
return((x - min(x)) / (max(x) - min(x)))
}
# Rozkład beta jest określony na przedziale otwartym (0,1) więc musimy wykonać normalizacje danych i przesunąć delikatnie skrajne wartości tak aby był to przedział otwarty.
normalized_value <- normalize(value)
normalized_value[normalized_value==0]=0.00001
normalized_value[normalized_value==1]=0.99999
fit_beta <- fitdist(normalized_value, "beta")
plot(fit_beta) # Wyświetla wykres dopasowania
fit_unif <- fitdist(normalized_value, "unif")
plot(fit_unif) # Wyświetla wykres dopasowania
#Ocena dopasowania
gof_results <- gofstat(list(fit_beta, fit_unif), fitnames = c("Beta", "Jedostajny"))
print(gof_results)
Wnioski: Rozkład beta jest bardziej odpowiedni dla danych na podstawie kryteriów informacyjnych, ponieważ AIC, jak i BIC są niższe dla rozkładu beta, niż dla rozkładu jednostajnego.
Dopasowanie rozkładu do prawdziwych danych jest często wyzwaniem z wielu powodów. Dane empiryczne mogą mieć złożone struktury, takie jak wielomodalność (może oznaczać, że dane mogą pochodzić z mieszaniny kilku różnych rozkładów), asymetrię (która często utrudnia dopasowanie rozkładów symetrycznych, takich jak normalny), czy obecność wartości odstających (mogące znacząco wpływać na dopasowanie modelu, prowadząc do nieadekwatnych parametrów), które utrudniają dopasowanie prostych modeli teoretycznych.
Zatem można rozpatrywać:
Mieszanki rozkładów (mixture models), czyli kombinacje kilku rozkładów, które razem modelują dane.
W niektórych przypadkach, transformacja danych może uprościć dopasowanie. Przykłady to transformacja Box-Cox lub log-transformacja.
Po dopasowaniu modelu, analiza reszt może pomóc zidentyfikować problemy z dopasowaniem i wskazać kierunki do dalszej poprawy modelu.
W niektórych przypadkach przydatne może się okazać zastosowanie metod nieliniowych, takich jak krzywe nieliniowe lub regresja nieliniowa.
4.1 Zadanie - analiza danych
Wykonaj podobną analizę danych jak w powyższym przykładzie dla
wybranych danych ilościowych ze zbioru danych daneSoc
z
biblioteki Przewodnik
. Napisz na koniec wniosek z wykonanej
analizy.
Podpowiedź: zaczniemy od danych, dla każdej zmiennej ds
,
dr
, dw
przeprowadzić osobną analizę: