I Kapitel 3.2 av Speegles bok så ges en fördelning för en variabel \(X\) som anger antalet ungar till lodjur. Representera denna fördelning med en tabell som ovan och plotta en “stemplot”
df <- tibble(x=0:5,p=c(0,0.18, 0.51, 0.27, 0.04,0))
head(df,4)
## # A tibble: 4 × 2
## x p
## <int> <dbl>
## 1 0 0
## 2 1 0.18
## 3 2 0.51
## 4 3 0.27
ggplot(aes(x=x,y=p), data=df) +
geom_segment(aes(xend=x,yend=0)) +
geom_point(size=3,shape="circle",color="red") +
ggtitle("Stemplot av PMF")
Du skall göra en plott av både CDF \(F(x)\) och kvantilfunktionen \(F^{-1}(p)\) för Lynx-fördelningen ovan. (Detta är enklare än det låter …)
Avläs från plotten av kvantilfunktionen \(F^{-1}(x)\) ett lämpligt värde för fördelningens median.
dF <- mutate(df,cdf=cumsum(p))
dF
## # A tibble: 6 × 3
## x p cdf
## <int> <dbl> <dbl>
## 1 0 0 0
## 2 1 0.18 0.18
## 3 2 0.51 0.69
## 4 3 0.27 0.96
## 5 4 0.04 1
## 6 5 0 1
ggplot(dF,aes(x,y=cdf)) +
geom_step() +
ggtitle("Plot av CDF") +
labs(y="F(x)",x="Variabel X")
ggplot(dF,aes(x=cdf,y=x)) +
geom_line() +
ggtitle("Plot av Kvantilerna") +
labs(y="X vardet",x="Sannolikhet p")
Medianen blir cirka 1.62
Låt \(X\) ange kullstorleken hos
lodjur som ovan. Simulering med \(N=1000\) replikat värdena av \(X^2\). Plotta data i ett histogram med
geom_bar(). Beräkna medelvärdet av observationerna av \(X^2\) och jämför med det teoretiska värdet
av \(E(X^2)\) som beräknas som
ovan.
Jämförelse mellan simulering och exakt värde av \(E(X^2)\):
sumdf <- df %>%
summarise(m1 = sum(x*p), m2=sum(p*x^2), varians=m2-m1^2, stdavvikelse=sqrt(varians))
sumdf
## # A tibble: 1 × 4
## m1 m2 varians stdavvikelse
## <dbl> <dbl> <dbl> <dbl>
## 1 2.17 5.29 0.581 0.762
litterpmf <- c(0,0.18, 0.51, 0.27, 0.04,0)
sum((0:5)^2 * litterpmf)
## [1] 5.29
X <- sample((0:5)^2, 1000, replace = TRUE, prob = litterpmf)
mean(X)
## [1] 5.188
Plotta CDF för den hypergeometriska fördelningen som ger antalet röda kuler ett urval på 13 kulor utan återläggning från en urna med 30 kulor varav 5 är röda. (Se dhyper. Obs parametertolkningen.)
x_phyper <- seq(0, 30, by = 1)
y_phyper <- phyper(x_phyper, m = 13, n = 17, k = 5, log=FALSE)
plot(y_phyper,)