Ejercicio B1.9

Se hacen dos inversiones de 10000€ cada una en dos proyectos. Se supone que el proyecto A va a producir un rendimiento neto de 800, 1000 y 1200 euros con probabilidades respectivas de 0.2, 0.6, 0.2. Se supone que el proyecto B va a producir una ganancia neta de 800, 1000, y 1200 euros, con probabilidades respectivas 0.3, 0.4, 0.3. Si asumimos que lo que se gana con un proyecto es independiente de lo que se gana con el otro, responde a las siguientes preguntas utilizando simulación, dando también una medida del error.

  1. ¿Cuál es la probabilidad de que la ganancia total sea de 2000 euros exactamente?

  2. ¿Cuál es la probabilidad de que la ganancia total sea igual o superior a 2000 euros?

  3. ¿Cuál es la probabilidad de que la ganancia sea inferior a 2000 euros?

Solución teórica

Algoritmo de simulación

  1. Simular el beneficio de la inversión en cada proyecto de modo independiente (con el método de la transformada inversa), con :
    • BpA ~ Pr(beneficio|proyecto A) = (0.2, 0.6, 0.2)

    • BpB ~ Pr(beneficio|proyecto B) = (0.3, 0.4, 0.3)

  2. Calcular Beneficio conjunto, Bconj=BpA+BpB
  3. \(1\) Aproximar Pr(Bconj=2000) contando las simulaciones en las que Bconj=2000. Obtener un vector indicador, promediarlo y calcular su error para calcular el intervalo de confianza.
  4. \(2\) Aproximar \(P(Bconj>=2000)\) contando las simulaciones en las que \(Bconj>=2000\). Obtener un vector indicador, promediarlo y calcular su error para calcular el intervalo de confianza.
  5. \(3\) Aproximar \(P(Bconj<2000)\) contando las simulaciones en las que \(Bconj<2000\).Obtener un vector indicador, promediarlo y calcular su error para calcular el intervalo de confianza.
# Alternativa 1 de simulación: método transformada inversa
set.seed(123)
# Simulaciones
nsim <- 10000
# Beneficios por inversión
BpA <- c() # inversión A
BpB <- c() # inversión B
Bconj <- c() # Beneficio conjunto
# valores uniformes para cada proyecto (indeptes)
unif1 <- runif(nsim) # proyecto A
unif2 <- runif(nsim) # proyecto B
# Establecemos probabilidad de ganancia de cada proyecto y su beneficio
pA <- c(0.2, 0.6, 0.2)
pacumA <- cumsum(pA)
BA <- c(800, 1000, 1200)
pB <- c(0.3, 0.4, 0.3)
pacumB <- cumsum(pB)
BB <- c(800, 1000, 1200)
i <- 1
while (i <= nsim)
{
  # Proyecto A
  BpA[i] <- BA[min(which(unif1[i] <= pacumA))]
  # Proyecto B
  BpB[i] <- BB[min(which(unif2[i] <= pacumB))]
  # Ganancia conjunta
  Bconj[i] <- BpA[i] + BpB[i]
  i <- i + 1
}
# Distribución beneficios totales
prop.table(table(Bconj))
## Bconj
##   1600   1800   2000   2200   2400 
## 0.0584 0.2668 0.3606 0.2574 0.0568
# Alternativa 2 de simulación: con 'sample'
set.seed(123)
# Simulaciones
nsim <- 10000
BpA=sample(BA,nsim,replace=TRUE,prob=pA)
BpB=sample(BB,nsim,replace=TRUE,prob=pB)
Bconj=BpA+BpB

# Distribución beneficios totales
prop.table(table(Bconj))
## Bconj
##   1600   1800   2000   2200   2400 
## 0.0568 0.2638 0.3526 0.2667 0.0601
  1. ¿Cuál es la probabilidad de que la ganancia total sea de 2000 euros exactamente?
indicador=(Bconj==2000)
estim=mean(indicador)
error=sd(indicador)/sqrt(nsim)
ic_low=estim-error*qnorm(0.975)
ic_up=estim+error*qnorm(0.975)
cat("Pr(Gan=2000)=",estim,"[",ic_low,",",ic_up,"]")
## Pr(Gan=2000)= 0.3526 [ 0.3432352 , 0.3619648 ]
  1. ¿Cuál es la probabilidad de que la ganancia total sea igual o superior a 2000 euros?
indicador=(Bconj>=2000)
estim=mean(indicador)
error=sd(indicador)/sqrt(nsim)
ic_low=estim-error*qnorm(0.975)
ic_up=estim+error*qnorm(0.975)
cat("Pr(Gan>=2000)=",estim,"[",ic_low,",",ic_up,"]")
## Pr(Gan>=2000)= 0.6794 [ 0.6702522 , 0.6885478 ]
  1. ¿Cuál es la probabilidad de que la ganancia sea inferior a 2000 euros?
indicador=(Bconj<2000)
estim=mean(indicador)
error=sd(indicador)/sqrt(nsim)
ic_low=estim-error*qnorm(0.975)
ic_up=estim+error*qnorm(0.975)
cat("Pr(Gan<2000)=",estim,"[",ic_low,",",ic_up,"]")
## Pr(Gan<2000)= 0.3206 [ 0.3114522 , 0.3297478 ]