Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit80afdfae71ef31272f240c9701f7a0e67d42d23a (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-05-28 21:43:30 +0300
Committer
 Syndamia <kamen@syndamia.com>
2024-05-28 21:43:30 +0300
Files2c2ceeecd7bb30e08ecb067ded08bf383a74bf87
uni-projects-80afdfae71ef31272f240c9701f7a0e67d42d23a.tar
uni-projects-80afdfae71ef31272f240c9701f7a0e67d42d23a.tar.gz
uni-projects-80afdfae71ef31272f240c9701f7a0e67d42d23a.zip
Parentd6ae2ff6cfbf36b5985ee923b751707d27993915 (diff)
[S/hw2] Solved homework
5 files changed, 62 insertions, 70 deletions
-rw-r--r--Year 3/Statistics/hw2-ex1.pngbin0 -> 12230 bytes
-rw-r--r--Year 3/Statistics/hw2-ex2.pngbin0 -> 13351 bytes
-rw-r--r--Year 3/Statistics/hw2.pdfbin0 -> 72226 bytes
-rw-r--r--Year 3/Statistics/hw2.r59
-rw-r--r--Year 3/Statistics/hw2.tex73
diff --git a/Year 3/Statistics/hw2-ex1.png b/Year 3/Statistics/hw2-ex1.png
new file mode 100644
index 0000000..04ae550
--- /dev/null
+++ b/Year 3/Statistics/hw2-ex1.png
Binary files differ
diff --git a/Year 3/Statistics/hw2-ex2.png b/Year 3/Statistics/hw2-ex2.png
new file mode 100644
index 0000000..a4e27d3
--- /dev/null
+++ b/Year 3/Statistics/hw2-ex2.png
Binary files differ
diff --git a/Year 3/Statistics/hw2.pdf b/Year 3/Statistics/hw2.pdf
new file mode 100644
index 0000000..6346c9b
--- /dev/null
+++ b/Year 3/Statistics/hw2.pdf
Binary files differ
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