Punto 1 - Simulación Resultado de la Suma del Lanzamiento de dos Dados

  1. Crear una función sin entradas pero que simule el lanzamiento de dos dados legales y sume el resulado de ellos.
sim_Lanzamiento=function(){
  dado1=1:6
  dado2=1:6
  x=sample(dado1,1)+sample(dado2,1)
  return(x)
}
suma=sim_Lanzamiento()
print(suma)
## [1] 11
  1. Generalizar la función para que tenga como entrada el total de lanzamientos y cuente los resultados de una condición en particular (ejemplo suma igual a 12).
#Opcion 1
Simulacion_2=function(nlanzamientos,valor_condicion){
    #nlanzamientos=500
lanzamientos=array(NA,nlanzamientos)
for(i in 1:nlanzamientos){
  lanzamientos[i]=sim_Lanzamiento()
}
##print(lanzamientos)
return(sum(lanzamientos==valor_condicion))
}  
Simulacion_2(nlanzamientos=500,valor_condicion = 12)
## [1] 11
##Opcion 2#
Simulacion_3=function(nlanzamientos,valor_condicion){
  dado1=1:6
  dado2=1:6
  x=sample(dado1,size=nlanzamientos,replace=TRUE)+sample(dado2,size=nlanzamientos,replace=TRUE)
   return(sum(x==valor_condicion))
}
Simulacion_3(nlanzamientos=500,valor_condicion = 12)
## [1] 23
  1. Con la función de b. compare los resultados de la simulación para 10000 lanzamientos con los resultados esperados de acuerdo a la probabilidad calculada con el total de combinaciones.
#Probabilidad Teorica (Combinaciones)
dado1=1:6
dado2=1:6
espacio=expand.grid(dado1,dado2)
y=apply(espacio,1,sum)
#data.frame(espacio,y)
probabilidad_teorica=table(y)/36
plot(2:12,probabilidad_teorica,type="b")

data.frame(probabilidad_teorica)
y Freq
2 0.0277778
3 0.0555556
4 0.0833333
5 0.1111111
6 0.1388889
7 0.1666667
8 0.1388889
9 0.1111111
10 0.0833333
11 0.0555556
12 0.0277778
#Probabilidad Via simulación
Simulacion_3(nlanzamientos=10000,valor_condicion = 2)/10000
## [1] 0.028
Tabla_simulacion=probabilidad_teorica
for(i in 2:12){
  Tabla_simulacion[i-1]=Simulacion_3(nlanzamientos=10000,valor_condicion = i)/10000
}
print(Tabla_simulacion)
## y
##      2      3      4      5      6      7      8      9     10     11     12 
## 0.0301 0.0541 0.0842 0.1076 0.1343 0.1647 0.1416 0.1127 0.0816 0.0560 0.0290
diferencia=probabilidad_teorica-Tabla_simulacion
data.frame(probabilidad_teorica,Tabla_simulacion,diferencia)
y Freq y.1 Freq.1 y.2 Freq.2
2 0.0277778 2 0.0301 2 -0.0023222
3 0.0555556 3 0.0541 3 0.0014556
4 0.0833333 4 0.0842 4 -0.0008667
5 0.1111111 5 0.1076 5 0.0035111
6 0.1388889 6 0.1343 6 0.0045889
7 0.1666667 7 0.1647 7 0.0019667
8 0.1388889 8 0.1416 8 -0.0027111
9 0.1111111 9 0.1127 9 -0.0015889
10 0.0833333 10 0.0816 10 0.0017333
11 0.0555556 11 0.0560 11 -0.0004444
12 0.0277778 12 0.0290 12 -0.0012222

Punto 2 - Simulación Concepto de Distribucción Muestral (Caso proporciones)

  1. Genere una población con una cantidad dada de 0 y 1
#Poblacion con 10% de 1 y 90% de o
poblacion=c(rep(x=1,100),rep(x=0,900))

#b. Crear una función que obtenga una muestra de esa población de a. y calcule el porcentaje de 1.
sum(sample(poblacion,size=200)==1)/200
## [1] 0.125
#c. Repita este proceso una cantidad (mas de 1000 veces) y guarde los porcentajes de cada iteración

#Opcion 1
porcentaje_muestra=array(NA,1000)
for(i in 1:1000){
  poblacion=c(rep(x=1,100),rep(x=0,900))
  porcentaje_muestra[i]=sum(sample(poblacion,size=200)==1)/200
}
  
#opcion 2
Calcula_unos=function(n_muestra){
  poblacion=c(rep(x=1,100),rep(x=0,900))
  return(sum(sample(poblacion,size=n_muestra)==1)/n_muestra)
}
calculo=sapply(rep(200,1000),Calcula_unos)
summary(calculo)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0450  0.0850  0.1000  0.1004  0.1150  0.1600
#d. Grafique los resultados de estos porcentajes y calcule algunos indicadores descriptivos (compare los resultados con la población generada inicial).

summary(porcentaje_muestra)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.04000 0.08500 0.10000 0.09965 0.11000 0.16000
hist(porcentaje_muestra) 
abline(v=0.1,col="red",lwd=4)