#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")