Está en la página 1de 43

Probabilidad y Estadística: Laboratorio 05

Felipe Ossa y Pilar Tello

Segundo Semestre 2022

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 1 / 43
Base de datos RentasMunich.dta

Abriremos nuevamente la base del Laboratorio 03:


library(rio)
data <- import("RentasMunich.dta")
data$localizacion <- ifelse(data$location==1, "Promedio",
ifelse(data$location==2, "Bueno","Alta"))
data$bano <- ifelse(data$bath==0, "Estándar", "Premium")
data$cocina <- ifelse(data$kitchen==0, "Estándar", "Premium")
data$calefaccion <- ifelse(data$cheating==0, "No", "Sí")
aux <- lapply(data, class)=="character"
data[,aux]=lapply(data[,aux],as.factor)

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 2 / 43
Manipulación de datos con dplyr

El paquete dplyr es principalmente un conjunto de funciones diseñadas


para permitir la manipulación de macros de datos de una manera intuitiva y
fácil de usar. Sirve para transformar conjuntos de datos existentes en un
formato más adecuado para algún tipo particular de análisis o visualización
de datos.

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 3 / 43
Instalación dplyr

Para instalar este paquete entonces hay que ejecutar:


install.packages("dplyr")

Luego para cargar el paquete debemos ejecutar:


library(dplyr)

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 4 / 43
filter

La función filter permite seleccionar un subconjunto de filas de los datos


aplicando ciertos filtros. Lo primero que se le entrega a la función es la base
de datos y luego podemos ir filtrando en base a los criterios que se requieran.
Las variables se llaman directamente por su nombre, puesto que la función
lee de la base de datos. En nuestra base un ejemplo es el siguiente:
filter(data, bano=="Premium", cocina=="Premium",localizacion=="Alta")

## rent rentsqm area yearc location bath kitchen


## 1 1188 11.42308 104 1983 3 1 1
## cheating district localizacion bano cocina
## 1 1 1855 Alta Premium Premium
## calefaccion
## 1 Sí

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 5 / 43
slice
La función slice permite seleccionar un subconjunto de filas de los datos
según la posición de las filas. Lo primero que se le entrega a la función es la
base de datos y luego la posición de las filas que se quieren conservar. En
nuestra base un ejemplo es el siguiente:
slice(data,1:5)

## rent rentsqm area yearc location bath kitchen


## 1 120.9744 3.456410 35 1939 1 0 0
## 2 436.9743 4.201676 104 1939 1 1 0
## 3 355.7436 12.267021 29 1971 2 0 0
## 4 282.9231 7.254436 39 1972 2 0 0
## 5 807.2308 8.321964 97 1985 1 0 0
## cheating district localizacion bano cocina
## 1 0 1112 Promedio Estándar Estándar
## 2 1 1112 Promedio Premium Estándar
## 3 1 2114 Bueno Estándar Estándar
## 4 1 2148 Bueno Estándar Estándar
## 5 1 2222 Promedio Estándar Estándar
## calefaccion
## 1 No
## 2 Sí
## 3Felipe Ossa y Pilar
Sí Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 6 / 43
arrange
La función arrange permite ordenar el conjunto de datos según el orden de
sus columnas. Lo primero que se le entrega a la función es la base de datos
y luego las columnas que se quieren ordenar. Por defecto el orden es
alfabético y de menor a mayor. En nuestra base un ejemplo es el siguiente:
arrange(data, cocina)

## rent rentsqm area yearc location bath kitchen


## 1 120.9744 3.456410 35 1939 1 0 0
## 2 436.9743 4.201676 104 1939 1 1 0
## 3 355.7436 12.267021 29 1971 2 0 0
## 4 282.9231 7.254436 39 1972 2 0 0
## 5 807.2308 8.321964 97 1985 1 0 0
## cheating district localizacion bano cocina
## 1 0 1112 Promedio Estándar Estándar
## 2 1 1112 Promedio Premium Estándar
## 3 1 2114 Bueno Estándar Estándar
## 4 1 2148 Bueno Estándar Estándar
## 5 1 2222 Promedio Estándar Estándar
## calefaccion
## 1 No
## 2 Sí
## 3Felipe Ossa y Pilar
Sí Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 7 / 43
arrange
arrange(data, cocina, bano)

## rent rentsqm area yearc location bath kitchen


## 1 120.9744 3.456410 35 1939 1 0 0
## 2 355.7436 12.267021 29 1971 2 0 0
## 3 282.9231 7.254436 39 1972 2 0 0
## 4 807.2308 8.321964 97 1985 1 0 0
## 5 482.8205 7.787426 62 1962 1 0 0
## cheating district localizacion bano cocina
## 1 0 1112 Promedio Estándar Estándar
## 2 1 2114 Bueno Estándar Estándar
## 3 1 2148 Bueno Estándar Estándar
## 4 1 2222 Promedio Estándar Estándar
## 5 1 2222 Promedio Estándar Estándar
## calefaccion
## 1 No
## 2 Sí
## 3 Sí
## 4 Sí
## 5 Sí

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 8 / 43
arrange
arrange(data, cocina, bano, localizacion)

## rent rentsqm area yearc location bath kitchen


## 1 664.0513 10.375799 64 1918 3 0 0
## 2 312.6154 4.168205 75 1960 3 0 0
## 3 345.8974 10.481738 33 1967 3 0 0
## 4 390.5128 8.135682 48 1972 3 0 0
## 5 419.6410 11.656693 36 1985 3 0 0
## cheating district localizacion bano cocina
## 1 1 911 Alta Estándar Estándar
## 2 1 924 Alta Estándar Estándar
## 3 1 964 Alta Estándar Estándar
## 4 1 911 Alta Estándar Estándar
## 5 1 1955 Alta Estándar Estándar
## calefaccion
## 1 Sí
## 2 Sí
## 3 Sí
## 4 Sí
## 5 Sí

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 9 / 43
arrange
arrange(data, cocina, bano, localizacion, calefaccion)

## rent rentsqm area yearc location bath kitchen


## 1 495.9487 6.199359 80 1918.0 3 0 0
## 2 377.5385 4.494506 84 1935.0 3 0 0
## 3 465.1795 4.228904 110 1957.5 3 0 0
## 4 373.5898 4.728984 79 1924.0 3 0 0
## 5 797.5898 13.992800 57 1977.0 3 0 0
## cheating district localizacion bano cocina
## 1 0 1250 Alta Estándar Estándar
## 2 0 925 Alta Estándar Estándar
## 3 0 911 Alta Estándar Estándar
## 4 0 1852 Alta Estándar Estándar
## 5 0 1250 Alta Estándar Estándar
## calefaccion
## 1 No
## 2 No
## 3 No
## 4 No
## 5 No

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 10 / 43
arrange
Se puede indicar orden descendente con la función desc(). Un ejemplo:
arrange(data, desc(cocina))

## rent rentsqm area yearc location bath kitchen


## 1 322.2564 3.978474 81 1996 1 0 1
## 2 685.5385 7.879754 87 1979 2 1 1
## 3 846.1026 9.401138 90 1983 2 0 1
## 4 521.5385 7.450549 70 1970 1 0 1
## 5 530.2051 7.069400 75 1967 1 1 1
## cheating district localizacion bano cocina
## 1 1 1212 Promedio Estándar Premium
## 2 1 2145 Bueno Premium Premium
## 3 1 2144 Bueno Estándar Premium
## 4 1 1022 Promedio Estándar Premium
## 5 1 2441 Promedio Premium Premium
## calefaccion
## 1 Sí
## 2 Sí
## 3 Sí
## 4 Sí
## 5 Sí

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 11 / 43
arrange

arrange(data, desc(cocina), desc(bano))


arrange(data, desc(cocina), desc(bano), desc(localizacion))
arrange(data, desc(cocina), desc(bano), desc(localizacion),
desc(calefaccion))

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 12 / 43
select
La función select permite obtener un subconjunto de datos según sus
columnas. Lo primero que se le entrega a la función es la base de datos y
luego las columnas que se quieren mantener. En nuestra base un ejemplo es
el siguiente:
select(data, cocina, bano)

## cocina bano
## 1 Estándar Estándar
## 2 Estándar Premium
## 3 Estándar Estándar
## 4 Estándar Estándar
## 5 Estándar Estándar
## 6 Estándar Estándar
## 7 Estándar Estándar
## 8 Estándar Premium
## 9 Estándar Estándar
## 10 Estándar Estándar
## 11 Estándar Estándar
## 12 Estándar Estándar
## 13 Estándar Estándar
## 14 Estándar Estándar
## 15
Felipe Estándar Estándar
Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 13 / 43
rename
La función rename permite renombrar columnas. Lo primero que se le
entrega a la función es la base de datos y luego el nuevo nombre de las
columnas que se quieren renombrar con su nombre antiguo. En nuestra
base un ejemplo es el siguiente, renombraremos la variable rent por renta:
rename(data, renta=rent)

## renta rentsqm area yearc location bath kitchen


## 1 120.9744 3.456410 35 1939 1 0 0
## 2 436.9743 4.201676 104 1939 1 1 0
## 3 355.7436 12.267021 29 1971 2 0 0
## 4 282.9231 7.254436 39 1972 2 0 0
## 5 807.2308 8.321964 97 1985 1 0 0
## cheating district localizacion bano cocina
## 1 0 1112 Promedio Estándar Estándar
## 2 1 1112 Promedio Premium Estándar
## 3 1 2114 Bueno Estándar Estándar
## 4 1 2148 Bueno Estándar Estándar
## 5 1 2222 Promedio Estándar Estándar
## calefaccion
## 1 No
## 2 Sí
## 3Felipe Ossa y Pilar
Sí Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 14 / 43
distinct

La función distinct permite obtener valores únicos de una variable. Se le


entrega directamente el vector de datos para el cual estamos buscando los
valores únicos. En nuestra base un ejemplo en conjunto con select es el
siguiente:
distinct(select(data,localizacion))

## localizacion
## 1 Promedio
## 2 Bueno
## 3 Alta

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 15 / 43
mutate
La función mutate permite agregar nuevas columnas que son funciones de
las columnas existentes. Lo primero que se le entrega a la función es la base
de datos y luego el nombre de la nueva columna a agregar y su definición.
En nuestra base un ejemplo es el siguiente:
mutate(data, rentam2=rent/area)

## rent rentsqm area yearc location bath kitchen


## 1 120.9744 3.456410 35 1939 1 0 0
## 2 436.9743 4.201676 104 1939 1 1 0
## 3 355.7436 12.267021 29 1971 2 0 0
## 4 282.9231 7.254436 39 1972 2 0 0
## 5 807.2308 8.321964 97 1985 1 0 0
## cheating district localizacion bano cocina
## 1 0 1112 Promedio Estándar Estándar
## 2 1 1112 Promedio Premium Estándar
## 3 1 2114 Bueno Estándar Estándar
## 4 1 2148 Bueno Estándar Estándar
## 5 1 2222 Promedio Estándar Estándar
## calefaccion rentam2
## 1 No 3.456410
## 2 Sí 4.201676
## 3Felipe Ossa y Pilar
Sí Tello
12.267020 Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 16 / 43
transmute

La función transmute es muy similar a la función mutate, pero


quedándonos sólo con las nuevas columnas que creamos. Lo primero que se
le entrega a la función es la base de datos y luego el nombre de la nueva
columna a agregar y su definición. En nuestra base un ejemplo es el
siguiente:
transmute(data, rentam2=rent/area)

## rentam2
## 1 3.456410
## 2 4.201676
## 3 12.267020
## 4 7.254438
## 5 8.321967

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 17 / 43
summarise

La función summarise permite obtener resúmenes de datos de nuestra base


de datos. Lo primero que se le entrega a la función es la base de datos y
luego el nombre de la medida a resumir junto a su definición. En nuestra
base un ejemplo es el siguiente:
summarise(data,min_renta=min(rent), media_renta=mean(rent),
max_renta=max(rent), sd_renta=sd(rent))

## min_renta media_renta max_renta sd_renta


## 1 40.51282 459.4372 1843.385 195.6566

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 18 / 43
sample_n y sample_frac

La función sample_n permite obtener un número de filas aleatorias de


nuestra base de datos y la función sample_frac un porcentaje de filas
aleatorias. Lo primero que se le entrega a las funciones es la base de datos y
luego el número de filas que se quieren obtener o el porcentaje entre 0 y 1.
Por defecto la muestra obtenida es sin reemplazo pero en el caso en que se
quisiera una muestra con reemplazo debemos agregar replace=TRUE a los
argumentos. En nuestra base un ejemplo es el siguiente:

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 19 / 43
sample_n y sample_frac
sample_n(data, size=5)

## rent rentsqm area yearc location bath kitchen


## 1 308.7692 9.081447 34 1968.0 1 0 0
## 2 631.1795 7.425641 85 1957.5 1 0 1
## 3 651.1282 10.173877 64 1981.0 2 0 0
## 4 373.8462 7.476923 50 1957.5 2 0 0
## 5 324.9231 5.240692 62 1939.0 2 0 0
## cheating district localizacion bano cocina
## 1 1 927 Promedio Estándar Estándar
## 2 1 612 Promedio Estándar Premium
## 3 1 711 Bueno Estándar Estándar
## 4 1 563 Bueno Estándar Estándar
## 5 1 350 Bueno Estándar Estándar
## calefaccion
## 1 Sí
## 2 Sí
## 3 Sí
## 4 Sí
## 5 Sí

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 20 / 43
sample_n y sample_frac

sample_frac(data, size=0.001)

## rent rentsqm area yearc location bath kitchen


## 1 686.4103 9.152139 75 1971 1 0 0
## 2 568.1026 6.928082 82 1973 2 1 0
## 3 351.1795 6.503323 54 1929 2 0 0
## cheating district localizacion bano cocina
## 1 1 2411 Promedio Estándar Estándar
## 2 1 711 Bueno Premium Estándar
## 3 1 563 Bueno Estándar Estándar
## calefaccion
## 1 Sí
## 2 Sí
## 3 Sí

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 21 / 43
Operador Pipe (dplyr)
El operador “Pipe” %>% permite realizar múltiples funciones y operaciones dentro
de la base de datos. Esto permite resumir líneas de código y ocupar menos espacio
en la memoria, porque para aplicar cada función recién aprendida debemos ir
escribiéndola en alguna parte. Lo primero que debemos entregar es la base de
datos y luego separadas por %>% las operaciones a realizar.
data2 <- data %>% filter(rent>600) %>% sample_n(size=5) %>% arrange(desc(rent))
data2

## rent rentsqm area yearc location bath kitchen


## 1 728.8205 8.098005 90 1918.0 2 1 0
## 2 709.7436 8.349923 85 1918.0 2 1 0
## 3 662.3589 8.831451 75 1955.0 2 0 0
## 4 641.1282 7.915164 81 1957.5 2 0 0
## 5 607.7949 8.682785 70 1918.0 1 0 0
## cheating district localizacion bano cocina
## 1 1 711 Bueno Premium Estándar
## 2 1 543 Bueno Premium Estándar
## 3 1 411 Bueno Estándar Estándar
## 4 1 350 Bueno Estándar Estándar
## 5 1 822 Promedio Estándar Estándar
## calefaccion
## 1 Sí
## 2 Sí
## 3Felipe Ossa y Pilar
Sí Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 22 / 43
group_by

La función group_by permite agrupar nuestra base de datos en conjunto al


operador %>%. Con esto se eligen las variables por las que queremos agrupar
y es muy útil para obtener estadísticas de resumen en función de una
variable o más. Un ejemplo con nuestra base de datos:
resumen <- data %>% group_by(bano, cocina) %>%
summarise(n=n(), minimo=min(rent), media=mean(rent),
maximo=max(rent), sd=sd(rent))
resumen

## # A tibble: 4 x 7
## # Groups: bano [2]
## bano cocina n minimo media maximo sd
## <fct> <fct> <int> <dbl> <dbl> <dbl> <dbl>
## 1 Estándar Estándar 2778 40.5 441. 1843. 179.
## 2 Estándar Premium 113 133. 589. 1459. 229.
## 3 Premium Estándar 173 178. 638. 1551. 259.
## 4 Premium Premium 18 286. 777. 1188 231.

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 23 / 43
Modelos probabilísticos

En el laboratorio anterior introdujimos los modelos probabilísticos


programados en R.
No están todos los modelos, pero muchos son equivalentes o se pueden
obtener con transformaciones.
Investigaremos un poco más a fondo este tema.
Reforzaremos el aspecto gráfico y de cálculo numérico para "respaldar"
resultados teóricos.

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 24 / 43
Modelo Log-normal

Una variable X tiene distribución Log-Normal(λ, ζ) si su función de


densidad es la siguiente:
( 2 )
1 1 log x − λ

f (x ) = √ exp −
2π ζ x 2 ζ

para x > 0.
En la clase se enseña (sin demostración), que si X tiene distribución
Log-Normal, entonces sus logaritmos tienen distribución normal con media
λ y desviación estándar ζ. ¿Qué quiere decir esto exactamente? ¿Nos
convencería un gráfico?

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 25 / 43
Simulación

La importancia de la simulación en este curso radica en la ilustración. Es


decir, el comportamiento de un modelo estadístico, sus propiedades y
transformaciones.
Al mismo tiempo, es importante recordar que ni R ni las simulaciones son
herramientas teóricas, sino empíricas. Los cálculos tienen pequeñas
desviaciones. No obstante, se puede experimentar y probar diferentes
valores e identificar diferentes comportamientos.
Dicho esto, ilustremos la propiedad mencionada del modelo Log-normal.

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 26 / 43
Modelo Log-Normal y Normal

Primero generamos una muestra grande.


set.seed(1113)
N <- 10000
lambda <- 1
zeta <- 0.3
X <- rlnorm(N, meanlog = lambda, sdlog = zeta)

Luego grafiquemos su histograma y densidad teórica para verificar que se


generó bien.

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 27 / 43
Modelo Log-Normal y Normal
hist(X, freq = FALSE, main = "Muestra Log-Normal", ylim=c(0,0.55))
curve(dlnorm(x, meanlog = lambda, sdlog = zeta),
add = TRUE, col = 2, lwd=2)

Muestra Log−Normal
0.5
0.4
Density

0.3
0.2
0.1
0.0

2 4 6 8 10

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 28 / 43
Modelo Log-Normal y Normal

Ahora verifiquemos la propiedad de los logaritmos de X .


Y <- log(X)

Generemos el histograma y la densidad que se supone que tiene:


Normal(λ, ζ).

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 29 / 43
Modelo Log-Normal y Normal
hist(Y, freq = FALSE, main = "Logaritmos de X", ylim=c(0,1.3))
curve(dnorm(x, mean = lambda, sd = zeta),
add = TRUE, col = 2, lwd=2)

Logaritmos de X
1.2
1.0
0.8
Density

0.6
0.4
0.2
0.0

−0.5 0.0 0.5 1.0 1.5 2.0 2.5

¿Convencidos?
Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 30 / 43
Notas acerca del histograma
NOTA: Trabajar con histogramas para generar una distribución empírica puede
tener sus dificultades.

Cuando la muestra es demasiado grande, y la variable aleatoria no es acotada,


existe una probabilidad no menor de obtener un valor generado tan grande
que distorsione la escala del histograma. Termina siendo una o dos barras con
casi toda la densidad y el resto en blanco.
Para solucionar esto, acota los límites del gráfico con xlim, y aumenta el
número de barras breaks. También existe ylim, para acotar los límites del
eje y, de ser necesario.
El histograma puede mostrar formas más amplias que los mismos rectángulos,
pero no puede reflejar apropiadamente irregularidades en pequeñas escalas.
Para solucionar esto, aumenta el tamaño de la muestra y aumenta el número
de barras.
NOTA: demasiadas barras en un histograma diluye el efecto de agrupar los
valores de una variable correctamente, y termina siendo una “pampa“.
Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 31 / 43
Notas acerca del histograma
Datos extremos! Acercamos la vista
0.020

0.020
Density

Density
0.010

0.010
0.000

0.000
0 200 400 600 800 0 20 40 60 80 100

Z Z

Aumentamos las barras Densidad coincide


0.08

0.08
Density

Density
0.04

0.04
0.00

0.00

0 20 40 60 80 100 0 20 40 60 80 100

Z Z

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 32 / 43
Notas acerca del histograma
Muchas barras Demasiadas barras
1.5

3.0
2.5
1.0

2.0
Density

Density

1.5
0.5

1.0
0.5
0.0

0.0

2.0 2.5 3.0 2.0 2.2 2.4 2.6 2.8 3.0 3.2

Z Z

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 33 / 43
Otro ejemplo

Si X ∼ Exponencial(1), entonces ocurre que

P([X ] = k) = p(1 − p)k

con k ∈ N0 y p = 1 − e −1 = e−1 e . Es decir, la parte entera de una variable


exponencial tiene distribución llamada geométrica.
Si bien esta propiedad es fácil de demostrar matemáticamente, ilustrémosla
con una simulación.

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 34 / 43
Parte entera de exponencial
N <- 1000
X <- rexp(N, rate = 1)
hist(X, freq = FALSE, main = "Muestra exponencial", ylim=c(0,0.9))
curve(dexp(x, rate = 1) , add = TRUE, col = 2, lwd=2)

Muestra exponencial
0.8
0.6
Density

0.4
0.2
0.0

0 2 4 6 8

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 35 / 43
Parte entera de exponencial

Calculamos la parte entera y graficamos sus proporciones para cada valor y


lo comparamos con la función de probabilidad dada
Y <- floor(X)
prob.empirica <- prop.table(table(Y))
prob.empirica

## Y
## 0 1 2 3 4 5 7 8
## 0.636 0.225 0.089 0.031 0.010 0.006 0.002 0.001
p <- 1 - exp(-1)
prob.geometrica <- p*(1-p)ˆ(0:7) # Evaluar de 0 a 7
round(rbind(prob.empirica,prob.geometrica),3)

## 0 1 2 3 4 5
## prob.empirica 0.636 0.225 0.089 0.031 0.010 0.006
## prob.geometrica 0.632 0.233 0.086 0.031 0.012 0.004
## 7 8
## prob.empirica 0.002 0.001
## prob.geometrica 0.002 0.001

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 36 / 43
Parte entera de exponencial
plot(prob.empirica, xlab = "X", ylab = "Probabilidad")
points(0:7, prob.geometrica, col = 2, pch = 20, lwd=6)
0.6
0.5
0.4
Probabilidad

0.3
0.2
0.1
0.0

0 1 2 3 4 5 7 8

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 37 / 43
Comentarios

Recordar que el histograma no siempre es apropiado para variables discretas,


pues toma valores separados. Comúnmente usamos table y evaluar las
probabilidades en cada punto.
Para todos estos resultados, el que el gráfico se vea bien no significa que el
resultado es exacto ni demostramos nada. Nos serviría más si estuviera muy
desacertada la afirmación porque veríamos unos gráficos muy disímiles.

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 38 / 43
Acerca de esperanzas, sumas o integración. . .
R no es una herramienta algebraica, y opera con valores y vectores finitos.
Por lo tanto, no se pueden calcular límites no triviales de manera exacta.
En suma, no se pueden calcular derivadas, integrales (propias e impropias)
ni series. R tiene programadas funciones que calculan integrales
numéricamente (como pnorm, pgamma, etc.), pero respecto a sumas o
límites infinitos, sólo quedan dos opciones sencillas. Por ejemplo, para
calcular E (X 2 ):
Truncar una secuencia de los valores teóricos

X N
X
E (X 2 ) = k 2 · pX (k) ≈ k 2 · pX (k)
k=1 k=1

Simular la variable X ∼ pX en réplicas {x1 , . . . , xN } y


∞ N
X 1 X
E (X 2 ) = k 2 · pX (k) ≈ xi2
N
k=1 k=1

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 39 / 43
Acerca de esperanzas, sumas o integración. . .

La primera opción se llama sumas parciales, y ojalá que N sea grande. Es


requisito tener la probabilidad exacta para cada valor de k. Para
distribuciones comunes programadas en R, no existe mayor inconveniente.
Por ejemplo, calcular E (X 3 ) para X ∼ Poisson(λ = 4),
N <- 1000 # Término final de la suma parcial

k <- 0:N
probs.k <- dpois(k, lambda = 4) # Calcular cada término

sum(kˆ3 * probs.k) # Sumarlos

## [1] 116

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 40 / 43
Acerca de esperanzas, sumas o integración. . .

La segunda opción se llama Monte Carlo, y se espera usar una muestra


grande. Aquí no es requisito tener la fórmula exacta de la distribución, sólo
los datos simulados. También sirve para variables contínuas.
N <- 10000

X <- rpois(N, lambda = 4)


mean(Xˆ3)

## [1] 114.7463
1/N * sum(Xˆ3)

## [1] 114.7463

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 41 / 43
Más ejercicios

1 Calcula un valor aproximado de la integral


Z ∞
cos(x ) e −x dx
0

mediante una simulación Monte-Carlo. ¿Qué distribución de muestreo


podemos usar? Exponencial
2 ¿Y para esta integral? Uniforme

Z 1
cos(x ) e −x dx
0

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 42 / 43
Más ejercicios

3 Calcule la siguiente integral numéricamente: ¿Nos será familiar?


Normal

Z ∞
1 1 2
x 2 · √ · e − 2 x dx
−∞ 2π

Felipe Ossa y Pilar Tello Probabilidad y Estadística: Laboratorio 05 Segundo Semestre 2022 43 / 43

También podría gustarte