Esta primera tarea de Estadística Computacional, significa el primer acercamiento a R y RStudio dentro del curso. Para familiarizarnos con el lenguaje y sus posibilidades, se abordan cuatro desafíos comenzando con ejemplos de operadores matemáticos, luego ejemplos de tipos de estructura de datos. El tercer desafío consiste en aplicar lo aprendido en R para desarrollar un juego de piedra, papel o tijeras. Finalmente, el cuarto desafío consiste en seleccionar un dataset, analizar sus datos y graficarlo en R.

Desafío 1

10 ejemplos con diferentes operadores matemáticos

# 1 Coseno de 0º
cos(0)
## [1] 1
#2 Seno de 90º
sin(90 * pi/180)
## [1] 1
#3 Tangente de 45º
tan(45 * pi/180)
## [1] 1
#4 Función exponencial
exp(2)
## [1] 7.389056
#5 Logaritmo natural
log(1)
## [1] 0
#6 Factorial de un número
factorial(5)
## [1] 120
#7 Valor absoluto
abs(25-33)
## [1] 8
#8 Aproximación truncada de un número
trunc(9.23)
## [1] 9
#9 Secuencia numérica descendente con operador " : "
4:-4
## [1]  4  3  2  1  0 -1 -2 -3 -4
#10 Secuencia numérica ascendente de pares con "seq"
seq(from = 0, to = 10, by = 2)
## [1]  0  2  4  6  8 10

Desafío 2

Realice ejemplos usando otros tipos de estructura de datos: elementos booleanos, factores, tablas, entre otros.

-> Elementos booleanos de comparación numérica:

# Ocho no es menor que cinco, esta comparación debe retornar False
8 < 5
## [1] FALSE
# Diez sí es mayor que nueve, esta comparación retorna verdadero
10 > 9
## [1] TRUE

-> Operadores lógicos:

# Si a es verdadero y b es falso, a ∧ b es falso
a = TRUE
b = FALSE
a & b  #  Operador "and"
## [1] FALSE
# Si a es verdadero y b es falso, a ∨ b es verdadero
a | b  #  Operador "or"
## [1] TRUE

-> Acceder a elementos de una lista:

# Definiendo una lista, podemos acceder a sus elementos especificando la posición
semana = list("lunes", "martes", "miércoles", "jueves", "viernes")
# Primer elemento de la lista
semana[[1]]
## [1] "lunes"
# Segundo elemento de la lista
semana[[2]]
## [1] "martes"
# Podemos actualizar la lista incluyendo un nuevo elemento en la posición 6
semana[[6]] <- "sábado"
# Accedemos al sexto elemento de la lista recién agregado
semana[[6]]
## [1] "sábado"
# Mostramos la lista completa
semana
## [[1]]
## [1] "lunes"
## 
## [[2]]
## [1] "martes"
## 
## [[3]]
## [1] "miércoles"
## 
## [[4]]
## [1] "jueves"
## 
## [[5]]
## [1] "viernes"
## 
## [[6]]
## [1] "sábado"
# Factores
colorCuadernos <- c("Blanco", "Rojo", "Rojo", "Azul", "Blanco", "Amarillo")
# Tabla de factores
table(colorCuadernos)
## colorCuadernos
## Amarillo     Azul   Blanco     Rojo 
##        1        1        2        2
# Consultar elemento -> ¿Hay al menos un cuaderno rojo?
"Rojo" %in% colorCuadernos
## [1] TRUE
# Consultar elemento -> ¿Hay al menos un cuaderno negro?
"Negro" %in% colorCuadernos
## [1] FALSE

Desafío 3: Piedra, papel o tijeras

El código contempla la elección de parte del usuario de la alternativa con la que jugará, siendo las posibilidades “Piedra”, “Papel” o “Tijeras”. Por contraparte, existe un jugador virtual, en este caso denominado “Computador”, para quien el programa toma una muestra, mediante la función sample de tres alternativas que presenta el juego. Posteriormente, el programa imprimirá la alternativa seleccionada por el usuario, la alternativa del computador y el resultado del juego.

jugar <- function(user_movimiento = c("Piedra", "Papel", "Tijeras")){
  machine_movimiento <- sample(c("Piedra", "Papel", "Tijeras"), 1)
  
  cat("Usuario: ", user_movimiento, "\n")
  cat("Computador: ", machine_movimiento, "\n")
  
  if ((user_movimiento == "Piedra" & machine_movimiento == "Tijeras") |
      (user_movimiento == "Papel" & machine_movimiento == "Piedra") |
      (user_movimiento == "Tijeras" & machine_movimiento == "Papel")){
    print("¡Has ganado!")
    
  } else if ((machine_movimiento == "Piedra" & user_movimiento == "Tijeras") |
             (machine_movimiento == "Papel" & user_movimiento == "Piedra") |
             (machine_movimiento == "Tijeras" & user_movimiento == "Papel")){
    print("¡Has perdido!")
  } else {
    print("Empate")
  }
}

jugar("Papel")
## Usuario:  Papel 
## Computador:  Piedra 
## [1] "¡Has ganado!"

Alternativamente, el programa se puede modificar para que ambas opciones funcionen con la función sample, se esta forma la elección del usuario se vuelve automática, simulando el juego sin necesidad de introducit una elección por escrito.

jugar_auto <- function(movimiento = c("Piedra", "Papel", "Tijeras")){
  user <- sample(movimiento, 1)
  machine <- sample(movimiento, 1)
  cat("Usuario: ", user, "\n")
  cat("Computador: ", machine, "\n")
  if ((user == "Piedra" & machine == "Tijeras") |
      (user == "Papel" & machine == "Piedra") |
      (user == "Tijeras" & machine == "Papel")){
    print("¡Has ganado!")
    
  } else if ((machine == "Piedra" & user == "Tijeras") |
             (machine == "Papel" & user == "Piedra") |
             (machine == "Tijeras" & user == "Papel")){
    print("¡Has perdido!")
  } else {
    print("Empate")
  }
}

jugar_auto()
## Usuario:  Piedra 
## Computador:  Tijeras 
## [1] "¡Has ganado!"

Desafío 4: Dataset

4.1 Seleccionar dataset y cargarlo

data(USPersonalExpenditure)

4.2 Describa el conjunto de datos y explique para que fue o podría ser utilizado.

(USPersonalExpenditure)
##                       1940   1945  1950 1955  1960
## Food and Tobacco    22.200 44.500 59.60 73.2 86.80
## Household Operation 10.500 15.500 29.00 36.5 46.20
## Medical and Health   3.530  5.760  9.71 14.0 21.10
## Personal Care        1.040  1.980  2.45  3.4  5.40
## Private Education    0.341  0.974  1.80  2.6  3.64

El conjunto de datos posee información sobre el gasto personal en Estados Unidos en la categorías de comida y tacabo, hogar, salud, cuidado personal y educación privada para los años 1940, 1945, 1950, 1955 y 1960. La información se estructura en una matriz de 5x5, siendo cada columna un año y cada fila la categoría del gasto.

Información de este tipo podría ser utilizada para determinar tendencias de consumo en una población a lo largo de los años, así como movimientos en las distintas industrias y el mercado. Al mismo tiempo, nos permite comparar las categorías entre sí para determinar las prioridades de una población al momento de gastar su dinero y si estas se modifican a través del tiempo o tras algún evento de relevancia. Analizar este tipo de información podría ser útil al momento de decidir estrategias de mercado y también políticas públicas. Así como poder predecir posibles comportamientos y demanda para el futuro.

¿Cuál es la fuente de los datos?

La fuente es el libro “Almanaque mundial” de 1962
Source: The World Almanac and Book of Facts, 1962, p. 756

4.3 Describa cada variable, indique a qué tipo de variable corresponde, indique qué valores puede tomar y su unidad de medida.

Las variables son categorías de gasto, en este caso tenemos cinco:
Gasto en comida y tabaco, gastos del hogar, salud, cuidado personal, educación privada.
Cada categoría entrega datos para cinco años: 1940, 1945, 1950, 1955 y 1960.
Los valores son números enteros positivos incluyendo el cero. Sin embargo, en la información real los datos van desde 0.341 hasta 86.80.
La unidad de medida es dinero, puntualmente, miles de millones de dólares.

4.4 Ejecute la función summary(“conjunto_de_datos”). ¿Qué puede observar?

summary(USPersonalExpenditure)
##       1940             1945             1950            1955      
##  Min.   : 0.341   Min.   : 0.974   Min.   : 1.80   Min.   : 2.60  
##  1st Qu.: 1.040   1st Qu.: 1.980   1st Qu.: 2.45   1st Qu.: 3.40  
##  Median : 3.530   Median : 5.760   Median : 9.71   Median :14.00  
##  Mean   : 7.522   Mean   :13.743   Mean   :20.51   Mean   :25.94  
##  3rd Qu.:10.500   3rd Qu.:15.500   3rd Qu.:29.00   3rd Qu.:36.50  
##  Max.   :22.200   Max.   :44.500   Max.   :59.60   Max.   :73.20  
##       1960      
##  Min.   : 3.64  
##  1st Qu.: 5.40  
##  Median :21.10  
##  Mean   :32.63  
##  3rd Qu.:46.20  
##  Max.   :86.80

La función summary muestra los datos ordenados de menor a mayor, considerando: mínimos, máximos, cuartiles, media y mediana.

4.5 Ejecute la función plot(“conjunto_de_datos”). ¿Qué puede observar?

Al ejecutar directamente “plot(dataset)” se muestra un gráfico generado con el dataset. Sin embargo, en este caso, al tratarse de una matriz debemos seleccionar qué queremos graficar exactamente. A continuación el gasto en Comida y tabaco a lo largo de los años:

barplot(USPersonalExpenditure[1,], xlab = "Year", ylab = "Food and Tobacco (Billions of dollars)")

El gasto aumenta considerablemente al pasar los años. Lo mismo ocurre en las otras categorías. Debemos considerar también el momento histórico de esta información, al tratarse de la época de la post-guerra tras la Segunda Guerra Mundial en donde EEUU vivió una importante prosperidad y expansión económica.

Referencias