Métodos Cuantitativos Básicos - Otoño 2020

Ejercicios previos al laboratorio de la semana 15

Esta semana trabajaremos con una base que registra precio y características de zapatos para mujer. Puedes usar el siguiente chunk de código para cargarlos:

library(tidyverse)
zapatos <- 
read_csv("http://segasi.com.mx/clases/cide/datos/Datafiniti_Womens_Shoes_Jun19.csv")

Obtuvimos los datos de Kaggle. Si tienen tiempo y ganas, vale la pena echarle un ojo a todo lo que ofrece esta página.

En los ejercicios trabajarán con las siguientes tres variables: id, brand y prices.amountMax.

# Nos quedamos con los datos mencionados. 
zapatos <- zapatos %>% 
            select(id, brand, prices.amountMax)

Menciona las propiedades de la media, mediana y la moda.

R:

  • Propiedades de la media:

    1. La media se encuentra utilizando todos los valores de los datos.

    2. La media se ve afectada por valores extremadamente altos o extremadamente bajos, llamados generalmente outliers o valores atípicos, lo cual puede hacer que no sea la medida central apropiada en estas situaciones.

    3. La suma de las desviaciones con respecto a la media aritmética es cero (0).

    4. La media aritmética de los cuadrados de las desviaciones de los valores de la variable con respecto a una constante cualquiera se hace mínima cuando dicha constante coincide con la media aritmética.

    5. Si a todos los valores de la variable se le suma una misma cantidad, la media aritmética queda aumentada en dicha cantidad.

    6. Si todos los valores de la variable se multiplican por una misma constante la media aritmética queda multiplicada por dicha constante.

    7. La media aritmética de un conjunto de números positivos siempre es igual o superior a la media geométrica:

\[{\displaystyle {\sqrt[{n}]{x_{1}x_{2}\dots x_{n}}}\leq {\frac {x_{1}+\dots +x_{n}}{n}}}\]

  1. La media aritmética está comprendida entre el valor máximo y el valor mínimo del conjunto de datos:

\[\min \{x_1, x_2, \dots x_n\} \le \frac{x_1+ \dots + x_n}{n} \le \max \{x_1, x_2, \dots x_n\}\]

  1. La media es un valor comprendido entre los extremos de la distribución.

  2. La media es el centro de gravedad de la distribución de la variable. La media muestral es donde el diagrama de puntos se equilibra (Wild & Seber, 1999, 63). Es decir, la suma de las desviaciones de los valores con respecto a ella es igual a cero.

  3. La media del producto de una constante a por una variable X es igual al producto de la constante por la media de la variable dada. Es decir, si se efectúa un cambio de unidad de medida a los datos (por ejemplo de metros a centímetros), la media queda afectada por dicho cambio de escala.

  4. La media de la suma de una constante entera a con una variable X es igual a la suma de la constante con la media de la variable dada. O sea, al efectuar un cambio en el origen desde el que se han medido los datos, la media queda afectada por dicho cambio de origen.

  5. La media está influenciada por los valores de cada uno de los datos.

  6. La media no tiene por qué ser igual a uno de los valores de los datos, ni siquiera de su misma naturaleza: datos enteros pueden tener una media decimal.

  7. La media es un representante de los datos a partir de los que ha sido calculada, es decir, es un número que distingue un grupo de datos de otros (aunque es importante tener en cuenta medidas de dispersión para diferenciar grupos de datos con la misma media).


¿En qué circunstancia preferirías la media recortada a la media “normal”?

R: Vamos a preferir la media recortada cuando tenemos outliers cuya eliminación sea metodológicamente válida y que nos alteren las medidas de tendencia central de manera significativa.

  • Propiedades de la mediana

    1. La mediana es única, ya que solo existe una mediana para un conjunto de datos.

    2. No se ve afectada por valores muy grandes o muy pequeños.

    3. Puede obtenerse para datos de nivel de razón, de intervalo u ordinales (pero no para datos nominales o categóricos).

    4. A diferencia de la media, que solo considera magnitudes de los valores, la mediana considera la individualidad de cada uno de los datos.

  • Propiedades de la moda

    1. Al depender de la frecuencia, es una medida que se puede utilizar para describir variables cualitativas no jerarquizadas.

    2. No es única, ya que, para un número finito “n” de datos, puede haber un numero de modas que va desde 1 hasta “n”.

    3. Cuando calculamos la moda para valores contínuos, tenemos que calcularla a partir de intervalos modales (bins).


¿En qué circunstancia preferirías la mediana a la media “normal”?

R: Cuando estamos realizando un estudio de estadística descriptiva y queremos dar un valor típico que sea robusto ante la presencia de datos atípicos.


Calcula tres medidas de tendencia central de la variable prices.amountMax. Debes incluir la media y la mediana, pero la tercera es libre.

# calculamos la media y mediana 
zapatos %>% 
  summarise(media_todos = 
              mean(prices.amountMax, 
                   na.rm = T),
            mediana_todos = 
              median(prices.amountMax, 
                     na.rm = T))
## # A tibble: 1 x 2
##   media_todos mediana_todos
##         <dbl>         <dbl>
## 1        72.2          52.5
# calculamos la moda  
zapatos %>% 
  count(prices.amountMax, sort = T) %>% 
  head(n = 1)
## # A tibble: 1 x 2
##   prices.amountMax     n
##              <dbl> <int>
## 1             40.0   193

A partir de los resultados del ejercicio anterior, por favor responde los siguiente sin graficar la distribución de la variable:

Dado los valores de la media y la mediana, ¿la distribución de prices.amountMax es simétrica?

R: Solo viendo los valores de la media y la mediana, podríamos concluir que la distribución no es simétrica, sino que tiene un sesgo a la derecha.


Si respondiste que sí a la pregunta anterior, por favor explica por qué. Si respondiste que no, por favor explica por qué y menciona de qué lado esperas que esté el sesgo de la distribución.

R: Ya lo respondí arriba. :9

ggplot(data = zapatos, 
       mapping = aes(x = prices.amountMax)) + 
  # geom_boxplot() + 
  geom_density() +
  geom_rug()


Haz un histograma del precio de los zapatos. ¿Qué forma tiene la distribución? ¿Coincide con lo que planteaste en los incisos a y b?

ggplot(data = zapatos, 
       mapping = aes(x = prices.amountMax)) + 
  geom_histogram(bins = 100, color = "white") +
  geom_rug()

R: Si coincide.


Ahora trabajemos con la mediana y medias recortadas.

Para la variable prices.amountMax, calcula la mediana y tres medias recortando el 5, 10, y 15% de las observaciones en cada extremo, respectivamente. y compara con la mediana.


# Hacemos los calculos solicitados
zapatos %>% 
    summarise(media_5_obs = mean(prices.amountMax, 
                                 na.rm = T, 
                                 trim = 0.05),
              media_10_obs = mean(prices.amountMax, 
                                  na.rm = T, 
                                  trim = 0.1),
              media_15_obs = mean(prices.amountMax, 
                                  na.rm = T, 
                                  trim = 0.15),
              mediana = median(prices.amountMax, 
                               na.rm = T))
## # A tibble: 1 x 4
##   media_5_obs media_10_obs media_15_obs mediana
##         <dbl>        <dbl>        <dbl>   <dbl>
## 1        62.2         59.8         57.6    52.5

¿Cuál es la relación entre el porcentaje de observaciones que recortaste para cada media y los valores atípicos?

R: Que los valores recortados dejaron fuera algunos de los valores atípicos, y trataron de remediar un poco el sesgo derecho que presentaban los datos.


Dada la naturaleza de la distribución de esta variable, ¿cuál de las cuatro medidas de tendencia central preferirías?

R: La mediana.


Construye un boxplot horizontal de prices.amountMax. Siento que me gana la gana y quiero borrar los valores atípicos. ¿Qué me sugieres y por qué?

Hay dos opciones:

  • Utilizar el valor de los brazos del boxplot para filtrar aquellos valores que se encuentren por encima de este valor (si lo que deseamos es eliminarlos de la base) o…

  • Dejar los datos dentro de la base, pero mostrar el boxplot sin eliminar los datos.

Ambas opciones llevan a resultados distintos. El primer caso nos permite tener una base nueva (lo cual tiene que tener una justificación metodológica) y el segundo nos permite tener una visualización bonita.

# Grafica sin outliers pero con la base integra.
plot <- zapatos %>% 
    ggplot(aes(x = 1, 
               y = prices.amountMax)) +
    scale_y_continuous(limits = c(0, 144)) +
    coord_flip() +
    geom_boxplot(outlier.color = "transparent", fill = NA)  

plot
## Warning: Removed 594 rows containing non-finite values (stat_boxplot).

# Filtrado de los datos utilizando el boxplot. 
q <- quantile(zapatos$prices.amountMax)[c("25%", "75%")]
ri <- unname(1.5*(q[2] - q[1]))

# Nueva base, sin outliers dentro de los viejos brazos de la caja...
zapatos_filt <- zapatos %>% 
  filter(prices.amountMax <= q[2] + ri & prices.amountMax >= q[1] - ri)

max(zapatos_filt$prices.amountMax)
## [1] 157.32
# Grafica
plot(density(zapatos_filt$prices.amountMax))

Con este segundo método, ya tenemos un método para quedarnos con datos sin outliers.


Considera el histograma y el boxplot que hiciste en los ejercicios anteriores y responde:

A partir de analizar exclusivamente las distribuciones, ¿crees que las observaciones están concentradas cerca del valor típico o dispersas?

prop.table(table(zapatos$prices.amountMax > quantile(zapatos$prices.amountMax, 0.75) + (1.5 * quantile(zapatos$prices.amountMax, 0.75) -  quantile(zapatos$prices.amountMax, 0.25))))
## 
##  FALSE   TRUE 
## 0.9772 0.0228

El 97.72% de los datos se encuentran dentro del intervalo de los bracitos de las cajas, mientras que el 2.28% se encuentran fuera. Yo consideraría que , las observaciones se encuentran concentradas cerca del valor típico.

Igualmente, podríamos calcular otras métricas:

# Varianza de los datos
var(zapatos$prices.amountMax)
## [1] 29721.91
# Desviación estándar
sd(zapatos$prices.amountMax)
## [1] 172.4004
# Desviación absoluta sobre la mediana
mad(zapatos$prices.amountMax)
## [1] 31.17908
# Desviación absoluta sobre la media
DescTools::MeanAD(zapatos$prices.amountMax)
## [1] 40.95038

¿Cuáles son las cuatro métricas que tenemos para cuantificar dicha dispersión/concentración?

  • rango

  • desviación absoluta promedio

  • varianza y…

  • desviación estándar


Calcula a patita (es decir, como hicimos en clase) el promedio de las desviaciones absolutas y el promedio de las desviaciones al cuadrado. Explica qué estás haciendo en cada línea del código.

zapatos %>% 
    mutate(promedio_precio = mean(prices.amountMax, na.rm = T),
           desviaciones_abs = abs(prices.amountMax - promedio_precio),
           desviaciones_cuadrado = (prices.amountMax - promedio_precio)^2) %>% 
    summarise(suma_desv_absolutas = sum(desviaciones_abs),
              suma_desv_cuadrado = sum(desviaciones_cuadrado),
              num_obs = n()) %>% 
    mutate(dap = suma_desv_absolutas/num_obs, # Desviaci'on Absoluta Promedio
           var = suma_desv_cuadrado/num_obs # Varianza
           ) 
## # A tibble: 1 x 5
##   suma_desv_absolutas suma_desv_cuadrado num_obs   dap    var
##                 <dbl>              <dbl>   <int> <dbl>  <dbl>
## 1             409504.         297189415.   10000  41.0 29719.

¿Cuál es el nombre formal del promedio de las desviaciones absolutas y el promedio de las desviaciones al cuadrado?

  • Promedio de las Desviaciones Absolutas = Desviación Absoluta Promedio.

  • Promedio de las desviaciones al cuadrado = Varianza.


Extra. Calcula la media, mediana y moda del precio de los zapatos de las siguientes marcas: Brinley Co. / Steve Madden / SKECHERS /Victoria K. /Crocs /Nature Breeze / Toms / Soda / Trotters / MICHAEL Michael Kors / David Tate / Timberland PRO / Drew

zapatos %>% 
    filter(brand %in% c("Brinley Co.", "Steve Madden", "SKECHERS", "Victoria K.", "Crocs", "Nature Breeze", "Toms", "Soda", "Trotters", "MICHAEL Michael Kors", "David Tate", "Timberland PRO", "Drew")) %>% 
    group_by(brand) %>% 
    summarise(media_por_marca = mean(prices.amountMax, na.rm = T),
              mediana_por_marca = median(prices.amountMax, na.rm = T)) %>% 
    ungroup() 
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 13 x 3
##    brand                media_por_marca mediana_por_marca
##    <chr>                          <dbl>             <dbl>
##  1 Brinley Co.                     35.9              33.0
##  2 Crocs                           44.2              45.0
##  3 David Tate                      91.6              89.9
##  4 Drew                           140.              142. 
##  5 MICHAEL Michael Kors           110.              100. 
##  6 Nature Breeze                   91.3              39.0
##  7 SKECHERS                        50.7              51.7
##  8 Soda                            32.8              33.0
##  9 Steve Madden                    37.1              23.1
## 10 Timberland PRO                 110.              110. 
## 11 Toms                            55.1              45.9
## 12 Trotters                       105.               81.3
## 13 Victoria K.                     19.7              16.9

Haz una gráfica de columnas del precio promedio de estas marcas.

zapatos %>% 
    filter(brand %in% c("Brinley Co.", "Steve Madden", "SKECHERS", "Victoria K.", "Crocs", "Nature Breeze", "Toms", "Soda", "Trotters", "MICHAEL Michael Kors", "David Tate", "Timberland PRO", "Drew")) %>% 
    group_by(brand) %>% 
    summarise(media_por_marca = mean(prices.amountMax, na.rm = T),
              mediana_por_marca = median(prices.amountMax, na.rm = T)) %>% 
    ungroup() %>% 
    ggplot(aes(x = reorder(brand, media_por_marca), y = media_por_marca)) +
    geom_col(fill = "steelblue") +
    coord_flip() +
    theme_minimal() 
## `summarise()` ungrouping output (override with `.groups` argument)