Problema 1



Estimación de la Probabilidad y la Media

Una empresa de servicio técnico recibe, en promedio, 5 solicitudes de reparación por hora. Suponiendo que el número de solicitudes sigue una distribución de Poisson, realiza las siguientes actividades:



Cálculo de probabilidad teórica:

Calcula la probabilidad de que en una hora lleguen exactamente 3 solicitudes usando la fórmula de la distribución de Poisson. Expresa el resultado como \(P(𝑋=3)\).

\[P(X=3) = \dfrac{5^{3}}{3!} \exp{\{-5 \}} = 0.1403739 \]

[1] 0.1403739
P(X=3) =  0.1403739



Simulación con una muestra:

  1. Genera una muestra aleatoria de tamaño n = 1000 con rpois(n, lambda = 5).



  1. Calcula la frecuencia relativa para \(𝑋=3\) (\(f_n(X=3)\))
[1] 0.1413

Compara e interpreta el resultado frente a la probabilidad teórica.

dpois(3,5)-fx3
[1] -0.0009261042



Análisis de la variabilidad entre muestras:

Genera 100 muestras aleatorias de tamaño n = 1000.

m= 100 # numero de muestras
n=1000  # tamaño de la muestra

y = rpois(m*n,5)
y3 = as.numeric(y ==3)
m = matrix(y3, ncol = n)
dim(m)
[1]  100 1000

Calcula la frecuencia relativa para 𝑋=3 en cada muestra.

fn3 = apply(m, 1, sum)/n

Construye un gráfico de dispersión: Eje X: Indexación por cada muestra (1 a 100). Eje Y: Frecuencias relativas 𝑓𝑛(𝑋=3) Dibuja una línea horizontal en 𝑃(𝑋=3) y comenta si existe una tendencia.

plot(1:100, fn3, las=1)
abline(h=0.1403739, col ="red")

Impacto del tamaño muestral:

Genera muestras aleatorias con tamaños: \(5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000\). Calcula la frecuencia relativa de \(𝑋=3\) para cada tamaño.

Construye un gráfico de dispersión: Eje X: Indexación (1 al 20) por cada tamaño muestral. Eje Y: Frecuencias relativas 𝑓𝑛(𝑋=3)

Dibuja la línea en 𝑃(𝑋=3) y describe si aparece una tendencia.

set.seed(1234)
z = as.numeric(rpois(1000,5)==3)

fn=c(
sum(z[1:5])/5,
sum(z[1:10])/10,
sum(z[1:20])/20,
sum(z[1:30])/30,
sum(z[1:40])/40,
sum(z[1:50])/50,
sum(z[1:60])/60,
sum(z[1:70])/70,
sum(z[1:80])/80,
sum(z[1:90])/90,
sum(z[1:100])/100,
sum(z[1:200])/200,
sum(z[1:300])/300,
sum(z[1:400])/400,
sum(z[1:500])/500,
sum(z[1:600])/600,
sum(z[1:700])/700,
sum(z[1:800])/800,
sum(z[1:900])/900,
sum(z[1:1000])/1000)

plot(1:20, fn, las=1, xlab = " número de muestra")
abline(h=0.1403739, col ="red")

set.seed(1234)

# Generar la secuencia binaria
z <- as.numeric(rpois(1000, 5) == 3)

# Crear los tamaños de muestra
n_values <- c(seq(5, 100, 5), seq(200, 1000, 100))

# Calcular las proporciones acumuladas de manera vectorizada
fn <- sapply(n_values, function(n) mean(z[1:n]))

# Graficar los resultados
plot(seq_along(n_values), fn, las = 1, xlab = "Número de muestra", ylab = "Frecuencia relativa", type = "b", pch = 19)
abline(h = 0.1403739, col = "red")

Convergencia de la media muestral:

Genera 100 muestras de tamaño n = 1000. Calcula el promedio muestral de solicitudes en cada muestra. Construye un gráfico de dispersión: Eje X: Indexación por cada muestra (1 a 100). Eje Y: Promedios muestrales. Traza la línea horizontal en la media teórica (\(\lambda\)) y analiza la tendencia.

set.seed(1234)
s = rpois(100*1000, 5)
ms = matrix(s, ncol = 1000)
dim(ms)
[1]  100 1000
media = apply(ms, 1, mean)

plot(1:100, media, las=1)
abline(h=5, col="red")

Impacto del tamaño muestral en la media:

Genera muestras aleatorias con tamaños: 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000. Calcula el promedio muestral para cada tamaño. Construye un gráfico de dispersión: Eje X: Indexación (1 al 20) por cada tamaño muestral. Eje Y: Promedios muestrales. Dibuja la línea horizontal en la media teórica (\(\lambda =5\)) y compara si el promedio se aproxima a medida que crece el tamaño.

library(dplyr)

Adjuntando el paquete: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
set.seed(1234)
n=1000
m= 1000
p = rpois(n*m,5) %>% 
        matrix( ncol = n)

dim(p)
[1] 1000 1000
# Genera muestras aleatorias con tamaños: 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000.
m5 = apply(p[,1:5],1, mean)
m10 =  apply(p[,1:10],1, mean)
m20 =  apply(p[,1:20],1, mean)
m30 =  apply(p[,1:30],1, mean)
m40 =  apply(p[,1:40],1, mean)
library(dplyr)

set.seed(1234)
n <- 1000
m <- 1000

# Generar la matriz de Poisson
p <- matrix(rpois(n * m, 5), ncol = n)

# Vector con los tamaños de muestra
sample_sizes <- c(5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000)

# Aplicar mean sobre diferentes tamaños de muestra usando lapply y convertir a una lista nombrada
means_list <- lapply(sample_sizes, function(size) apply(p[, 1:size], 1, mean))

# Convertir la lista en un dataframe
means_df <- as.data.frame(means_list)
names(means_df) <- paste0(sample_sizes)
boxplot(means_df, las =1)
abline(h=5, col="red")

apply(means_df, 2, mean)
       5       10       20       30       40       50       60       70 
5.013200 4.996800 5.013050 5.021167 5.002550 5.002860 5.001900 5.006986 
      80       90      100      200      300      400      500      600 
5.009100 5.008044 5.003740 5.002570 5.000623 4.998790 5.002874 5.000837 
     700      800      900     1000 
5.000121 5.000400 4.999782 4.999370 
apply(means_df, 2, sd)
         5         10         20         30         40         50         60 
1.00695567 0.69588362 0.50110209 0.41183117 0.35791459 0.32323475 0.29266275 
        70         80         90        100        200        300        400 
0.27284093 0.25591355 0.23938863 0.22647407 0.16193724 0.13117616 0.11177552 
       500        600        700        800        900       1000 
0.09946355 0.09114937 0.08315122 0.07677542 0.07204963 0.06837388 

Condiciones de entrega La solución se debe presentar en un archivo HTML generado mediante RMarkdown (.Rmd).

Responde a los ejercicios en orden (de la a hasta la f).

Por cada ejercicio, incluye:

Código R: Con comentarios explicativos. Gráficos y cálculos: Según lo solicitado. Interpretación: Explicación clara de los resultados obtenidos. El archivo .Rmd y el HTML generado deben entregarse juntos.

Establece la semilla con tu código de estudiante: set.seed(codigo).

Asegúrate de que todos los códigos compilen correctamente antes de la entrega.