Skip to content

Commit 6f9e928

Browse files
committed
Completado ejemplos Tema 11
1 parent 058dc05 commit 6f9e928

11 files changed

+652
-11
lines changed

scripts/tema11/02-binomial.Rmd

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ plt.show()
6060
6161
fix, ax = plt.subplots(1,1)
6262
r = binom.rvs(n, p, size = 10000)
63-
ax.hist(r, bins = 7)
63+
ax.hist(r, bins = n)
6464
plt.show()
6565
```
6666

scripts/tema11/04-hgeom.Rmd

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: "Distribución Hipergeométrica"
3+
author: "Curso de Estadística Descriptiva"
4+
date: "7/2/2019"
5+
output: pdf_document
6+
---
7+
8+
```{r setup, include=FALSE}
9+
knitr::opts_chunk$set(echo = TRUE)
10+
```
11+
12+
## Distribución Hipergeométrica
13+
14+
Supongamos que tenemos 20 animales, de los cuales 7 son perros. Queremos medir la probabilidad de encontrar un número determinado de perros si elegimos $k=12$ animales al azar.
15+
16+
# En `R`
17+
18+
```{r}
19+
library(Rlab)
20+
M = 7
21+
N = 13
22+
k = 12
23+
dhyper(x = 0:12, m = M, n = N, k = k)
24+
phyper(q = 0:12, m = M, n = N, k = k)
25+
qhyper(p = 0.5, m = M, n = N, k = k)
26+
rhyper(nn = 1000, m = M, n = N, k = k) -> data
27+
hist(data, breaks = 8)
28+
```
29+
30+
31+
## En `Python`
32+
```{python}
33+
from scipy.stats import hypergeom
34+
import matplotlib.pyplot as plt
35+
import numpy as np
36+
37+
[M, n, N] = [20, 7, 6]
38+
rv = hypergeom(M, n, N)
39+
x = np.arange(0, n+1)
40+
y = rv.pmf(x)
41+
42+
mean, var, skew, kurt = rv.stats(moments = 'mvsk')
43+
print("Media %f"%mean)
44+
print("Varianza %f"%var)
45+
print("Sesgo %f"%skew)
46+
print("Curtosis %f"%kurt)
47+
48+
fig = plt.figure()
49+
ax = fig.add_subplot(111)
50+
ax.plot(x, y, 'bo' )
51+
ax.vlines(x,0,y, lw = 2, alpha = 0.5)
52+
ax.set_xlabel("Número de perros entre los 12 elegidos al azar")
53+
ax.set_ylabel("Distribución de probabilidad de H(13,7,12)")
54+
plt.show()
55+
```
56+

scripts/tema11/04-hgeom.pdf

165 KB
Binary file not shown.

scripts/tema11/05-poisson.Rmd

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
title: "Distribución de Poisson"
3+
author: "Curso de Estadística Descriptiva"
4+
date: "7/2/2019"
5+
output: html_document
6+
---
7+
8+
```{r setup, include=FALSE}
9+
knitr::opts_chunk$set(echo = TRUE)
10+
```
11+
12+
## Distribución de Poisson
13+
14+
Supongamos que $X$ modela el número de errores por página que tiene un valor esperado $\lambda = 5$.
15+
16+
## En `R`
17+
```{r}
18+
l = 5
19+
plot(0:20, dpois(x = 0:20, lambda = l))
20+
ppois(0:20, l)
21+
qpois(0.5, 5)
22+
rpois(1000, lambda = l) -> data
23+
hist(data)
24+
```
25+
26+
## En `Python`
27+
28+
```{python}
29+
import numpy as np
30+
from scipy.stats import poisson
31+
import matplotlib.pyplot as plt
32+
33+
34+
fig, ax = plt.subplots(1,1)
35+
mu = 5
36+
mean, var, skew, kurt = poisson.stats(mu, moments = 'mvsk')
37+
print("Media %f"%mean)
38+
print("Varianza %f"%var)
39+
print("Sesgo %f"%skew)
40+
print("Curtosis %f"%kurt)
41+
42+
x = np.arange(0, 12)
43+
ax.plot(x, poisson.pmf(x, mu), 'bo', ms = 8, label = 'Poisson(0.8)')
44+
ax.vlines(x,0, poisson.pmf(x,mu), colors = 'b', lw = 4, alpha = 0.5)
45+
ax.legend(loc = "best", frameon = False)
46+
plt.show()
47+
```
48+

scripts/tema11/05-poisson.html

+268
Large diffs are not rendered by default.

scripts/tema11/07-uniforme.Rmd

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
title: "Distribución Uniforme"
3+
author: "Curso de Estadística Descriptiva"
4+
date: "7/2/2019"
5+
output: pdf_document
6+
---
7+
8+
```{r setup, include=FALSE}
9+
knitr::opts_chunk$set(echo = TRUE)
10+
```
11+
12+
## Distribución Uniforme
13+
14+
Supongamos que $X\sim U([0,1])$ entonces podemos estudiar sus parámetros
15+
16+
## En `R`
17+
```{r}
18+
a = 0
19+
b = 1
20+
21+
x = seq(-0.1, 1.1, 0.1)
22+
plot(x, dunif(x, min = a, max = b))
23+
plot(x, punif(x, a, b), type = "l")
24+
qunif(0.5, a, b)
25+
runif(1000000, a, b) -> data
26+
hist(data)
27+
```
28+
29+
## En `Python`
30+
31+
```{python}
32+
33+
from scipy.stats import uniform
34+
import matplotlib.pyplot as plt
35+
import numpy as np
36+
37+
a = 0
38+
b = 1
39+
40+
loc = a
41+
scale = b-a
42+
43+
fig, ax = plt.subplots(1,1)
44+
45+
rv = uniform(loc = loc, scale = scale)
46+
47+
mean, var, skew, kurt = rv.stats(moments = 'mvsk')
48+
print("Media %f"%mean)
49+
print("Varianza %f"%var)
50+
print("Sesgo %f"%skew)
51+
print("Curtosis %f"%kurt)
52+
53+
x = np.linspace(-0.1, 1.1, 120)
54+
ax.plot(x, rv.pdf(x), 'k-', lw = 2, label = "U(0,1)")
55+
56+
r = rv.rvs(size = 100000)
57+
ax.hist(r, density = True, histtype = "stepfilled", alpha = 0.25)
58+
59+
ax.legend(loc = 'best', frameon = False)
60+
plt.show()
61+
```
62+

scripts/tema11/07-uniforme.pdf

166 KB
Binary file not shown.

scripts/tema11/08-exp.Rmd

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: "Distribución exponencial"
3+
author: "Curso de Estadística Descriptiva"
4+
date: "7/2/2019"
5+
output: pdf_document
6+
---
7+
8+
```{r setup, include=FALSE}
9+
knitr::opts_chunk$set(echo = TRUE)
10+
```
11+
12+
## En `Python`
13+
14+
```{python}
15+
from scipy.stats import expon
16+
import numpy as np
17+
import matplotlib.pyplot as plt
18+
19+
fig, ax = plt.subplots(1,1)
20+
21+
lam = 3
22+
rv = expon(scale = 1/lam)
23+
24+
mean, var, skew, kurt = rv.stats(moments = 'mvsk')
25+
print("Media %f"%mean)
26+
print("Varianza %f"%var)
27+
print("Sesgo %f"%skew)
28+
print("Curtosis %f"%kurt)
29+
30+
x = np.linspace(0, 3, 1000)
31+
ax.plot(x, rv.pdf(x), 'r-', lw = 5, alpha = 0.6, label = "Exp(10)")
32+
33+
r = rv.rvs(size = 100000)
34+
ax.hist(r, density = True, histtype = 'stepfilled', alpha = 0.2)
35+
36+
ax.legend(loc = "best", frameon= False)
37+
plt.show()
38+
```
39+

scripts/tema11/08-exp.pdf

129 KB
Binary file not shown.

teoria/Tema11.Rmd

+68-2
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ Dada cualquier variable aleatoria, en `Python` tenemos las mismas cuatro funcion
195195
- `ppf(p,...)`: Cuantil $p$-ésimo de la variable aleatoria (el valor de $x$ más pequeño tal que $F(x)\geq p$).
196196
- `rvs(size,...)`: Generador de $size$ observaciones siguiendo la distribución de la variable aleatoria.
197197

198+
También vale la pena conocer la función `stats(moments='mvsk')` que nos devuelve cuatro valores con los estadísticos de la media `m`, la varianza `v`, el sesgo `s` y la curtosis `k` de la distribución.
199+
198200
# Distribuciones discretas más conocidas
199201

200202
## Distribuciones discretas
@@ -347,11 +349,19 @@ $$X\sim \text{H}(N,M,n)$$
347349
## Distribución Hipergeométrica
348350

349351
```{r, echo = FALSE}
352+
par(mfrow = c(1,2))
350353
plot(0:30, dhyper(0:30,10,20,10),col = "purple", xlab = "", ylab = "", main = "Función de probabilidad de una H(20,10,30)")
351354
plot(0:30, phyper(0:30,10,20,10),col = "purple", xlab = "", ylab = "", main = "Función de distribución de una H(20,10,30)", ylim = c(0,1))
352355
par(mfrow= c(1,1))
353356
```
354357

358+
## Distribución Hipergeométrica
359+
360+
El código de la distribución Hipergeométrica:
361+
362+
- En `R` tenemos las funciones del paquete `Rlab`: `dhyper(x, m, n, k), phyper(q, m, n, k), qhyper(p, m, n, k), rhyper(nn, m, n, k)` donde `m` es el número de objetos del primer tipo, `n` el número de objetos del segundo tipo y `k` el número de extracciones realizadas.
363+
- En `Python` tenemos las funciones del paquete `scipy.stats.hypergeom`: `pmf(k,M, n, N), cdf(k,M, n, N), ppf(q,M, n, N), rvs(M, n, N, size)` donde `M` es el número de objetos del primer tipo, `N` el número de objetos del segundo tipo y `n` el número de extracciones realizadas.
364+
355365
## Distribución de Poisson
356366

357367
Si $X$ es variable aleatoria que mide el "número de eventos en un cierto intervalo de tiempo", diremos que $X$ se distribuye como una Poisson con parámetro $\lambda$
@@ -384,6 +394,13 @@ plot(0:20, ppois(0:20,2),col = "purple", xlab = "", ylab = "", main = "Función
384394
par(mfrow= c(1,1))
385395
```
386396

397+
## Distribución de Poisson
398+
399+
El código de la distribución de Poisson:
400+
401+
- En `R` tenemos las funciones del paquete `Rlab`: `dpois(x, lambda), ppois(q,lambda), qpois(p,lambda), rpois(n, lambda)` donde `lambda` es el número esperado de eventos por unidad de tiempo de la distribución.
402+
- En `Python` tenemos las funciones del paquete `scipy.stats.poisson`: `pmf(k,mu), cdf(k,mu), ppf(q,mu), rvs(M,mu)` donde `mu` es el número esperado de eventos por unidad de tiempo de la distribución.
403+
387404
## Distribución Binomial Negativa
388405

389406
Si $X$ es variable aleatoria que mide el "número de repeticiones hasta observar los $r$ éxitos en ensayos de Bernoulli", diremos que $X$ se distribuye como una Binomial Negativa con parámetros $r$ y $p$, $$X\sim\text{BN}(r,p)$$ donde $p$ es la probabilidad de éxito
@@ -409,6 +426,12 @@ plot(c(rep(0,exitos),exitos:(size+exitos)), c(rep(0,exitos),pnbinom(0:size,exito
409426
par(mfrow= c(1,1))
410427
```
411428

429+
## Distribución Binomial Negativa
430+
431+
El código de la distribución Binomial Negativa:
432+
433+
- En `R` tenemos las funciones del paquete `Rlab`: `dnbinom(x, size, prop), pnbinom(q, size, prop), qnbinom(p, size, prop), rnbinom(n, size, prop)` donde `size` es el número de casos exitosos y `prob` la probabilidad del éxito.
434+
- En `Python` tenemos las funciones del paquete `scipy.stats.nbinom`: `pmf(k,n,p), cdf(k,n,p), ppf(q,n,p), rvs(n,p)` donde `n`es el número de casos exitosos y `p` la probabilidad del éxito.
412435

413436
## Distribuciones discretas en R
414437

@@ -519,10 +542,20 @@ Modela el elegir un elemento del intervalo $[a,b]$ de manera equiprobable
519542
## Distribución Uniforme
520543

521544
```{r, echo = FALSE}
522-
plot(punif(1:20,min = 0, max = 20),col = "purple", xlab = "", ylab = "", main = "Función de densidad de una U(0,20)", type = "o")
545+
par(mfrow=c(1,2))
546+
plot(c(0,1,1:4,4,5), c(0,0,dunif(1:4,min = 1, max = 4),0,0),col = "purple", xlab = "", ylab = "", main = "Función de densidad de una U(1,4)", type = "o", ylim = c(0,1))
547+
plot(0:5, punif(0:5,min = 1, max = 4),col = "purple", xlab = "", ylab = "", main = "Función de distribución de una U(1,4)", type = "o")
548+
par(mfrow=c(1,1))
523549
```
524550

525551

552+
## Distribución Uniforme
553+
554+
El código de la distribución Uniforme:
555+
556+
- En `R` tenemos las funciones del paquete `stats`: `dunif(x, min, max), punif(q, min, max), qunif(p, min, max), runif(n, min, max)` donde `min` y `max` són los extremos de los intervalos de la distribución uniforme.
557+
- En `Python` tenemos las funciones del paquete `scipy.stats.uniform`: `pdf(k,loc, scale), cdf(k,loc, scale), ppf(q,loc, scale), rvs(n,loc, scaler)` donde la distribución uniforme está definida en el intervalo `[loc, loc+scale]`.
558+
526559
## Distribución Exponencial
527560

528561
Una v.a. $X$ tiene distribución exponencial de parámetro $\lambda$, $X\sim\text{Exp}(\lambda)$, si su función de densidad es $$f_X(x)=\left\{
@@ -553,10 +586,18 @@ Una v.a. $X$ tiene distribución exponencial de parámetro $\lambda$, $X\sim\tex
553586
## Distribución Exponencial
554587

555588
```{r, echo = FALSE}
556-
plot(pexp(1:20,0.2),col = "purple", xlab = "", ylab = "", main = "Función de densidad de una Exp(0.2)", type = "o")
589+
plot(0:20, pexp(0:20,0.2),col = "purple", xlab = "", ylab = "", main = "Función de densidad de una Exp(0.2)", type = "o")
557590
```
558591

559592

593+
## Distribución Exponencial
594+
595+
El código de la distribución Exponencial:
596+
597+
- En `R` tenemos las funciones del paquete `stats`: `dexp(x, rate), pexp(q, rate), qexp(p, rate), rexp(n, rate)` donde `rate`$=\lambda$ es el tiempo entre dos sucesos consecutivos de la distribución.
598+
- En `Python` tenemos las funciones del paquete `scipy.stats.expon`: `pdf(k, scale), cdf(k, scale), ppf(q, scale), rvs(n, scaler)` donde `scale`$=1/\lambda$ es la inversa del tiempo entre dos sucesos consecutivos de la distribución.
599+
600+
560601
## Distribución Normal
561602

562603
Una v.a. $X$ tiene distribución normal o gaussiana de parámetros $\mu$ y $\sigma$, $X\sim\mathcal{N}(\mu,\sigma)$ si su función de densidad es $$f_X(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\quad \forall x\in\mathbb{R}$$
@@ -588,6 +629,14 @@ plot(dvalues, ylab = "", xlab= "",
588629
main = "Función de densidad de una N(0,1)")
589630
```
590631

632+
## Distribución Normal
633+
634+
El código de la distribución Normal:
635+
636+
- En `R` tenemos las funciones del paquete `stats`: `dnorm(x, mean, sd), pnorm(q, mean, sd), qnorm(p, mean, sd), rnorm(n, mean, sd)` donde `mean` es la media y `sd` es la desviación estándar de la normal $N(\mu, \sigma)$.
637+
- En `Python` tenemos las funciones del paquete `scipy.stats.expon`: `pdf(k, mu, scale), cdf(k, mu, scale), ppf(q, mu, scale), rvs(n, mu, scale)` donde `mu` es la media y `scale` es la desviación estándar de la normal $N(\mu, \sigma)$.
638+
639+
591640
## Distribución Normal
592641

593642
<l class = "prop">Estandarización de una v.a. normal.</l> Si $X$ es una v.a. $\mathcal{N}(\mu,\sigma)$, entonces $$Z=\frac{X-\mu}{\sigma}\sim\mathcal{N}(0,1)$$
@@ -610,6 +659,23 @@ Si a la hora de llamar a alguna de las 4 funciones siguientes: `dnorm`, `pnorm`,
610659

611660
Es decir, R interpreta $\mu = 0$ y $\sigma = 1$
612661

662+
## Otras distribuciones importantes
663+
664+
- La distribución $\chi^2_k$, donde $k$ representa los grados de libertad de la misma y que procede de la suma de los cuadrados de $k$ distribuciones normales estándar independientes:
665+
666+
$$X = Z_1^2 + Z_2^2+\cdots + Z_k^2\sim \chi_k^2$$
667+
668+
## Otras distribuciones importantes
669+
670+
- La distribución $t_k$ surge del problema de estimar la media de una población normalmente distribuida cuando el tamaño de la muestra es pequeña y procede del cociente
671+
672+
$$T = \frac{Z}{\sqrt{\chi^2_k/k}}\sim T_k$$
673+
674+
## Otras distribuciones importantes
675+
676+
- La distribución $F_{n_1,n_2}$ aparece frecuentemente como la distribución nula de una prueba estadística, especialmente en el análisis de varianza. Viene definida como el cociente
677+
678+
$$F = \frac{\chi^2_{n_1}/n_1}{\chi^2_{n_2}/n_2}\sim F_{n_1,n_2}$$
613679

614680
## Distribuciones continuas en R
615681

teoria/Tema11.html

+110-8
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)