EL PROBLEMA DE MONTY HALL

Marcos Matabuena

07/10/2015

EL PROBLEMA DE MONTY HALL

El Problema de Monty Hall es un problema de probabilidad que está inspirado por el concurso televisivo estadounidense Let’s Make a Deal (Hagamos un trato) . Su nombre proviene del presentador, Monty Hall.
Con titulo

En este concurso, el concursante escoge una puerta entre tres, y su premio consiste en lo que se encuentra detrás. Una de ellas oculta un coche, y tras las otras dos hay una cabra. Sin embargo, antes de abrirla, el presentador, que sabe dónde está el premio, abre una de la s otras dos puertas y muestra que detrás de ella hay una cabra. Ahora tiene el concursante una última oportunidad de cambiar la puerta escogida .
La pregunta que surge es: ¿Cúal sería la estrategia correcta?

Simulación en R

Código R

# Sea X una variable aleatoria que toma el valor 0 si en la puerta hay un coche y 1 si es una cabra
# Utilizamos una función para el problema
res= function(n){
  # Generamos n simulaciones de las posiciones de los objetos en cada puerta
puertas=replicate(n,sample(c(1,1,0),replace=F))
# Expresamos los resultados del experimento en una matrix nx3
experimento= t(puertas)
# generamos n eleciones aleatorias del juego del concursante
jugador= replicate(n,sample(c(1,2,3),size=1))
# variable auxiliar necesaria para devolver la posicion del coche dentro cada fila de la matriz  
idpos= 3*(0:(n-1))
# Puerta donde esta el coche
poselm= which(t(experimento==0))-idpos
# Numero de veces donde acertamos donde esta el coche si no cambiamos la puerta
cuantos=sum(jugador==poselm)
## Número de veces donde acertamos donde esta el coche si cambiamos la puerta 
cuantos2=sum(jugador!=poselm)
# Probabilidad de acertar en nuestra elección inicial
probnc= cuantos/n
# Probabilidad de acertar si cambiamos de puerta
probc= cuantos2/n
probnc
probc
resultados= c(probc)
}

Para conseguir una aproximación asintótica fiable debemos hacer que el número de simulaciones tienda a infinito, en este caso fijamos el número de simulaciones a n=1000000.

start <- Sys.time()

probc= res(1000000)
probnc= 1-probc

Si decidimos no cambiar la puerta , la probabilidad de éxito de acertar donde esta el coche es:

## [1] 0.333799

En caso contrario:

## [1] 0.666201

En definitiva, la mejor estrategia es cambiar de puerta, tenemos el doble de probabilidades
El tiempo de ejecución fue:

## Time difference of 42.49867 secs

Simulación en R

Comportamiento de la distribución asintótica con diferentes tamaños muestrales

Probabilidad de acercar el coche si cambiamos de puerta

Resolución matemática

Sean \(X(\omega,P)\to\{1,2,3\}\) una variable aleatoria que indica la probabilidad de que se encuentre el coche en cada una de las puertas y sea \(Y(\omega,P)\to\{1,2,3\}\) la variable aleatoria que se define como la puerta que escoge el concursante al azar mientras \(Z(\omega,P)\to\{coche,cabra\}\) la variable aleatoria del elemento que seleciona el presentador, es claro que \(P(Z=cabra)=1\).
Tenemos que calcular:
\(P(X=Y|Z=cabra)\)

es decir la probabilidad de que el concursante escogiendo al azar la puerta acierte donde esta el coche.
Aplicando la definición de la probabilidad condicionada:
\(P(X=Y|Z=cabra)=\frac{P(X=Y\cap Z=Cabra)}{P(Z=Cabra)}=P(X=Y)=\frac{1}{3}\)

Mientras que la probabilidad de acertar la posición del coche si cambiamos la puerta es:
\(P(X\neq Y|Z=cabra)=1-P(X=Y|Z=cabra)=\frac{2}{3}\)

Siendo los valores que obteniamos de manera aproximada con la simulación.

Problema modificado

Problema con 4 puertas simulado

# Sea X una variable aleatoria que toma el valor 0 si en la puerta hay un coche y 1 si es una cabra
# Utilizamos una función para el problema
res= function(n){
  # Generamos n simulaciones de las posiciones de los objetos en cada puerta
puertas=replicate(n,sample(c(1,1,1,0),replace=F))
# Expresamos los resultados del experimento en una matrix nx3
experimento= t(puertas)
# generamos n eleciones aleatorias del juego del concursante
jugador= replicate(n,sample(c(1,2,3,4),size=1))
# variable auxiliar necesaria para devolver la posicion del coche dentro cada fila de la matriz  
idpos= 4*(0:(n-1))
# Puerta donde esta el coche
poselm= which(t(experimento==0))-idpos
  suma=0

for(i in 1:n){
  aux= rep(1:4,1)
  aux2=aux-jugador[i]
  # puertas que puede escoger  
  conj= aux[which(aux2!=0)]
  ## puertas en las que estan la cabra
  conj2= conj[which((conj-poselm[i])!=0)]
  ## puerta que abre el presentador
  p=sample(conj2,1)
  ## puertas que puede elegir el concursante
  conj3= conj[which((conj-p)!=0)]
  ## puerta que elige el concursante
  conj4= sample(conj3,1)
  if(conj4==poselm[i]){
    suma= suma +1
  }
  }


# Numero de veces donde acertamos donde esta el coche si no cambiamos la puerta
cuantos=sum(jugador==poselm)
# Probabilidad de acertar en nuestra elección inicial
probnc= cuantos/n
# Probabilidad de acertar si cambiamos de puerta
probc= suma/n
probnc
probc
resultados= c(probc,probnc)
}

Para conseguir una aproximación asintótica fiable debemos hacer que el número de simulaciones tienda a infinito, en este caso fijamos el número de simulaciones a n=1000000.

start <- Sys.time()

res= res(1000000)

Si decidimos no cambiar la puerta , la probabilidad de éxito de acertar donde esta el coche es:

## [1] 0.250375

En caso contrario:

## [1] 0.374764

En definita, es mejor tambien en esta opción cambiar de puerta.

El tiempo de ejecución fue:

## Time difference of 1.544953 mins

Resolución matemática

Denotamos el suceso aleatorio \(A\), como que el concursante escoge el coche en su primera elección, mientras el suceso \(B\) , el concursante elige el coche tras cambiar de puerta. Es claro que \(P(A)=1/4\) con una simple aplicación de la ley de Laplace. Además:
\(P(B)= P[B|A]P(A)+P(B|\overline{A}))P(\overline{A})\)

Es claro \(P(B|\overline{A}))=1/2\) y \(P[B|A]=0\) .
En definitiva,\(P(B)=3/8\)