Punto 1. Simulación del 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

sim_lanza = function(){
  dado1=1:6
  dado2=1:6
  x= sample(dado1,1, replace=TRUE) + sample(dado2,1, replace = TRUE)
  return(x)
}
for(i in 1:5){
  print(sim_lanza())
}
## [1] 7
## [1] 9
## [1] 12
## [1] 8
## [1] 3

Interpretación: La función creada anteriormente retorna como resultado cinco valores diferentes correspondientes a la suma aleatoria de dos dados que fueron lanzados cinco veces.

b. Generalizar la función para que tenga como entrada el total de lanzamientos y cuente los resultados de una condición en particular (en este caso, que la suma sea igual a 8).

Nota:Para resolver este ejercicio se proponen dos opciones:

Opción 1: Se utiliza el ciclo “for” y un iterador “i” para definir una función con dos parámetros de entrada “nlanza” y “valor_condi”

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

return(sum(lanzamientos==valor_condi))

}

simula_multiple_lanza(nlanza=300,valor_condi=8)
## [1] 35

Opción 2.

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

sim_multi_lanza2(nlanza=300,valor_condi=8)
## [1] 38

Interpretación: Tanto en la opción 1 como en la 2, se generó una función con dos parámetros de entrada “nlanza” y “valor_condi” que permitiera simular en este caso el lanzamiento de dos dados 300 veces y obtener como resultado el número de veces que la suma de los dados lanzados aleatoriamente dió exactamente 8.

c. Con la función de b. compare los resultados de la simulación para 10.000 lanzamientos con los resultados esperados de acuerdo a la probabilidad calculada con el total de combinaciones

#Probabilidad Teórica

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

Nota:En la tabla anterior se observa que el número de combinaciones totales de lanzar dos dados aleatoriamente es de 36.

##Resultado de probabilidad teórica de que la suma de los dos dados lanzados sea 2,3,4,5,6,7,8,9,10,11,12 respectivamente
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
plot(2:12, prob_teorica, type = "b", col="purple")

Interpretación: En el gráfico anterior se observa que existe mayor probabilidad teórica de lanzar dos dados y obtener como resultados d e la suma de los dados un 7 (probabilidad=0.1666667).

Simulación para saber cuál es el valor de la probabilidad cuando el número de lanzamientos es mayor

#Probabilidad práctica  de lanzar 10.000 veces dos dados y obtener 7 como resultado de la suma de los dados
prob_practica_7=sim_multi_lanza2(nlanza=10000,valor_condi=7)/10000
prob_practica_7
## [1] 0.1696
#Probabilidad práctica de lanzar 10.000.000 de veces dos dados y obtener 7 como resultado de la suma de los dados
prob_practica_7a=sim_multi_lanza2(nlanza=10000000,valor_condi=7)/10000000
prob_practica_7a
## [1] 0.1667126
#Probabilidad práctica de lanzar 1.000.000 de veces dos dados y obtener 5 como resultado de la suma de los dados
prob_practica_5=sim_multi_lanza2(nlanza=1000000,valor_condi=5)/1000000
prob_practica_5
## [1] 0.110856

InterpretaciónA través de la simulación anterior de diferentes números de lanzamientos se puede comprobar que entre el número de lanzamientos tiende al infinito, la probabilidad práctica converge en mayor medida a la probabilidad real o teórica calculada. En el caso anterior, se evidencia que si aumentamos el número de lanzamientos , la probabilidad práctica tambien aumenta, y obtenemos como resultado una probabilidad más cercana a la probabilidad real de lanzar dos dados y obtener como resultado la suma de 7 (0.16666667) o de 5 (0.1111111).

Punto 2. Simulación concepto de Distribucción Muestral (caso proporciones)

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

A continuación se genera una población total de 1000 valores, el 10% de esos valores corresponden a unos y el 90% restante a ceros:

# Población con 10% de unos
pob=c(rep(x=1,100), rep(x=0,900))
pob
##    [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##   [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
##  [112] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [149] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [186] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [223] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [260] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [297] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [334] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [371] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [408] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [445] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [482] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [519] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [556] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [593] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [630] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [667] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [704] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [741] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [778] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [815] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [852] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [889] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [926] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [963] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1000] 0

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

muest_pob=function(pob,tam_muestra){
  
  suma_unos=sum(sample(pob,size=tam_muestra ))/tam_muestra
  return(suma_unos)
}

muest_pob(pob,200)
## [1] 0.13

Interpretación:El valor anterior representa el porcentaje de unos en una muestra de tamaño 200.

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

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.12
#Porcentajes de cada iteración
porcentajes_muestra=sapply(rep(200,1000), calc_por_uno)

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

#Indicadores descriptivos de los porcentajes de una muestra de 200
summary(porcentajes_muestra)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0450  0.0850  0.1000  0.1002  0.1150  0.1550
#Calculamos desviación estándar de la muestra y el coeficiente de variación

print(paste("desviacion estandar: " , toString(sd(porcentajes_muestra)) ))
## [1] "desviacion estandar:  0.0188604272410705"
print(paste("coef variacion: " , toString(sd(porcentajes_muestra)/mean(porcentajes_muestra)) ))
## [1] "coef variacion:  0.188227816777151"
#Graficamos los resultados de los porcentajes de la muestra

hist(porcentajes_muestra)
abline(v=0.1,col="purple",lwd=4)

Interpretación: De acuerdo a las estadísticas descriptivas calculadas anteriormente y al histograma presentado, se concluye que existe una distribución muestral insesgada, es decir, una distribución que está centrada cerca del valor real del párametro de la población. No obstante, destaca que los valores mínimos y máximos de la muestra estan relativamente más alejados del parámetro.

Punto 3. Función que calcula descriptivos univariados

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

Edad=sample(18:45,1000,replace = TRUE)
Hijos=sample(1:5,1000,replace = TRUE)

datos_simulacion=data.frame(
  "Edad" = Edad, 
  "Hijos"= Hijos
)

Graficar = function(datos, columna){
  
  hist(datos[[columna]],xlab = columna, ylab="Cantidad", col="green", main=c("Histograma de la variable cuantitativa",columna))
  edesc = data.frame(
    Medida = c("Promedio", "Mediana", "Máximo", "Mínimo","DesvEstandar"),
    Valor= c(mean(datos[[columna]]), median(datos[[columna]]), max(datos[[columna]]), min(datos[[columna]]),sd(datos[[columna]]))
    )
   return(edesc)
}

Graficar(datos_simulacion, "Edad")

##         Medida     Valor
## 1     Promedio 31.608000
## 2      Mediana 32.000000
## 3       Máximo 45.000000
## 4       Mínimo 18.000000
## 5 DesvEstandar  8.161798

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

nal= c("Colombiana","Mexicana","Española","Alemana")
Nacionalidad=sample(nal,1000,replace = TRUE)
datos_simulacion2 =data.frame(
  "Nacionalidad" = Nacionalidad
)

GraficarCategoria = function(datos, columna){
  barplot(table(datos[[columna]]),xlab = columna, ylab="Cantidad o Valor", col="purple", main=c("Gráfico de Barras de la variable ",columna))
  tabla = data.frame(prop.table(table(datos[[columna]])))
  tf = data.frame(table(datos[[columna]]))
  tf$Porcentaje =tabla$Freq
  colnames(tf) = c("Variable", "Cantidad", "Porcentaje")
  return(tf)
}


GraficarCategoria(datos_simulacion2, "Nacionalidad")

##     Variable Cantidad Porcentaje
## 1    Alemana      235      0.235
## 2 Colombiana      256      0.256
## 3   Española      266      0.266
## 4   Mexicana      243      0.243

c.Genere una función que de acuerdo al tipo de variable use la función de a. ó b. para generar resultados descriptivos.

ImportBase= function(ruta_archivo){
  library(readxl)
  datab= read_excel(ruta_archivo)
  tipo_data= sapply(datab, class)
  
  for(c in 1:ncol(datab)) {
    print(tipo_data[c])
    print(c)
    colnames(datab)[c]
    if(tipo_data[c] == "numeric")
      print(Graficar(datab, colnames(datab)[c]))
    else
      print(GraficarCategoria(datab, colnames(datab)[c]))
  }
  return(1)
}
Tabla = function(datab){
  tipo_data = sapply(datab, class)
  for(c in 1:ncol(datab)) {
    print(tipo_data[c])
    print(c)
    colnames(datab)[c]
    if(tipo_data[c] == "numeric")
      print(Graficar(datab, colnames(datab)[c]))
    else
      print(GraficarCategoria(datab, colnames(datab)[c]))
  }
  return(1)
}
Tabla(datos_simulacion)
##      Edad 
## "integer" 
## [1] 1

##    Variable Cantidad Porcentaje
## 1        18       31      0.031
## 2        19       36      0.036
## 3        20       40      0.040
## 4        21       39      0.039
## 5        22       35      0.035
## 6        23       34      0.034
## 7        24       37      0.037
## 8        25       35      0.035
## 9        26       40      0.040
## 10       27       31      0.031
## 11       28       32      0.032
## 12       29       33      0.033
## 13       30       37      0.037
## 14       31       32      0.032
## 15       32       37      0.037
## 16       33       36      0.036
## 17       34       44      0.044
## 18       35       31      0.031
## 19       36       30      0.030
## 20       37       37      0.037
## 21       38       34      0.034
## 22       39       31      0.031
## 23       40       31      0.031
## 24       41       37      0.037
## 25       42       47      0.047
## 26       43       40      0.040
## 27       44       39      0.039
## 28       45       34      0.034
##     Hijos 
## "integer" 
## [1] 2

##   Variable Cantidad Porcentaje
## 1        1      202      0.202
## 2        2      202      0.202
## 3        3      183      0.183
## 4        4      209      0.209
## 5        5      204      0.204
## [1] 1

Variable cualitativa

Tabla(datos_simulacion2)
## Nacionalidad 
##  "character" 
## [1] 1

##     Variable Cantidad Porcentaje
## 1    Alemana      235      0.235
## 2 Colombiana      256      0.256
## 3   Española      266      0.266
## 4   Mexicana      243      0.243
## [1] 1

Importamos y exploramos base de datos de “ROTACIÓN LABORAL EN UNA EMPRESA”

Se importa una base de datos en excel relacionada con la roteción laboral voluntaria en una empresa, para realizar gráficos y analisis descriptivos dependiendo si la variable es cuantitativa o cualitativa:

ImportBase("C:/Users/julie/OneDrive/Escritorio/YDRAY-Datos_Rotacion.xlsx")
##    Rotación 
## "character" 
## [1] 1

##   Variable Cantidad Porcentaje
## 1       No     1233  0.8387755
## 2       Si      237  0.1612245
##      Edad 
## "numeric" 
## [1] 2

##         Medida     Valor
## 1     Promedio 36.923810
## 2      Mediana 36.000000
## 3       Máximo 60.000000
## 4       Mínimo 18.000000
## 5 DesvEstandar  9.135373
## Viaje de Negocios 
##       "character" 
## [1] 3

##         Variable Cantidad Porcentaje
## 1 Frecuentemente      277  0.1884354
## 2       No_Viaja      150  0.1020408
## 3      Raramente     1043  0.7095238
## Departamento 
##  "character" 
## [1] 4

##   Variable Cantidad Porcentaje
## 1      IyD      961 0.65374150
## 2       RH       63 0.04285714
## 3   Ventas      446 0.30340136
## Distancia_Casa 
##      "numeric" 
## [1] 5

##         Medida     Valor
## 1     Promedio  9.192517
## 2      Mediana  7.000000
## 3       Máximo 29.000000
## 4       Mínimo  1.000000
## 5 DesvEstandar  8.106864
## Educación 
## "numeric" 
## [1] 6

##         Medida    Valor
## 1     Promedio 2.912925
## 2      Mediana 3.000000
## 3       Máximo 5.000000
## 4       Mínimo 1.000000
## 5 DesvEstandar 1.024165
## Campo_Educación 
##     "character" 
## [1] 7

##      Variable Cantidad Porcentaje
## 1    Ciencias      606 0.41224490
## 2 Humanidades       27 0.01836735
## 3    Mercadeo      159 0.10816327
## 4        Otra       82 0.05578231
## 5       Salud      464 0.31564626
## 6    Tecnicos      132 0.08979592
## Satisfacción_Ambiental 
##              "numeric" 
## [1] 8

##         Medida    Valor
## 1     Promedio 2.721769
## 2      Mediana 3.000000
## 3       Máximo 4.000000
## 4       Mínimo 1.000000
## 5 DesvEstandar 1.093082
##      Genero 
## "character" 
## [1] 9

##   Variable Cantidad Porcentaje
## 1        F      588        0.4
## 2        M      882        0.6
##       Cargo 
## "character" 
## [1] 10

##                  Variable Cantidad Porcentaje
## 1  Director_Investigación       80 0.05442177
## 2    Director_Manofactura      145 0.09863946
## 3        Ejecutivo_Ventas      326 0.22176871
## 4                 Gerente      102 0.06938776
## 5 Investigador_Cientifico      292 0.19863946
## 6        Recursos_Humanos       52 0.03537415
## 7     Representante_Salud      131 0.08911565
## 8    Representante_Ventas       83 0.05646259
## 9     Tecnico_Laboratorio      259 0.17619048
## Satisfación_Laboral 
##           "numeric" 
## [1] 11

##         Medida    Valor
## 1     Promedio 2.728571
## 2      Mediana 3.000000
## 3       Máximo 4.000000
## 4       Mínimo 1.000000
## 5 DesvEstandar 1.102846
## Estado_Civil 
##  "character" 
## [1] 12

##     Variable Cantidad Porcentaje
## 1     Casado      673  0.4578231
## 2 Divorciado      327  0.2224490
## 3    Soltero      470  0.3197279
## Ingreso_Mensual 
##       "numeric" 
## [1] 13

##         Medida     Valor
## 1     Promedio  6502.931
## 2      Mediana  4919.000
## 3       Máximo 19999.000
## 4       Mínimo  1009.000
## 5 DesvEstandar  4707.957
## Trabajos_Anteriores 
##           "numeric" 
## [1] 14

##         Medida    Valor
## 1     Promedio 2.693197
## 2      Mediana 2.000000
## 3       Máximo 9.000000
## 4       Mínimo 0.000000
## 5 DesvEstandar 2.498009
## Horas_Extra 
## "character" 
## [1] 15

##   Variable Cantidad Porcentaje
## 1       No     1054  0.7170068
## 2       Si      416  0.2829932
## Porcentaje_aumento_salarial 
##                   "numeric" 
## [1] 16

##         Medida     Valor
## 1     Promedio 15.209524
## 2      Mediana 14.000000
## 3       Máximo 25.000000
## 4       Mínimo 11.000000
## 5 DesvEstandar  3.659938
## Rendimiento_Laboral 
##           "numeric" 
## [1] 17

##         Medida     Valor
## 1     Promedio 3.1537415
## 2      Mediana 3.0000000
## 3       Máximo 4.0000000
## 4       Mínimo 3.0000000
## 5 DesvEstandar 0.3608235
## Años_Experiencia 
##        "numeric" 
## [1] 18

##         Medida     Valor
## 1     Promedio 11.279592
## 2      Mediana 10.000000
## 3       Máximo 40.000000
## 4       Mínimo  0.000000
## 5 DesvEstandar  7.780782
## Capacitaciones 
##      "numeric" 
## [1] 19

##         Medida    Valor
## 1     Promedio 2.799320
## 2      Mediana 3.000000
## 3       Máximo 6.000000
## 4       Mínimo 0.000000
## 5 DesvEstandar 1.289271
## Equilibrio_Trabajo_Vida 
##               "numeric" 
## [1] 20

##         Medida     Valor
## 1     Promedio 2.7612245
## 2      Mediana 3.0000000
## 3       Máximo 4.0000000
## 4       Mínimo 1.0000000
## 5 DesvEstandar 0.7064758
## Antigüedad 
##  "numeric" 
## [1] 21

##         Medida     Valor
## 1     Promedio  7.008163
## 2      Mediana  5.000000
## 3       Máximo 40.000000
## 4       Mínimo  0.000000
## 5 DesvEstandar  6.126525
## Antigüedad_Cargo 
##        "numeric" 
## [1] 22

##         Medida     Valor
## 1     Promedio  4.229252
## 2      Mediana  3.000000
## 3       Máximo 18.000000
## 4       Mínimo  0.000000
## 5 DesvEstandar  3.623137
## Años_ultima_promoción 
##             "numeric" 
## [1] 23

##         Medida     Valor
## 1     Promedio  2.187755
## 2      Mediana  1.000000
## 3       Máximo 15.000000
## 4       Mínimo  0.000000
## 5 DesvEstandar  3.222430
## Años_acargo_con_mismo_jefe 
##                  "numeric" 
## [1] 24

##         Medida     Valor
## 1     Promedio  4.123129
## 2      Mediana  3.000000
## 3       Máximo 17.000000
## 4       Mínimo  0.000000
## 5 DesvEstandar  3.568136
## [1] 1