Punto 1. Simulación resultado de la suma del lanzamiento de dos dados

#punto a) Función sin entradas que simule lanzamiento de dos dados y que sume el resultado de ellos

dado1= 1:6
dado2= 1:6
  
sim_lanza=function(){

  x=sample(dado1,1, TRUE) + sample(dado2,1, TRUE)
  return(x)
}

##Espacio muestral de todas las combinaciones

espacio=expand.grid(dado1,dado2)
x=apply(espacio,1,sum)

data.frame(espacio,x)
Var1 Var2 x
1 1 2
2 1 3
3 1 4
4 1 5
5 1 6
6 1 7
1 2 3
2 2 4
3 2 5
4 2 6
5 2 7
6 2 8
1 3 4
2 3 5
3 3 6
4 3 7
5 3 8
6 3 9
1 4 5
2 4 6
3 4 7
4 4 8
5 4 9
6 4 10
1 5 6
2 5 7
3 5 8
4 5 9
5 5 10
6 5 11
1 6 7
2 6 8
3 6 9
4 6 10
5 6 11
6 6 12
sim_lanza()
## [1] 5

#punto b) Función para que tenga como entrada el total de lanzamientos y cuente los resultados de una condición en partícular (suma igual a 12)

sim_lanza=function(){
  dado1=1:6
  dado2=1:6
  x=sample(dado1,1)+sample(dado2,1)
  return(x)
}

for (i in 1:10) {
  print(sim_lanza())
}
## [1] 5
## [1] 10
## [1] 4
## [1] 4
## [1] 11
## [1] 8
## [1] 9
## [1] 3
## [1] 10
## [1] 5
nlanza=10
lanzamientos=array(NA,nlanza)
for(i in 1:nlanza){
  lanzamientos[i]=sim_lanza()
  print(lanzamientos)
}
##  [1] 10 NA NA NA NA NA NA NA NA NA
##  [1] 10  4 NA NA NA NA NA NA NA NA
##  [1] 10  4  8 NA NA NA NA NA NA NA
##  [1] 10  4  8  5 NA NA NA NA NA NA
##  [1] 10  4  8  5  6 NA NA NA NA NA
##  [1] 10  4  8  5  6  4 NA NA NA NA
##  [1] 10  4  8  5  6  4 12 NA NA NA
##  [1] 10  4  8  5  6  4 12  5 NA NA
##  [1] 10  4  8  5  6  4 12  5  4 NA
##  [1] 10  4  8  5  6  4 12  5  4  8
sum(lanzamientos==12)
## [1] 1
lanzamientos==12
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE

##otra opción sapply(1:100,sim_lanza()) en este caso no aplica porque no tenemos entrada de datos

##primera opción con ciclo para repetir lanzamientos, debo colocar un objeto donde almacenar los datos 


simula_multi_lanza=function(nlanza,valor_condi){
  
lanzamientos=array(NA,nlanza)
for(i in 1:nlanza){
  lanzamientos[i]=sim_lanza()

}

 return(sum(lanzamientos==valor_condi))
}

simula_multi_lanza(nlanza = 500,valor_condi = 7)
## [1] 91
##Indica que cada vez que saco un valor en el dado, vuelve a participar en el siguiente lanzamiento, es un valor dependiente

##sample(dado1, size = 7, replace = TRUE)

##segunda opción, generalizar la función

sim_multi_lanza2=function(n_lanza,valor_condi){
  dado1=1:6
  dado2=1:6
  x=sample(dado1,size = n_lanza, replace = TRUE)+sample(dado2,size = n_lanza, replace = TRUE)
  return(sum(x==valor_condi))
}

sim_multi_lanza2(n_lanza = 500,valor_condi = 7)
## [1] 79

#punto c) con la función de b, comparar resultados de simulación para 10000 lanzamientos con resultados esperados de acuerdo a la probabilidad calculada con el total de combinaciones

#probabilidad teórica - resultado de las combinaciones

dado1 = 1:6
dado2 = 1:6

espacio=expand.grid(dado1,dado2)
y=apply(espacio,1,sum)

data.frame(espacio,y)
Var1 Var2 y
1 1 2
2 1 3
3 1 4
4 1 5
5 1 6
6 1 7
1 2 3
2 2 4
3 2 5
4 2 6
5 2 7
6 2 8
1 3 4
2 3 5
3 3 6
4 3 7
5 3 8
6 3 9
1 4 5
2 4 6
3 4 7
4 4 8
5 4 9
6 4 10
1 5 6
2 5 7
3 5 8
4 5 9
5 5 10
6 5 11
1 6 7
2 6 8
3 6 9
4 6 10
5 6 11
6 6 12
sim_lanza()
## [1] 7
prob_teorica=table(y)/36
prob_teorica
## y
##          2          3          4          5          6          7          8 
## 0.02777778 0.05555556 0.08333333 0.11111111 0.13888889 0.16666667 0.13888889 
##          9         10         11         12 
## 0.11111111 0.08333333 0.05555556 0.02777778
data.frame(prob_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
plot(2:12,prob_teorica,type="b")

#via simulación cuál es el valor aproximado de la probabilidad

sim_multi_lanza2(n_lanza = 100000,valor_condi = 2)/100000
## [1] 0.02762
sim_multi_lanza2(n_lanza = 100000,valor_condi = 7)/100000
## [1] 0.16729

##Punto 2. Simulación concepto de distribución muestral (caso proporciones)

#punto a). Población con una cantidad dada de 0 y 1 #población con 10% de unos

pob=c(rep(x=1,100), rep(x=0,900))

#punto b). Crear un función que obtenga una muestra de esa población de a. y cálcule el porcentaje de 1.

sum(sample(pob,size=200))/200
## [1] 0.085
#punto c). Repita este proceso una cantidad (mas de 1000 veces) y guarde los porcentajes de cada iteración.

#opción 1. forma poco ordenada

porcentajes_muestra=array(NA,1000)
for(i in 1:1000){
pob=c(rep(x=1,500), rep(x=0,500))
porcentajes_muestra[i]=sum(sample(pob,size=200))/200
}

porcentajes_muestra
##    [1] 0.460 0.460 0.535 0.485 0.495 0.515 0.510 0.530 0.470 0.525 0.500 0.505
##   [13] 0.480 0.475 0.520 0.520 0.500 0.550 0.505 0.485 0.480 0.465 0.465 0.520
##   [25] 0.490 0.475 0.505 0.520 0.510 0.470 0.535 0.425 0.525 0.520 0.460 0.520
##   [37] 0.535 0.540 0.540 0.465 0.515 0.540 0.510 0.495 0.540 0.465 0.530 0.500
##   [49] 0.485 0.520 0.525 0.480 0.495 0.455 0.485 0.450 0.530 0.500 0.480 0.545
##   [61] 0.515 0.565 0.525 0.500 0.475 0.560 0.505 0.530 0.520 0.460 0.495 0.500
##   [73] 0.530 0.540 0.500 0.510 0.495 0.470 0.530 0.490 0.525 0.465 0.475 0.525
##   [85] 0.565 0.525 0.525 0.440 0.525 0.500 0.515 0.510 0.515 0.435 0.530 0.440
##   [97] 0.475 0.475 0.500 0.500 0.500 0.485 0.480 0.485 0.490 0.460 0.500 0.475
##  [109] 0.460 0.500 0.485 0.535 0.515 0.515 0.535 0.480 0.460 0.445 0.525 0.510
##  [121] 0.515 0.490 0.510 0.495 0.490 0.515 0.480 0.470 0.515 0.490 0.505 0.460
##  [133] 0.460 0.510 0.485 0.505 0.450 0.515 0.515 0.500 0.460 0.535 0.510 0.470
##  [145] 0.480 0.465 0.520 0.490 0.485 0.495 0.485 0.515 0.530 0.480 0.460 0.495
##  [157] 0.530 0.495 0.480 0.555 0.570 0.465 0.500 0.510 0.535 0.460 0.505 0.500
##  [169] 0.455 0.520 0.455 0.510 0.520 0.400 0.500 0.500 0.490 0.505 0.550 0.520
##  [181] 0.490 0.510 0.525 0.570 0.475 0.525 0.570 0.510 0.490 0.470 0.515 0.495
##  [193] 0.515 0.475 0.525 0.520 0.610 0.520 0.510 0.470 0.565 0.480 0.485 0.485
##  [205] 0.495 0.495 0.525 0.520 0.515 0.570 0.455 0.455 0.470 0.480 0.485 0.535
##  [217] 0.520 0.495 0.485 0.460 0.505 0.515 0.485 0.510 0.470 0.485 0.495 0.480
##  [229] 0.495 0.450 0.545 0.460 0.465 0.535 0.540 0.540 0.465 0.510 0.505 0.515
##  [241] 0.485 0.480 0.460 0.460 0.530 0.470 0.505 0.525 0.495 0.520 0.490 0.505
##  [253] 0.490 0.445 0.480 0.480 0.515 0.480 0.530 0.490 0.455 0.510 0.470 0.515
##  [265] 0.510 0.520 0.560 0.550 0.535 0.515 0.460 0.480 0.510 0.500 0.470 0.510
##  [277] 0.525 0.565 0.500 0.460 0.475 0.510 0.515 0.570 0.460 0.465 0.495 0.445
##  [289] 0.470 0.510 0.465 0.540 0.480 0.515 0.500 0.495 0.515 0.455 0.570 0.475
##  [301] 0.460 0.510 0.500 0.540 0.475 0.470 0.480 0.495 0.455 0.465 0.505 0.500
##  [313] 0.485 0.500 0.595 0.525 0.525 0.485 0.510 0.480 0.520 0.470 0.535 0.540
##  [325] 0.460 0.490 0.505 0.425 0.580 0.495 0.505 0.480 0.510 0.495 0.425 0.530
##  [337] 0.500 0.495 0.505 0.550 0.525 0.460 0.505 0.455 0.535 0.515 0.505 0.490
##  [349] 0.525 0.425 0.505 0.455 0.500 0.480 0.470 0.550 0.445 0.505 0.505 0.520
##  [361] 0.485 0.505 0.515 0.485 0.520 0.500 0.475 0.530 0.460 0.495 0.480 0.485
##  [373] 0.500 0.470 0.495 0.455 0.435 0.495 0.495 0.495 0.490 0.515 0.420 0.590
##  [385] 0.460 0.580 0.535 0.550 0.445 0.455 0.515 0.495 0.450 0.540 0.535 0.485
##  [397] 0.455 0.515 0.490 0.505 0.515 0.470 0.515 0.430 0.505 0.505 0.465 0.485
##  [409] 0.495 0.475 0.465 0.500 0.470 0.515 0.540 0.515 0.440 0.500 0.550 0.585
##  [421] 0.470 0.520 0.535 0.455 0.520 0.435 0.480 0.480 0.520 0.530 0.560 0.485
##  [433] 0.470 0.550 0.505 0.490 0.540 0.495 0.460 0.510 0.545 0.440 0.480 0.540
##  [445] 0.455 0.530 0.515 0.480 0.525 0.540 0.525 0.545 0.470 0.465 0.440 0.520
##  [457] 0.525 0.445 0.435 0.570 0.455 0.480 0.535 0.525 0.460 0.515 0.440 0.570
##  [469] 0.535 0.465 0.450 0.505 0.520 0.540 0.495 0.465 0.510 0.460 0.510 0.510
##  [481] 0.495 0.475 0.480 0.555 0.480 0.445 0.545 0.500 0.500 0.530 0.495 0.480
##  [493] 0.555 0.500 0.515 0.420 0.470 0.440 0.490 0.450 0.430 0.510 0.515 0.440
##  [505] 0.545 0.580 0.545 0.535 0.500 0.515 0.505 0.475 0.485 0.460 0.480 0.475
##  [517] 0.525 0.485 0.500 0.485 0.505 0.475 0.510 0.525 0.540 0.530 0.510 0.550
##  [529] 0.545 0.535 0.540 0.510 0.590 0.515 0.500 0.510 0.475 0.530 0.535 0.500
##  [541] 0.485 0.525 0.510 0.540 0.540 0.530 0.435 0.485 0.465 0.460 0.585 0.445
##  [553] 0.450 0.480 0.565 0.515 0.505 0.515 0.510 0.450 0.470 0.460 0.525 0.480
##  [565] 0.495 0.505 0.500 0.510 0.510 0.540 0.470 0.510 0.510 0.500 0.530 0.490
##  [577] 0.515 0.430 0.530 0.510 0.490 0.530 0.515 0.540 0.520 0.470 0.530 0.495
##  [589] 0.500 0.530 0.510 0.480 0.530 0.485 0.470 0.495 0.485 0.520 0.530 0.480
##  [601] 0.525 0.435 0.445 0.445 0.540 0.475 0.525 0.470 0.535 0.545 0.520 0.490
##  [613] 0.535 0.545 0.530 0.520 0.545 0.525 0.525 0.430 0.510 0.515 0.500 0.465
##  [625] 0.495 0.510 0.495 0.490 0.505 0.500 0.465 0.450 0.500 0.530 0.540 0.540
##  [637] 0.485 0.575 0.505 0.490 0.470 0.510 0.495 0.500 0.545 0.480 0.490 0.490
##  [649] 0.510 0.535 0.535 0.475 0.500 0.500 0.480 0.485 0.565 0.535 0.525 0.515
##  [661] 0.520 0.505 0.480 0.495 0.515 0.475 0.545 0.475 0.555 0.460 0.490 0.490
##  [673] 0.550 0.510 0.485 0.535 0.510 0.490 0.500 0.470 0.500 0.555 0.570 0.500
##  [685] 0.435 0.515 0.530 0.485 0.475 0.550 0.525 0.515 0.510 0.475 0.540 0.520
##  [697] 0.455 0.470 0.450 0.505 0.545 0.510 0.530 0.495 0.515 0.540 0.535 0.535
##  [709] 0.470 0.500 0.530 0.480 0.510 0.500 0.480 0.465 0.505 0.565 0.500 0.465
##  [721] 0.515 0.440 0.505 0.495 0.495 0.510 0.520 0.515 0.500 0.500 0.425 0.480
##  [733] 0.500 0.485 0.510 0.470 0.535 0.530 0.485 0.505 0.500 0.485 0.515 0.530
##  [745] 0.540 0.510 0.535 0.480 0.450 0.480 0.480 0.460 0.470 0.485 0.510 0.505
##  [757] 0.530 0.505 0.545 0.560 0.490 0.500 0.535 0.495 0.550 0.460 0.465 0.475
##  [769] 0.465 0.500 0.490 0.475 0.510 0.465 0.505 0.435 0.495 0.495 0.525 0.475
##  [781] 0.540 0.475 0.500 0.535 0.505 0.495 0.475 0.500 0.520 0.480 0.495 0.500
##  [793] 0.480 0.540 0.430 0.485 0.535 0.485 0.460 0.535 0.565 0.475 0.465 0.515
##  [805] 0.515 0.485 0.490 0.485 0.505 0.510 0.515 0.500 0.475 0.485 0.530 0.460
##  [817] 0.485 0.530 0.480 0.520 0.520 0.510 0.490 0.540 0.555 0.475 0.530 0.575
##  [829] 0.440 0.490 0.470 0.490 0.560 0.475 0.480 0.545 0.510 0.445 0.550 0.525
##  [841] 0.465 0.485 0.565 0.490 0.525 0.550 0.455 0.525 0.550 0.435 0.525 0.485
##  [853] 0.530 0.500 0.435 0.445 0.540 0.510 0.530 0.530 0.425 0.500 0.520 0.505
##  [865] 0.475 0.525 0.425 0.500 0.505 0.505 0.560 0.535 0.470 0.465 0.450 0.515
##  [877] 0.445 0.455 0.495 0.480 0.550 0.530 0.495 0.455 0.520 0.495 0.475 0.510
##  [889] 0.545 0.495 0.525 0.465 0.465 0.440 0.555 0.505 0.500 0.485 0.545 0.525
##  [901] 0.515 0.510 0.540 0.495 0.505 0.475 0.505 0.565 0.475 0.540 0.540 0.475
##  [913] 0.520 0.505 0.480 0.490 0.465 0.495 0.500 0.495 0.490 0.540 0.525 0.455
##  [925] 0.470 0.545 0.510 0.470 0.470 0.545 0.490 0.505 0.500 0.495 0.520 0.515
##  [937] 0.460 0.495 0.545 0.475 0.515 0.490 0.530 0.600 0.500 0.425 0.495 0.495
##  [949] 0.485 0.490 0.485 0.510 0.510 0.485 0.475 0.495 0.535 0.490 0.470 0.450
##  [961] 0.485 0.515 0.515 0.465 0.525 0.445 0.505 0.475 0.520 0.495 0.475 0.490
##  [973] 0.500 0.470 0.450 0.480 0.510 0.475 0.545 0.495 0.535 0.500 0.490 0.505
##  [985] 0.535 0.495 0.510 0.525 0.460 0.490 0.455 0.505 0.540 0.565 0.475 0.520
##  [997] 0.510 0.475 0.470 0.470
#opción 2. forma recomendada de crear una función, es más rápido 

calc_por_uno=function(n_muestra){
pob=c(rep(x=1,100), rep(x=0,900))
return(sum(sample(pob,size=n_muestra))/n_muestra)
}

calc_por_uno(n_muestra = 200)
## [1] 0.13
sapply(rep(200,10), calc_por_uno)
##  [1] 0.115 0.105 0.125 0.095 0.150 0.110 0.105 0.095 0.100 0.110
#punto d) Grafique los resultados de estos porcentajes y calcule algunos indicadores descriptivos (compare resultados)

summary(porcentajes_muestra)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4000  0.4800  0.5000  0.5002  0.5200  0.6100
hist(porcentajes_muestra)
abline(v=0.5,col="red",lwd=4)

##Punto 3. Función que calcula descriptivos univariados. con esta función es posible recorrer una base de datos grande y realizar una exploración univariada de forma automática

##punto a). Genere función que calcule indicadores y gráficos descritivos de una variable cuantitativa

Num_Alumnos = sample(1:70,replace = TRUE)
Grado = sample(c("parvulos","jardín"),replace = TRUE)
e = expand.grid(Num_Alumnos,Grado)
data.frame(e)
Var1 Var2
25 jardín
44 jardín
70 jardín
22 jardín
35 jardín
19 jardín
8 jardín
50 jardín
63 jardín
58 jardín
2 jardín
55 jardín
48 jardín
67 jardín
11 jardín
56 jardín
17 jardín
6 jardín
17 jardín
10 jardín
55 jardín
56 jardín
33 jardín
35 jardín
50 jardín
64 jardín
58 jardín
62 jardín
3 jardín
28 jardín
1 jardín
17 jardín
25 jardín
65 jardín
6 jardín
50 jardín
41 jardín
3 jardín
63 jardín
31 jardín
13 jardín
51 jardín
69 jardín
63 jardín
1 jardín
46 jardín
42 jardín
15 jardín
40 jardín
61 jardín
22 jardín
30 jardín
2 jardín
67 jardín
34 jardín
23 jardín
47 jardín
46 jardín
38 jardín
11 jardín
21 jardín
36 jardín
42 jardín
16 jardín
9 jardín
27 jardín
52 jardín
32 jardín
52 jardín
58 jardín
25 parvulos
44 parvulos
70 parvulos
22 parvulos
35 parvulos
19 parvulos
8 parvulos
50 parvulos
63 parvulos
58 parvulos
2 parvulos
55 parvulos
48 parvulos
67 parvulos
11 parvulos
56 parvulos
17 parvulos
6 parvulos
17 parvulos
10 parvulos
55 parvulos
56 parvulos
33 parvulos
35 parvulos
50 parvulos
64 parvulos
58 parvulos
62 parvulos
3 parvulos
28 parvulos
1 parvulos
17 parvulos
25 parvulos
65 parvulos
6 parvulos
50 parvulos
41 parvulos
3 parvulos
63 parvulos
31 parvulos
13 parvulos
51 parvulos
69 parvulos
63 parvulos
1 parvulos
46 parvulos
42 parvulos
15 parvulos
40 parvulos
61 parvulos
22 parvulos
30 parvulos
2 parvulos
67 parvulos
34 parvulos
23 parvulos
47 parvulos
46 parvulos
38 parvulos
11 parvulos
21 parvulos
36 parvulos
42 parvulos
16 parvulos
9 parvulos
27 parvulos
52 parvulos
32 parvulos
52 parvulos
58 parvulos
summary(Num_Alumnos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00   17.00   35.50   35.64   54.25   70.00
hist(Num_Alumnos)
abline(v=0.5,col="red",lwd=4)

##punto b). Graficos de variable cualitativa

barplot(table(Grado), main = "Alumnos por Grado")