diff options
| Commit | 80afdfae71ef31272f240c9701f7a0e67d42d23a (patch) | |
|---|---|---|
| Author | 2024-05-28 21:43:30 +0300 | |
| Committer | 2024-05-28 21:43:30 +0300 | |
| Files | 2c2ceeecd7bb30e08ecb067ded08bf383a74bf87 | |
| uni-projects-80afdfae71ef31272f240c9701f7a0e67d42d23a.tar uni-projects-80afdfae71ef31272f240c9701f7a0e67d42d23a.tar.gz uni-projects-80afdfae71ef31272f240c9701f7a0e67d42d23a.zip | ||
| Parent | d6ae2ff6cfbf36b5985ee923b751707d27993915 (diff) | |
[S/hw2] Solved homework
5 files changed, 62 insertions, 70 deletions
| -rw-r--r-- | Year 3/Statistics/hw2-ex1.png | bin | 0 -> 12230 bytes | |||
| -rw-r--r-- | Year 3/Statistics/hw2-ex2.png | bin | 0 -> 13351 bytes | |||
| -rw-r--r-- | Year 3/Statistics/hw2.pdf | bin | 0 -> 72226 bytes | |||
| -rw-r--r-- | Year 3/Statistics/hw2.r | 59 | ||||
| -rw-r--r-- | Year 3/Statistics/hw2.tex | 73 |
diff --git a/Year 3/Statistics/hw2-ex1.png b/Year 3/Statistics/hw2-ex1.png Binary files differnew file mode 100644 index 0000000..04ae550 --- /dev/null +++ b/Year 3/Statistics/hw2-ex1.png diff --git a/Year 3/Statistics/hw2-ex2.png b/Year 3/Statistics/hw2-ex2.png Binary files differnew file mode 100644 index 0000000..a4e27d3 --- /dev/null +++ b/Year 3/Statistics/hw2-ex2.png diff --git a/Year 3/Statistics/hw2.pdf b/Year 3/Statistics/hw2.pdf Binary files differnew file mode 100644 index 0000000..6346c9b --- /dev/null +++ b/Year 3/Statistics/hw2.pdf diff --git a/Year 3/Statistics/hw2.r b/Year 3/Statistics/hw2.r index bc207bf..03daba8 100644 --- a/Year 3/Statistics/hw2.r +++ b/Year 3/Statistics/hw2.r @@ -1,57 +1,40 @@ -alpha <- 0.9 # TODO, каква стойност трябва да е - -ex1 <- function() { +ex1 <- function(ns = 1:6 * 10) { check_null_hyp <- function(n, iters = 10000) { - accepts <- 0 - for (i in 1:iters) { + accepts <- sum(sapply(1:iters, function(i) { W1 <- rexp(n, 1) W2 <- rexp(n, 1) - X <- rowSums(expand.grid(W1, W2)) - if (shapiro.test(X)$statistic >= alpha) { # TODO, провери дали е > - accepts <- accepts + 1 - } - } - cat("Заключението е вярно през", (accepts / ex1_iters) * 100, "процента от времето\n") - return (rep(n, each=((accepts / ex1_iters) * 100))) + X <- W1 + W2 + return (shapiro.test(X)$p.value > 0.05) + })) + return (accepts / iters) } + + ys <- sapply(ns, check_null_hyp) - all <- c() - for (n in 1:6 * 10) { - all <- append(all, check_null_hyp(n)) - } - hist(all, breaks=(0:6 * 10)) + plot(ns, ys, type="l", xlab="n", ylab="Съотношение на вярност на Шапиро-Уилк") + text(ns + 1, ys + 0.01, ys) } ex1() -ex2 <- function(greens = 2, whites = 3, yellows = 5) { +ex2 <- function(greens = 2, whites = 3, yellows = 5, ns = c(50, 100, 200, 500)) { balls <- append(append(rep("green", greens), rep("white", whites)), rep("yellow", yellows)) check_hyp <- function(n, iters=10000) { - true_hyp <- 0 - for (i in 1:iters) { - sampled_greens <- 0 + accepts <- sum(sapply(1:iters, function(i) { + sampled_greens <- sum(sapply(1:n, function(s) { + return (sample(balls, 1, replace=TRUE) == "green") + })) - for (s in 1:n) { - if (sample(balls, 1, replace=TRUE) == "green") { - sampled_greens <- sampled_greens + 1 - } - } - - if (sampled_greens / n == 1/5) { - true_hyp <- true_hyp + 1 - } - } + return (prop.test(sampled_greens, n, 1/5)$p.value > 0.05) + })) - return (rep(n, each=(true_hyp / iters * 100))) + return (accepts / iters) } - all <- c() - for (n in c(50, 100, 200, 500)) { - all <- append(all, check_hyp(n)) - } - print(all) - hist(all, breaks=c(0, 50, 100, 200, 500)) + ys <- sapply(ns, check_hyp) + plot(ns, ys, type="l", xlab="n", ylab="Съотношение на вярност на заключението") + text(ns, ys, ys) } ex2()
\ No newline at end of file diff --git a/Year 3/Statistics/hw2.tex b/Year 3/Statistics/hw2.tex index 5d0c0c3..6fbeeb0 100644 --- a/Year 3/Statistics/hw2.tex +++ b/Year 3/Statistics/hw2.tex @@ -37,6 +37,8 @@ \usepackage{enumitem} \setlist[enumerate]{label=\arabic*.} +\newcommand{\indep}{\perp \!\!\! \perp} + \usepackage[pdfauthor={Камен Димитров Младенов, }, pdftitle={Решения на задачи от Домашно 1 по ВИС практикум}, pdfsubject={}, @@ -54,52 +56,59 @@ \paragraph{Задача 1.} -Имаме $24$ ябълки, от които $4$ са червиви. Разпределяме ябълките в $4$ кутии, така че да са с равен брой ябълки. С помощта на симулации намерете приближение на вероятността във всяка кутия да има по една червива ябълка. +Генерирайте стойности $x_1, x_2, ..., x_n$ на случайна величина $X = W_1 + W_2$, където \\ $W_i \sim \text{Exp}(1)$ и +$W_1 \indep W_2$. Проверете нулевата хипотезата, че генерираните данни са от нормално разпределение с +помощта на теста на Шапиро–Уилк (Shapiro–Wilk). Повторете $10000$ пъти за \\ $n = 10, 20, 30, 40, 50, 60$. +Колко често заключението на теста е вярно? Представете чрез подходяща графика честотата на вярно +заключение в зависимост от $n$. \subparagraph{Решение} \hfill -\lstinputlisting[language=R, firstline=1, lastline=19, caption=Сорс-код]{hw1.r} +\lstinputlisting[language=R, firstline=1, lastline=18, caption=Сорс-код]{hw2.r} -\begin{lstlisting}[language=R, caption=Получен резултат] -[1] 0.12 -\end{lstlisting} +Заключението е вярно през средно $\sim 27.8\%$ от времето. -Вероятността във всяка кутия да има по една червива ябълка е приблизително 12\%. +Графика на честотата на вярно заключение в зависимост от $n$: \newline +\includegraphics[scale=0.7]{hw2-ex1.png} -\vfill +\newpage \paragraph{Задача 2.} -За $\,n=30, 120, 200\,$ генерирайте случайни числа $\,x_1, \ldots, x_n\,$ от експоненциално разпределение с параметър $\,\lambda=1/5\,$ и пресметнете $\,\overline{x} = (x_1 + \ldots + x_n)/n$. -Повторете $\,N=10000\,$ пъти и ще получите $\,\overline{x}_1, \ldots, \overline{x}_{10000}$. Нека - -$$ \widehat{F}(t) = \frac{1}{N} \sum_{i=1}^{N} \mathbb{I}(\overline{x}_i \leq t) ,$$ -където $\,\mathbb{I}(a)\,$ е единица, ако $\,a\,$ е вярно и нула, в противен случай. - -\begin{itemize} -\item Направете графика на $\,\widehat{F}(t)$. -Може да използвате функцията `plot(x, y, type="l")`. - -\item На същата картинка добавете графика на функцията на разпределение на $\,\mathcal{N}(\mu=5, \, \sigma=5/\sqrt{n})$. Двете графики трябва да са с различен цвят или едната да е с пунктирана линия. - -\item Трябва да получите три картинки -- по една за всяка стойност на $\,n$. -\end{itemize} - +В кутия има $2$ зелени, $3$ бели и $5$ жълти топки. Симулирайте $n$ тегления на топка с връщане. +Използвайте генерираните данни, за да проверите хипотезата, че вероятността да изтеглим зелена топка +е $1/5$. Повторете $10000$ пъти за $n = 50, 100, 200, 500$. Колко често заключението на теста е вярно? +Представете чрез подходяща графика честотата на вярно заключение в зависимост от $n$. \subparagraph{Решение} \hfill -\lstinputlisting[language=R, firstline=21, caption=Сорс-код]{hw1.r} - -Получен резултат при $n = 30$: \newline -\includegraphics[scale=0.5]{hw1-ex2-plot30.png} - -Получен резултат при $n = 120$: \newline -\includegraphics[scale=0.5]{hw1-ex2-plot120.png} +\begin{lstlisting}[language=R, caption=Сорс-код] +ex2 <- function(greens = 2, whites = 3, yellows = 5, ns = c(50, 100, 200, 500)) { + balls <- append(append(rep("green", greens), rep("white", whites)), rep("yellow", yellows)) + + check_hyp <- function(n, iters=10000) { + accepts <- sum(sapply(1:iters, function(i) { + sampled_greens <- sum(sapply(1:n, function(s) { + return (sample(balls, 1, replace=TRUE) == "green") + })) + + return (prop.test(sampled_greens, n, 1/5)$p.value > 0.05) + })) + + return (accepts / iters) + } + + ys <- sapply(ns, check_hyp) + plot(ns, ys, type="l", xlab="n", ylab="Съотношение на вярност на заключението") + text(ns, ys, ys) +} -\newpage +ex2() +\end{lstlisting} -Получен резултат при $n = 200$: \newline -\includegraphics[scale=0.5]{hw1-ex2-plot200.png} +Заключението е вярно през средно $\sim 96.6\%$ от времето. +Графика на честотата на вярно заключение в зависимост от $n$: \newline +\includegraphics[scale=0.7]{hw2-ex2.png} \end{document}
\ No newline at end of file |
