Objetivos de Aprendizaje:

Después de realizar con éxito esta práctica serás capaz de:
* Utilzar R para simular algunas probabilidades utilizando el enfoque de frecuencias relativas.
* Explicar como las frecuencias relativas pueden interpretarse como probabilidades por medio de la relación \(\displaystyle P(A) = \lim_{n\to \infty} \frac{n_{A}}{n}\)

El Concepto de Frecuencia Relativa

La frecuencia relativa de ocurrencia de un evento aleatorio A está dado por el cociente \(\frac{n_{A}}{n}\). El denominador es el número de veces que el experimento se repite y el numerador es el número de veces que el evento A ocurre en estas repeticiones.
Para completar con éxito esta práctica es necesario comprender correctamente este concepto, por lo que vamos a estudiarlo a pequeña escala, para que una vez comprendido a este nivel, se pueda trasladar ese conocimiento a gran escala, es decir cuando \(n\to\infty\).
Para explicarlo vamos a usar el siguiente ejemplo:

El departamento de ingeniería de una empresa de tecnología está formado por 8 hombres y 4 mujeres. Para conocer las opiniones de los empleados sobre los diversos beneficios, la oficina de recursos humanos planea formar un focus group seleccionando de manera aleatoria a cinco miembros del departamento.
a. ¿Cuál es la probabilidad que el focus group esté formado sólo por hombres? RESPUESTA: 7/99.
b. ¿Cuál es la probabilidad que el focus group esté formado por 2 hombres y 3 mujeres? RESPUESTA: 14/99

Primera parte: Simulando Una Extración

Para simular el primer literal seguiremos los siguientes pasos:

  1. Generamos el grupo de trabajadores de la empresa:
trabajadores <- c(paste("M", 1:4, sep = "."), paste("H", 1:8, sep = "."))
trabajadores
##  [1] "M.1" "M.2" "M.3" "M.4" "H.1" "H.2" "H.3" "H.4" "H.5" "H.6" "H.7"
## [12] "H.8"

Como podemos observar, esta porción de código genera el grupo de trabajadores: Por ejemplo H.3 representa al tercer hombre y M.1 a la primera mujer.

  1. Seleccionamos al grupo de 5 trabajadores de manera aleatoria (corre varias veces el siguiente código para que veas que cada vez se hace una selección diferente)
seleccion <- sample(trabajadores, 5, replace = FALSE)
seleccion
## [1] "H.1" "M.1" "H.8" "H.6" "H.7"

Esta porción de código utiliza la función sample() que hace una selección aleatoria de tamaño 5 del grupo de trabajadores. El parámetro replace (para muestreo con o sin reemplazo) está fijado a FALSE, ya que no deseamos que un mismo trabajador sea seleccionado dos veces.

  1. Contamos el númeo de hombres que han sido seleccionados en el paso anterior. Esto se hace contando cuántas letras H aparecen en el grupo de 5. La función substr() permite eliminar, por ejemplo de H.1, los caracteres .1 y dejar sólo la H para luego contarlas por medio de la función sum()
num_hombres <- sum(substr(seleccion, 1, 1) == "H")
print(num_hombres)
## [1] 4

El número mostrado corresponde al número de Hombres en el grupo de 5 que han sido seleccionados.

  1. Verificamos si el número de hombres que han sido seleccionados corresponde a 5 (recuerde que estamos encontrando la probabilidad de que el focus group esté formado sólo por hombres). Esto lo haremos comparando la variable num_hombres con 5. Si es cierto el resultado es TRUE, en caso contrario, es FALSE.
num_hombres==5
## [1] FALSE

Hasta este paso, hemos realizado una extracción de 5 trabajadores de los 8 posibles y hemos contado cuántos hombres forman parte de la extracción. Repite algunas veces estos pasos hasta que creas que están bien comprendidos.

Segunda Parte: Simulando Muchas Extracciones

  1. Finalmente repetimos muchas veces los pasos anteriores de manera automática por medio de la siguiente función.
n <- 30 ## Número de réplicas, es decir cuántas veces repetiremos el experimento. Modica acá para fijar el número de réplicas.

focus_group <- function(){  ## Inicion de la función
  trabajadores <- c(paste("M", 1:4, sep = "."), paste("H", 1:8, sep = ".")) # Generando a los trabajadores
  seleccion <- sample(trabajadores, 5, replace = FALSE) # Seleccionado 5 trabajadores de manera aleatoria
  num_hombres <- sum(substr(seleccion, 1, 1) == "H") # Averiguando cuántos hobres van en la selección de 5
  num_hombres == 5 # Verificamos si hay 5 hombres (esto devuelve un vector de tamaño 1 con TRUE o FALSE)
}
### Fin de la definición de la Función que realiza la selección aleatoria de tamaño 5  

focus_group_largoplazo <- replicate(n, focus_group()) # Repite n veces la función anterior
frec_relativas <- cumsum(focus_group_largoplazo)/1:n ## Calcula las frecuencias relativas
plot(1:n,frec_relativas)
grid()
abline(h = 7/99,col="red",lty=2) ## 7/99 es el valor teórico de la probabilidad pedida.

mean(focus_group_largoplazo) ## Este es el valor promedio al que se estabiliza la frecuencia relativa.
## [1] 0

Repite el paso 5 para n=300, 1000 y 3000. Compara el comportamiento de las gráficas generadas y el valor de la frecuencia relativa.

Tercera Parte: Ejercicio

Modifica el código anterior para encontrar la probabilidad de que el focus group esté formado por dos hombres y tres mujeres. Agrega un línea de tendencia en el valor teórico de 14/99 ¿A qué valor se estabiliza la frecuencia relativa? Elige un número adecuado de réplicas.

Cuarta Parte: Evaluación.

**Una planta de producción emplea a 6 trabajadores en el turno de la mañana, 5 trabajadores en el turno de la tarde, y 10 trabajadores en el turno de la noche. Un consultor de control de calidad seleccionará 6 trabajadores para hacerles una entrevista personal. Suponga que la selección se hace de manera aleatoria.
Utiliza el siguiente código para simular las probabilidades pedidas (las preguntas están en el formulario)

n <- 5000 
seleccion <- function(){  
  trabajadores <- c(paste("D", 1:6, sep = "."), paste("T", 1:5, sep = "."),paste("N", 1:10, sep = "."))
  grupo <- sample(trabajadores, 6, replace = FALSE)
  num_Noche <- sum(substr(grupo, 1, 1) == "N")
  num_Tarde <- sum(substr(grupo, 1, 1) == "T")
  num_Dia <- sum(substr(grupo, 1, 1) == "D")
  #num_Noche == X & num_Tarde == Y & num_Dia == Z  # En esta línea & indica la ondicion "AND". Cambia los valores de X, Y y Z según se pida en los literales y borra el # del inicio para activar la línea.
}
### Fin de la definición de la Función que realiza la selección aleatoria de tamaño 5

Seleccion_largoplazo <- replicate(n, seleccion()) 
frec_relativas <- cumsum(Seleccion_largoplazo)/1:n 
plot(1:n,frec_relativas)
grid()

print(round(mean(Seleccion_largoplazo),2)) # Esta función redondea a dos dígitos para hacer más fácil la lcomparación al repetir muchas veces el experimento.
## [1] 1.73

Corre el código anterior las veces que consideres necesarias y luego realiza la evaluación de la actividad.