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

a.

Crear una función sin entradas pero que simule el lanzamiento de dos dados legales y sume el resulado de ellos.

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

  resultado = sample(dado1, 1) + sample(dado2, 1)

  return(resultado)
}

lanzamiento_dados()
## [1] 7

b.

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).

Informacion = function(total_lanzamientos, Condicion){
  resultado_informacion = array(NA, total_lanzamientos)
  for (i in 1:total_lanzamientos) {
    resultado_informacion[i] = lanzamiento_dados()
  }
  
  resultado_condicion = sum(resultado_informacion == Condicion)
  print(paste("Total de lanzamientos:", total_lanzamientos, ", Frecuencia del número", Condicion, ":", resultado_condicion))
}

Informacion(total_lanzamientos = 1000, Condicion = 2)
## [1] "Total de lanzamientos: 1000 , Frecuencia del número 2 : 22"

c.

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.

espacio = expand.grid(dado1=(1:6),dado2=(1:6))
total = apply(espacio,1,sum)
data.frame(espacio,total)
##    dado1 dado2 total
## 1      1     1     2
## 2      2     1     3
## 3      3     1     4
## 4      4     1     5
## 5      5     1     6
## 6      6     1     7
## 7      1     2     3
## 8      2     2     4
## 9      3     2     5
## 10     4     2     6
## 11     5     2     7
## 12     6     2     8
## 13     1     3     4
## 14     2     3     5
## 15     3     3     6
## 16     4     3     7
## 17     5     3     8
## 18     6     3     9
## 19     1     4     5
## 20     2     4     6
## 21     3     4     7
## 22     4     4     8
## 23     5     4     9
## 24     6     4    10
## 25     1     5     6
## 26     2     5     7
## 27     3     5     8
## 28     4     5     9
## 29     5     5    10
## 30     6     5    11
## 31     1     6     7
## 32     2     6     8
## 33     3     6     9
## 34     4     6    10
## 35     5     6    11
## 36     6     6    12
conteo = table(total)/36
conteo
## total
##          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
plot(2:12,conteo,type = "b")

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

a.

Genere una población con una cantidad dada de 0 y 1.

poblacion=sample(x = c(0, 1), size = 1000, replace = TRUE)

b.

Crear una función que obtenga una muestra de esa población de a. y calcule el porcentaje de 1.

porcentaje_poblacion = function(nmuestra){
  muestra = sample(x = poblacion, size = nmuestra, replace = TRUE)
  cuenta = sum(muestra == 1)
  pcuenta = cuenta/nmuestra
  print(paste("Se tomó una muestra de", nmuestra, "de una población de", length(poblacion)))
  print(paste("El porcentaje de números 1 dentro de la muestra es de", pcuenta))
}

porcentaje_poblacion(nmuestra = 500)
## [1] "Se tomó una muestra de 500 de una población de 1000"
## [1] "El porcentaje de números 1 dentro de la muestra es de 0.512"

c.

Repita este proceso una cantidad (mas de 1000 veces) y guarde los porcentajes de cada iteración.

calculo_porcentaje = function(nmuestra, nrepeticiones){
  pcuenta = array(NA, nrepeticiones)
  for (i in 1:nrepeticiones){
    muestra = sample(x=poblacion, size = nmuestra, replace = TRUE)
    cuenta = sum(muestra == 1)
    pcuenta[i] = cuenta / nmuestra
  }
  
  return(pcuenta)
}

calculo_porcentaje(nmuestra = 500, nrepeticiones = 5000)[c(1:500)]
##   [1] 0.506 0.466 0.504 0.512 0.544 0.498 0.554 0.492 0.534 0.506 0.520 0.518
##  [13] 0.508 0.514 0.498 0.468 0.500 0.540 0.528 0.498 0.540 0.524 0.542 0.504
##  [25] 0.516 0.518 0.534 0.520 0.460 0.504 0.538 0.524 0.512 0.554 0.518 0.536
##  [37] 0.498 0.488 0.546 0.524 0.510 0.498 0.506 0.500 0.512 0.522 0.512 0.532
##  [49] 0.490 0.532 0.500 0.514 0.480 0.560 0.568 0.542 0.498 0.490 0.520 0.482
##  [61] 0.496 0.502 0.498 0.522 0.484 0.524 0.520 0.536 0.530 0.488 0.510 0.464
##  [73] 0.544 0.540 0.492 0.562 0.514 0.496 0.494 0.528 0.538 0.554 0.530 0.504
##  [85] 0.538 0.506 0.510 0.494 0.508 0.436 0.496 0.530 0.518 0.492 0.510 0.554
##  [97] 0.538 0.514 0.546 0.520 0.498 0.518 0.540 0.480 0.514 0.498 0.484 0.498
## [109] 0.498 0.500 0.500 0.520 0.530 0.510 0.496 0.520 0.540 0.508 0.514 0.498
## [121] 0.526 0.486 0.512 0.532 0.524 0.498 0.476 0.516 0.522 0.490 0.526 0.500
## [133] 0.526 0.508 0.508 0.542 0.524 0.536 0.526 0.522 0.514 0.470 0.484 0.514
## [145] 0.486 0.534 0.514 0.524 0.516 0.508 0.520 0.484 0.522 0.520 0.482 0.492
## [157] 0.504 0.550 0.520 0.492 0.508 0.488 0.504 0.526 0.512 0.514 0.530 0.512
## [169] 0.556 0.482 0.482 0.496 0.540 0.498 0.506 0.522 0.522 0.514 0.498 0.510
## [181] 0.516 0.516 0.534 0.502 0.518 0.494 0.526 0.514 0.562 0.524 0.516 0.488
## [193] 0.498 0.554 0.484 0.526 0.470 0.524 0.484 0.460 0.516 0.498 0.516 0.528
## [205] 0.516 0.516 0.522 0.510 0.514 0.486 0.502 0.496 0.544 0.482 0.518 0.574
## [217] 0.506 0.500 0.526 0.502 0.506 0.518 0.496 0.532 0.522 0.526 0.508 0.502
## [229] 0.540 0.524 0.494 0.504 0.524 0.524 0.516 0.540 0.536 0.540 0.558 0.556
## [241] 0.558 0.506 0.510 0.488 0.454 0.550 0.492 0.510 0.502 0.536 0.484 0.502
## [253] 0.478 0.516 0.482 0.520 0.502 0.540 0.488 0.504 0.510 0.542 0.544 0.446
## [265] 0.526 0.556 0.494 0.528 0.550 0.508 0.552 0.508 0.490 0.516 0.546 0.496
## [277] 0.516 0.534 0.488 0.532 0.492 0.540 0.498 0.526 0.516 0.536 0.532 0.496
## [289] 0.550 0.504 0.502 0.490 0.520 0.544 0.506 0.554 0.520 0.496 0.512 0.516
## [301] 0.512 0.522 0.578 0.518 0.530 0.512 0.500 0.526 0.516 0.536 0.518 0.514
## [313] 0.492 0.558 0.542 0.508 0.496 0.522 0.532 0.520 0.504 0.532 0.530 0.540
## [325] 0.504 0.520 0.468 0.526 0.514 0.484 0.528 0.492 0.558 0.512 0.508 0.514
## [337] 0.546 0.520 0.516 0.488 0.492 0.522 0.466 0.472 0.490 0.518 0.536 0.488
## [349] 0.514 0.524 0.496 0.482 0.528 0.484 0.532 0.506 0.510 0.506 0.488 0.484
## [361] 0.484 0.498 0.514 0.508 0.514 0.544 0.504 0.508 0.514 0.528 0.476 0.534
## [373] 0.502 0.512 0.514 0.512 0.526 0.492 0.488 0.528 0.530 0.486 0.500 0.522
## [385] 0.520 0.516 0.496 0.542 0.502 0.480 0.532 0.542 0.526 0.546 0.506 0.532
## [397] 0.500 0.488 0.510 0.508 0.520 0.486 0.526 0.490 0.532 0.498 0.538 0.512
## [409] 0.518 0.488 0.492 0.514 0.522 0.526 0.490 0.504 0.574 0.508 0.508 0.500
## [421] 0.494 0.502 0.504 0.468 0.498 0.482 0.486 0.484 0.484 0.526 0.530 0.530
## [433] 0.526 0.470 0.572 0.490 0.494 0.514 0.530 0.522 0.512 0.512 0.484 0.498
## [445] 0.526 0.520 0.474 0.514 0.542 0.476 0.502 0.484 0.520 0.502 0.474 0.530
## [457] 0.518 0.562 0.534 0.510 0.536 0.482 0.570 0.492 0.516 0.462 0.530 0.478
## [469] 0.490 0.538 0.514 0.544 0.528 0.522 0.528 0.542 0.514 0.506 0.512 0.514
## [481] 0.488 0.512 0.546 0.480 0.526 0.502 0.522 0.490 0.512 0.484 0.526 0.528
## [493] 0.458 0.542 0.526 0.484 0.516 0.488 0.522 0.498

d.

Grafique los resultados de estos porcentajes y calcule algunos indicadores descriptivos (compare los resultados con la población generada inicial).

resultado_poblacion = calculo_porcentaje(1000, 5000)
resultado_muestra = calculo_porcentaje(500, 5000)

hist(resultado_poblacion)

hist(resultado_muestra)

summary(resultado_poblacion)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.452   0.503   0.514   0.514   0.525   0.578
summary(resultado_muestra)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.4400  0.5000  0.5140  0.5144  0.5300  0.5960

Punto 3 - Función que Calcula Descriptivos Univariados

a.

Genere una función que calcule indicadores y graficos descriptivos de una variable cuantitativa.

variable_cuantitativa = data.frame("Cantidad_Mascotas_Hogar" = cbind(sample(x = c(1:20), size = 5000, replace = TRUE)))

funcion = function(df, col){
  require(ggplot2)
  require(ggpubr)
 
  
  plot1 = ggplot(data = df, mapping = aes(x = df[, col])) + geom_histogram(bins = 40) + labs(x = "Cantidad_Mascotas_Hogar", y = "Frecuencia") 
  plot2 = ggplot(data = df, mapping = aes(x = df[, col])) + geom_boxplot() + labs(x = "Cantidad_Mascotas_Hogar") 
  plot3 = ggarrange(plot1, plot2, ncol = 2, nrow = 1)
  summary = summary(df[, col])
  
  graf1 = list("Gráficos" = plot3, "Resumen" = summary)
  return(graf1)
}


barplot(table(variable_cuantitativa),xlab="Cantidad_Mascotas_Hogar",main="Distribución de Mascotas por hogar", col="gray")

boxplot(variable_cuantitativa, main = "Gráfico de cajas - Cantidad_Mascotas_Hogar",
        outline = TRUE)

summary(variable_cuantitativa)
##  Cantidad_Mascotas_Hogar
##  Min.   : 1.00          
##  1st Qu.: 6.00          
##  Median :11.00          
##  Mean   :10.55          
##  3rd Qu.:16.00          
##  Max.   :20.00

b.

Genere una función que calcule indicadores y graficos descriptivos de una variable cualitativa.

variable_cualitativa = data.frame("Color_ojos" = cbind(sample(x = c("Verde","Azul","Miel","Cafe","Otros"), size = 5000, replace = TRUE)))

funcion_2 = function(df, col){
  require(ggplot2)
  require(ggpubr)
 
  
  plot1 = ggplot(data = df, mapping = aes(x = df[, col])) + geom_histogram(bins = 40) + labs(x = "Color_ojos", y = "Frecuencia") 
  
 }

barplot(table(variable_cualitativa), col = c("blue","brown","Orange","gray","Dark green"),
        main = "Diagrama de barras de la variable Color de Ojos")

pie(table(variable_cualitativa),col = c("blue","brown","Orange","gray","Dark green"),
    main = "Diagrama circular de la variable Color de Ojos")

table(variable_cualitativa)
## variable_cualitativa
##  Azul  Cafe  Miel Otros Verde 
##   984   975  1017  1002  1022