Upload files to "Przewodnik_studenta_lab"
Modelowanie przestrzeni probabilistycznych w R
This commit is contained in:
parent
2c99b7f277
commit
5bebeef29c
451
Przewodnik_studenta_lab/01LRAP_przewodnik.ipynb
Normal file
451
Przewodnik_studenta_lab/01LRAP_przewodnik.ipynb
Normal file
@ -0,0 +1,451 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d063c244-0aaa-4b61-874c-5b7968b15d80",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Modelowanie przestrzeni probabilistycznych w języku R"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "5641f18b-be0b-43b5-ae95-caf4e2899a22",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Język R zawiera różne pakiety, które są przydatne, gdy chcemy modelować doświadczenia losowe. Dzisiaj omówimy kilka z nich - skupimy się w szczególności na funkcjach, które pozwalają generować obiekty kombinatoryczne, tworzyć proste przestrzenie probabilistyczne i symulować doświadczenia losowe."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "aa5a256e-e245-4f50-9233-cad6a8385803",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Generowanie obiektów kombinatorycznych\n",
|
||||
"\n",
|
||||
"Funkcje `permutations` oraz `combinations` z pakietu `gtools` pozwalają w prosty sposób generować wariacje i kombinacje.\n",
|
||||
"\n",
|
||||
"*\tSposób działania:\n",
|
||||
"\n",
|
||||
" `permutations(n, r, v=1:n, set=TRUE, repeats.allowed=FALSE)`\n",
|
||||
" \n",
|
||||
"\t`combinations(n, r, v=1:n, set=TRUE, repeats.allowed=FALSE)`\n",
|
||||
"\t\n",
|
||||
" * `n` - liczba różnych elementów do wyboru;\n",
|
||||
" * `r` - liczba elementów, które chcemy wybrać;\n",
|
||||
" * `v` - wektor przechowujący elementy do wyboru. Jeśli długość tego wektora będzie mniejsza niż `n`, to zostanie zwrócony błąd. Jeśli natomiast długość wektora będzie większa niż `n`, to końcowe elementy wektora `v` zostaną zignorowane; \n",
|
||||
" * Jeśli wektor `v` zawiera duplikaty i chcemy je usunąć, to powinniśmy ustawić opcję `set=TRUE`. Jeśli nie chcemy usuwać duplikatów, to powinnniśmy ustawić opcję `set=FALSE`;\n",
|
||||
" * `repeats.allowed` - parametr, który ustala czy dokonujemy wyborów z powtórzeniami;\n",
|
||||
"\n",
|
||||
"* Funkcja `permutations` generuje wariacje, a funkcja `combinations` kombinacje. Od wartości parametru `repeats.allowed` zależy, czy dopuszczamy powtórzenia.\n",
|
||||
" \n",
|
||||
"**Uwaga:** Poniższe przykłady wymagają zainstalowania i załadowania pakietu `gtools`. Niestety, ani ten pakiet, ani pozostałe pakiety, które będą omawiane w tym przewodniku, nie są domyślnie dostępne w wersji online Jupytera, dlatego poniższe przykłady mogą wymagać przekopiowania instrukcji do RStudio. \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d32680e5-7ac3-41b3-a736-636ef6409ef9",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 1**\n",
|
||||
"\n",
|
||||
"W urnie znajdują się cztery kule o ponumerowane liczbami ze zbioru $\\{1,2,3,4\\}$. Losujemy trzykrotnie jedną kulę. Wypisz wszystkie możliwe wyniki tego doświadczenia, jeśli losowanie odbywa się:\n",
|
||||
"\n",
|
||||
"* ze zwracaniem,\n",
|
||||
"* bez zwracania."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "a866c45b-928f-4593-bf91-3d3d7879774f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Installing package into ‘/usr/local/lib/R/site-library’\n",
|
||||
"(as ‘lib’ is unspecified)\n",
|
||||
"\n",
|
||||
"Warning message in install.packages(\"gtools\"):\n",
|
||||
"“'lib = \"/usr/local/lib/R/site-library\"' is not writable”\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "ERROR",
|
||||
"evalue": "Error in install.packages(\"gtools\"): unable to install packages\n",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"Error in install.packages(\"gtools\"): unable to install packages\nTraceback:\n",
|
||||
"1. install.packages(\"gtools\")",
|
||||
"2. stop(\"unable to install packages\")"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"install.packages(\"gtools\")\n",
|
||||
"library(gtools)\n",
|
||||
"x = 1:4\n",
|
||||
"\n",
|
||||
"# Generujemy wyniki losowania ze zwracaniem\n",
|
||||
"wyniki1 = permutations(4, 3, x, repeats.allowed=TRUE)\n",
|
||||
"print(wyniki1)\n",
|
||||
"\n",
|
||||
"# Generujemy wyniki losowania bez zwracania\n",
|
||||
"wyniki2 = permutations(4, 3, x, repeats.allowed=FALSE)\n",
|
||||
"print(wyniki2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "9cdce386-8a41-4497-bd17-6b338f3b547c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 2**\n",
|
||||
"\n",
|
||||
"Losujemy jednocześnie dwie kule z urny, w której znajdują $3$ kule białe i $2$ czarne. Jakie jest prawdopodobieństwo, że wylosujemy dwie białe kule?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "7b78a0fb-f1cd-4d64-bf5b-5d0d0f2887e4",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Zaczniemy od wygenerowania wszystkich możliwości\n",
|
||||
"kule = c('b', 'b', 'b', 'c', 'c')\n",
|
||||
"wszystkie = combinations(5, 2, kule, set=FALSE)\n",
|
||||
"print(wszystkie)\n",
|
||||
"\n",
|
||||
"# Zwróćmy uwagę, że dzięki ustawieniu parametru set=FALSE, funkcja traktuje kule opisane tymi samymi literami jako rozróżnialne. Gdybyśmy ustawili set=TRUE, to w wektorze kule powinniśmy nadać każdej kuli inną nazwę\n",
|
||||
"biale = combinations(3, 2, kule, set=FALSE)\n",
|
||||
"print(biale)\n",
|
||||
"\n",
|
||||
"# Zwróćmy uwagę, że ponieważ n=3, funkcja uwzględnia tylko 3 pierwsze elementy wektora kule\n",
|
||||
"# Aby policzyć prawdopodobieństwo wylosowania samych białych kul, wystarczy policzyć liczbę wierszy macierzy wszystkie i biale. Możemy do tego użyc polecenia nrow\n",
|
||||
"p = nrow(biale)/nrow(wszystkie)\n",
|
||||
"paste(\"Prawdopodobieństwo wylosowania dwóch białych kul:', p)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "df5f6b1e-cc51-416b-ae65-8e09a083831d",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Generowanie przestrzeni probabilistycznych\n",
|
||||
"\n",
|
||||
"Najważniejsze funkcje, z których będziemy korzystać na tych zajęciach znajdują się w pakiecie `prob`. W celu wygenerowania przestrzeni probabilistycznej możemy użyć następującego polecenia:\n",
|
||||
"\n",
|
||||
"`probspace(x, probs)`,\n",
|
||||
"\n",
|
||||
"gdzie `x` oznacza możliwe wyniki eksperymentu losowego, a `probs` to wektor odpowiadających im prawdopodobieństw. Jeśli nie podamy wektora `probs`, to domyślnie każdemu zdarzeniu elementarnemu zostanie przypisane takie samo prawdopodobieństwo, czyli będziemy mieli do czynienia z przestrzenią klasyczną. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "86adc4b9-a0ec-43bc-bdcb-f349364a5292",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 3**\n",
|
||||
"\n",
|
||||
"Rzucamy jeden raz standardową, sześcienną kostką do gry. Wygeneruj przestrzeń probabilistyczną odpowiadającą temu doświadczeniu losowemu."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "7c834a09-aa05-4095-87e4-c6d953498882",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Installing package into ‘/usr/local/lib/R/site-library’\n",
|
||||
"(as ‘lib’ is unspecified)\n",
|
||||
"\n",
|
||||
"Warning message in install.packages(\"prob\"):\n",
|
||||
"“'lib = \"/usr/local/lib/R/site-library\"' is not writable”\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "ERROR",
|
||||
"evalue": "Error in install.packages(\"prob\"): unable to install packages\n",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"Error in install.packages(\"prob\"): unable to install packages\nTraceback:\n",
|
||||
"1. install.packages(\"prob\")",
|
||||
"2. stop(\"unable to install packages\")"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"install.packages(\"prob\")\n",
|
||||
"library(prob)\n",
|
||||
"# Możemy założyć, że wszystkie wyniki rzutu kostką są równoprawdopodobne, więc nie jest konieczne podawanie wektora prawdopodobieństw prob\n",
|
||||
"kostki1 = probspace(1:6)\n",
|
||||
"print(kostki1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3090320c-cd09-4129-bea8-b2d1da70f8a6",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 4**\n",
|
||||
"\n",
|
||||
"Ania i Bartek grają w grę \"Losowe szlaki\". Prawdopodobieństwo wygranej Ani wynosi $0.3$, wygranej Bartka to $0.5$, a remisu $0.2$. Wygeneruj przestrzeń probabilistyczną odpowiadającą temu doświadczeniu losowemu. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "0b0b900b-f0bc-43d3-be33-addbabf287f9",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "ERROR",
|
||||
"evalue": "Error in probspace(c(\"Ania\", \"Bartek\", \"remis\"), c(0.3, 0.5, 0.2)): could not find function \"probspace\"\n",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"Error in probspace(c(\"Ania\", \"Bartek\", \"remis\"), c(0.3, 0.5, 0.2)): could not find function \"probspace\"\nTraceback:\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Ponieważ w tym przypadku prawdopodobieństwa zdarzeń elementarnych są różne, to musimy zdefiniować wektor prawdopodobieństw, któego wyrazy sumują się do 1.\n",
|
||||
"gra = probspace(c('Ania', 'Bartek', 'remis'), c(0.3, 0.5, 0.2))\n",
|
||||
"print(gra)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "70e3a6e4-96ff-4b46-99e9-0af321009051",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Wbudowane przestrzenie probabilistyczne\n",
|
||||
"\n",
|
||||
"Podczas zajęć z rachunku prawdopodobieństwa będziemy regularnie omawiać przykłady i zadania związana z pewnymi klasycznymi doświadczeniami losowymi. Niektórym z nich poświęcone są wbudowane funkcje w programie R, które przedstawiono poniżej:\n",
|
||||
"\n",
|
||||
"* `tosscoin(times, makespace=FALSE)` - przestrzeń probabilistyczna odpowiadająca wielokrotnemu rzutowi symetryczną monetą. Parametr `times` oznacza liczbę rzutów. Jeśli `makespace=TRUE`, to każdemu możliwemu wynikowi rzutu monetą zostanie przypisane takie samo prawdopodobieństwo. W przeciwnym przypadku zostaną wygenerowane wszystkie możliwe wyniki rzutów, ale nie zostaną im przypisane prawdopodobieństwa. Parametr `makespace` będzie działał w analogiczny sposób we wszystkich niżej wymienionych funkcjach.\n",
|
||||
"* `rolldie(times, nsides=6, makespace=FALSE)` - przestrzeń probabilistyczna odpowiadająca wielokrotnemu rzutowi symetryczną kostką. Parametr `times` oznacza liczbę rzutów, a `nsides` liczbę ścianek kostki.\n",
|
||||
"* `cards(jokers=FALSE, makespace=FALSE)` - przestrzeń probabilistyczna odpowiadająca losowaniu jednej karty ze standardowej talii $52$ kart. Jeśli parametr `jokers` ma wartość `TRUE`, to dodatkowo w talii uwzględnione są dwa jokery.\n",
|
||||
"* `roulette(european=FALSE, makespace=FALSE)` - przestrzeń probabilistyczna odpowiadająca grze w ruletkę. Parametr `european` przyjmuje wartość *TRUE*, jeśli mamy do czynienia z ruletką typu europejskiego ($37$ pól). W przeciwnym przypadku mamy do czynienia z ruletką typu amerykańskiego ($38$ pól).\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "21de4865-9ad9-4327-a3ed-f165c1b303fc",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 5**\n",
|
||||
"\n",
|
||||
"Wygeneruj przestrzeń probabilistyczną odpowiadającą doświadczeniu losowemu polegającemu na:\n",
|
||||
"* losowaniu jednej karty z talii $52$ kart,\n",
|
||||
"* trzech rzutach sześcienną kostką."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "afbd23da-5b20-486e-856e-2123ee245dfe",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Losowanie 1 karty\n",
|
||||
"karta = cards(makespace=TRUE)\n",
|
||||
"print(karta)\n",
|
||||
"\n",
|
||||
"# Trzy rzuty kostką\n",
|
||||
"kostki3 = rolldie(3, nsides=6, makespace=TRUE)\n",
|
||||
"print(kostki3)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "0493e671-5fb5-4de6-ae73-650f0158d5f7",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Obliczanie praawdopodobieństwa\n",
|
||||
"\n",
|
||||
"Do obliczania prawdopodobieństwa zdarzenia we wcześniej zdefiniownej przestrzeni probabilistycznej możemy użyć polecenia `Prob`. Istnieją dwa sposoby stosowania tego polecenia:\n",
|
||||
"* Jeśli `A` to podzbiór zbioru zdarzeń elementarnych pewnej przestrzeni probabilistycznej, to `Prob(A)` zwróci prawdopodobieństwo zdarzenia `A`. W tym przypadku do wyznaczenia zdarzenia `A` możemy użyć polecenia `subset(Y,...)`, gdzie `Y` oznacza odpowiednią przestrzeń probabilistyczną, a w miejscu '...' podjemy formułę logiczną opisujące interesujące nas zdarzenie. Możemy też wyznaczyć podzbiór *A* stosując wprost odpowiednie odwołanie do elementów zbioru zdarzeń elementarnych przestrzeni *Y*.\n",
|
||||
"* Jeśli `Y` jest przestrzenią probabilistyczną, to stosujemy polecenie `Prob(Y, event)`, gdzie w miejscu `event` należy podać formułę logiczną opisujące interesujące nas zdarzenie. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "70938d4e-bf71-4ea4-bea6-bc78807169f4",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 6**\n",
|
||||
"\n",
|
||||
"Losujemy jedną kartę z talii 52 kart. Oblicz prawdopodobieństwo, że wylosowana karta jest kierem."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "f403e1c0-5807-43f7-987d-41de704a27ba",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "ERROR",
|
||||
"evalue": "Error in eval(expr, envir, enclos): object 'karta' not found\n",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"Error in eval(expr, envir, enclos): object 'karta' not found\nTraceback:\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Wykorzystamy zdefiniowaną wcześniej przestrzeń karta\n",
|
||||
"# Zwróćmy uwagę, że kiery znajdują się w wierszach od 27 do 39\n",
|
||||
"kiery = karta[27:39, ]\n",
|
||||
"print(kiery)\n",
|
||||
"p = Prob(kiery)\n",
|
||||
"print(p)\n",
|
||||
"\n",
|
||||
"# Alternatywnie, możemy wyznaczyć wszystkie kiery stosując polecenie subset i odpowiedni warunek logiczny\n",
|
||||
"# Tutaj korzystamy z tego, że każda karta ma swoją figurę (label) oraz kolor (suit)\n",
|
||||
"kiery2 = subset(karta, suit=='Heart')\n",
|
||||
"print(kiery2)\n",
|
||||
"p2 = Prob(kiery2)\n",
|
||||
"print(p2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "25fd0284-cd44-4468-b160-ec9ec4fd556f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Gdy chcemy wyznaczyć bardziej skomplikowane zdarzenia, pomocne mogą być następujące polecenia związane z działaniami na zbiorach:\n",
|
||||
"\n",
|
||||
"* `union(A, B)` - suma zbiorów $A$ i $B$,\n",
|
||||
"* `intersect(A, B)` - część wspólna zbiorów $A$ i $B$,\n",
|
||||
"* `setdiff(A, B)` - różnica zbiorów $A$ i $B$ (tzn. elementy, które są w $A$, ale nie w $B$)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "aba30f8b-19db-4ebd-b9a4-5bd2d424a0a5",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 7**\n",
|
||||
"\n",
|
||||
"Rzucamy trzykrotnie sześcienną kostką. Oblicz prawdopodobieństwo następujących zdarzeń:\n",
|
||||
"* $A$ - wypadną co najmniej dwie szóstki,\n",
|
||||
"* $B$ - wypadną mniej niż dwie szóstki."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "8ce6c290-c02c-454e-bf01-356ecb1dd95e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Wyykorzystamy zdefiniowaną wcześniej przestrzeń kostki3\n",
|
||||
"# Zwróćmy uwagę, że zdarzenie A oznacza, że w pierwszym i drugim rzucie były szóstki LUB w pierwszym i trzecim rzucie były szóstki LUB w drugim i trzecim rzucie były szóstki\n",
|
||||
"# Możemy wyznaczyć prawdopodobieństwo A bezpośrednio przez użycie polecenia prob i odpowiedniej formuły logicznej\n",
|
||||
"pA = Prob(kostki3, (X1==6&X2==6)|(X1==6&X3==6)|(X2==6&X3==6))\n",
|
||||
"print(pA)\n",
|
||||
"# Alternatywnie, możemy wyznaczyć najpierw trzy pomocnicze zdarzenia i na końcu wyznaczyć ich sumę\n",
|
||||
"A1 = subset(kostki3, X1==6&X2==6)\n",
|
||||
"A2 = subset(kostki3, X1==6&X3==6)\n",
|
||||
"A3 = subset(kostki3, X2==6&X3==6)\n",
|
||||
"A = union(A1, union(A2, A3))\n",
|
||||
"pA = Prob(A)\n",
|
||||
"print(pA)\n",
|
||||
"\n",
|
||||
"# Zauważmy teraz, że zdarzenie B jest zdarzeniem przeciwnym do zdarzenia A\n",
|
||||
"B = setdiff(kostki3, A)\n",
|
||||
"pB = Prob(B)\n",
|
||||
"print(pB)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8ab57858-c7fe-4e58-b7aa-f015587cf030",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Symulacja doświadczeń losowych\n",
|
||||
"\n",
|
||||
"Do symulowania wyników doświadczenia losowego służy funkcja `sim(X, ntrials)`, gdzie `X` jest przestrzenią probabilistyczną, a `ntrials` liczbą powtórzeń eksperymentu losowego.\n",
|
||||
"\n",
|
||||
"Z drugiej strony, jeśli wielokrotnie powtórzymy pewne doświadczenie losowe, to możemy na podstawie wyników spróbować wyznaczyć przestrzeń probabilistyczną. W języku R można to osiągnąć używając polecenia `empirical(X)`, gdzie `x` zawiera wyniki doświadczenia losowego. Polecenie to szacuje prawdopodobieństwa zdarzeń elementarnych jako ich relatywną częstość występowania."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "59e3c637-edbf-4236-84fb-e6831c89642b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Przykład 8**\n",
|
||||
"\n",
|
||||
"Ania i Bartek grają w grę ,,Losowe szlaki''. Prawdopodobieństwo wygranej Ani wynosi $0.3$, wygranej Bartka to $0.5$, a remisu $0.2$. Wykonaj symulacją $100$ powtórzeń tego eksperymentu losowego. Następnie porównaj rozkład wylosowanych wartości z ich rzeczywistym rozkładem."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "32c5fae7-e929-40e8-82ac-9bfee1d4edce",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Użyjemy zdefiniowanej wcześniej przestrzeni gra\n",
|
||||
"# Wykonujemy symulację\n",
|
||||
"wyniki = sim(gra, 100)\n",
|
||||
"print(wyniki)\n",
|
||||
"\n",
|
||||
"# Możemy teraz wyznaczyć rozkład wyników\n",
|
||||
"gra_bis = empirical(wyniki)\n",
|
||||
"print(gra_bis)\n",
|
||||
"\n",
|
||||
"# Możemy też porównać otrzymany rozkład z rozkładem pierwotnym na wykresie\n",
|
||||
"w = rbind(gra$probs, gra_bis$probs)\n",
|
||||
"barplot(w,names.arg=gra$x,beside=TRUE,col=c('lightblue','darkred'),xlab='Wyniki gry',ylab='Prawdopodobieństwo', main='Porównanie rozkładu rzeczywistego i wynikającego z symulacji')\n",
|
||||
"legend(7,0.5,c('Rozkład rzeczywisty','Symulacja'),col=c('lightblue','darkred'),pch=15)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "6e7d8552-93e9-495c-bdee-334b95bce0a8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Bibliografia\n",
|
||||
"\n",
|
||||
"Dokumentację dotyczącą omawianych pakietów można znaleźć na stronach:\n",
|
||||
"* [gtools](https://www.rdocumentation.org/packages/gtools/versions/3.9.5)\n",
|
||||
"* [prob](https://www.rdocumentation.org/packages/prob/versions/1.0-1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "8d69aaec-05d9-4507-bfec-bb1ea926ec32",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "R",
|
||||
"language": "R",
|
||||
"name": "ir"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "r",
|
||||
"file_extension": ".r",
|
||||
"mimetype": "text/x-r-source",
|
||||
"name": "R",
|
||||
"pygments_lexer": "r",
|
||||
"version": "4.2.1"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
Loading…
Reference in New Issue
Block a user