CLASE 2

ESTADISTICA DESCRIPTIVA

Exploración general de los datos

1. OBJETIVO

El objetivo de esta clase analizar las tendencias y distribución de nuestros datos usando las herramientas de la estadísitca descriptiva. NO es el objetivo que el alumno memorice las fórmulas, sino que interprete el significado de los resultados y la utilidad que tiene cada uno de los parámetros explicados en clase. Se proyectará los resultados en gráficas de “caja y bigotes” para visualizar varios parámetros de la estadistica descriptiva.

2. PUNTOS CLAVE

3. TEMARIO

4. MEDIDAS DE TENDENCIA CENTRAL

Las medidas de tendencia central son un conjunto de valores que se encuentran en la parte central de la distribución de nuestro conjunto de datos.

4.1 Media

Es una medida de tendencia central que resulta de la suma aritmética de todo el conjunto de valores dividido entre el número de valores de la muestra analizada. La fórmula se define como \[\bar{x} = \frac{\sum_{i=1}^n x_i}{n}\] Donde:

Variable Definición
\(\bar{x}\) es la media muestral
\(\mu\) es la media poblacional
\(n\) número de muestras
\(N\) número de la población

En R para calcular la media usamos la función mean(). Por ejemplo, calcularemos la media de los siguientes datos: ej1 = {15,15,16,16,18,18,23,19,19,18,17,16,18,18,19,20} En R es recomendable primero crear el objeto y luego calcular la media sobre el objeto, de la siguiente forma

ej1 <- c(15,15,16,16,18,18,23,19,19,18,17,16,18,18,19,20)     # creación de objeto
mean(ej1)                                                     # cálculo de la media
## [1] 17.8125

También podríamos calcular la media sobre el conjunto de datos sin crear el objeto

mean(c(15,15,16,16,18,18,23,19,19,18,17,16,18,18,19,20))
## [1] 17.8125

En ciertas ocasiones, especialmente cuando obtenemos datos de algún sensor, el equipo no registra ningún dato y pasa a la siguiente muestreo. Cuando pasa esto tenemos un NA. Los NA no son calculables en la media y le debemos indicar al programa que deseamos retirarlo.

ej2 <- c(15,15,16,NA,16,18,18,23,19,19,18,17,16,18,18,19,20)
mean(ej2)
## [1] NA

Para ello usamos el parámetro na.rm = TRUE para hacer esta indicación.

mean(ej2, na.rm = TRUE)
## [1] 17.8125

R tambien nos permite calcular la media de una base de datos tipo data.frame, como la que vimos la clase pasada de COVID19.

db <- read.csv("https://covid.ourworldindata.org/data/owid-covid-data.csv", na.strings = "", fileEncoding = "UTF-8-BOM")
mean(db$total_cases, na.rm = TRUE)
## [1] 91847.45

La media se ve afectada por los valores extremos, veamos el siguiente ejemplo.

ej3 <- c(ej1, 125)
ej1
##  [1] 15 15 16 16 18 18 23 19 19 18 17 16 18 18 19 20
ej3
##  [1]  15  15  16  16  18  18  23  19  19  18  17  16  18  18  19  20 125
mean(ej1)
## [1] 17.8125
mean(ej3)
## [1] 24.11765

En este caso la diferencia entre las medias es del 35.4% solo aumentando un outlier

(mean(ej3)-mean(ej1))/mean(ej1)
## [1] 0.3539732

Para evitar este problema podemos usar el parámetro trim, que elimina los datos extremos. Vamos a elimiar el 25% de los datos en ambos extremos

mean(ej3, trim = 0.25)
## [1] 17.88889
mean(ej1)
## [1] 17.8125

Con esto solucionamos este detalle. Vemos que la diferencia de las medias ahora es mínima.

R tambien nos permite calcular las medias en columnas o en filas, supongamos que tenemos la siguiente matriz de datos \[\mathbf{x} = \left[ \begin{array} {rrr} 1&3&5 \\ 4&7&3 \\ 6&9&8 \\ \end{array} \right] \] Para generar la matriz usamos la función matrix

x <- matrix(data = c(1,3,5,4,7,3,6,9,8), nrow = 3, byrow = T)
x
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    4    7    3
## [3,]    6    9    8

Para calcular las medias por fila se usa la función rowMeans

rowMeans(x)
## [1] 3.000000 4.666667 7.666667

Para calcular las medias por columna usamos la función colMeans

colMeans(x)
## [1] 3.666667 6.333333 5.333333

Tambien podamos usar la función apply para calcular valores por fila o columna. La función apply tiene tres parámetros que son: + X = que es la matriz que se va a analizar. + MARGIN = que indica si se va a calcular por fila o por columna * 1 indica que el cálculo se haga por fila * 2 indica que el cálculo se haga por columna

# por fila -----------
rowMeans(x)
## [1] 3.000000 4.666667 7.666667
apply(X = x,MARGIN = 1,FUN = mean)
## [1] 3.000000 4.666667 7.666667
# por columna -----------
colMeans(x)
## [1] 3.666667 6.333333 5.333333
apply(X = x,MARGIN = 2,FUN = mean)
## [1] 3.666667 6.333333 5.333333

La función apply nos va a servir mas adelante para calcular diferentes descriptores por fila o columna, como mediana, rango, desviación estandar, entre otros.

4.2 Mediana

La mediana es otra medida de tendencia central. Para calcularla es necesario ordenar los datos de mayor a menor y luego escoger el dato que se encuentra justo en el medio. Si el número de datos de la muestra es par, entonces se toma los dos datos del medio y se calcula el promedio. Veamos que pasa con el ejemplo “ej1”. Primero ordenamos los datos de la muestra con la función sort

ej1
##  [1] 15 15 16 16 18 18 23 19 19 18 17 16 18 18 19 20
sort(ej1)
##  [1] 15 15 16 16 16 17 18 18 18 18 18 19 19 19 20 23

Para saber cual es el valor del medio y no contar manualmente cuantos datos tiene nuestro vector númerico podemos usar la función length

length(ej1)
## [1] 16

Nuestro vector numérico tiene 16 elementos, así que debemos seleccionar los dos del medio, es decir los elementos que estan en la posición 8 y 9. Para llamar a los elementos de la posición 8 y 9 podemos usar los corchetes [] indicando la posición.

sort(ej1)[8]
## [1] 18
sort(ej2)[9]
## [1] 18

En este caso los elementos de la posición 8 y 9 corresponden al mismo número 18. La media aritmética de ellos sería igual a 18. R nos permite calcular la media de los datos directamente con la función median()

median(ej1)
## [1] 18

Una de las ventajas de la mediana es que no se ve tan afectada por los valores extremos como la media. La otra ventaja, es que la mediana no usa todos los valores de los datos, si cambiamos los valores extremos, la mediana continuará siendo la misma.

4.3 Moda

La moda no es muy usada en los datos cualitativos, pero es la única medida de tendencia central que puede usarse con datos cuantitativos. Por ejemplo, en la locación de la siguiente base de datos:

\(alumnos = {"Juan","Jose","Alberto","Raul","Juan","Ramiro","Antonio","Juan","Diego","Rodrigo","Fabian","Arturo","Jose"}\)

La moda es el o los datos que ocurren con mayor frecuencia en el conjunto de datos. R no tiene una función específica para calcular la moda, pero podemo usar la función table() para crear una tabla de frecuencias absolutas y luego ordenar de mayor a menor con la función sort(), además usaremos la función tail() para ver los datos mas frecuentes.

alumnos <- c("Juan","Jose","Alberto","Raul","Juan","Ramiro","Antonio","Juan","Diego","Rodrigo","Fabian","Arturo","Jose")
tail(sort(table(alumnos)))
## alumnos
##  Fabian  Ramiro    Raul Rodrigo    Jose    Juan 
##       1       1       1       1       2       3

El nombre más frecuente es “Juan”. Tal vez sería más facil si lo vemos graficado en una gráfica de barras de los conteos absolutos por nombre.

barplot(sort(table(alumnos)), las =2, col = colores1)
grid()

Resultado de este análisis ud. puede llegar a tres conclusiones basicamente: + no hay moda cuando todos los datos ocurren con la misma frecuencia. + unimodal o simplemente moda cuando solamente uno de los valores ocurre con mayor frecuencia que el resto. + bimodal cuando existen dos datos que ocurren con la misma mayor frecuencia. + multimodal cuando existen tres o mas valores que ocurren con la misma mayor freucuencia en comparación al resto del grupo que ocurre con menor frecuencia.

4.4 Mitad de rango

La mitad de rango es una medida de tendencia cenra aque consiste en el cálulo de la media aritmética del máximo y mínimo de los valores del conjunto de datos. Para calcular este valor en R, podemos usar las funciones max() y min() para calcular los valores máximos y mínimos, y luego calcular la media con la función mean().

max(ej1)
## [1] 23
min(ej1)
## [1] 15
mean(c(max(ej1),min(ej1)))
## [1] 19

La mitad de rango es muy sensible a los valores extremos, pero su cálculo es muy sencillo.

5. MEDIDAS DE DISPERSIÓN

5.1 Rango

El rango de un conjunto de datos es la diferencia que hay entre el valor máximo y el mínimo de un conjunto de datos. En R tenemos dos formas de calcular el rango, restando los valores máximo y mínimo calculados con las funciones max() y min(), respectivamente. O podemo usar la función range() que nos da los dos valores y luego restaríamos uno del otro.

# rango
max(ej1) - min(ej1)
## [1] 8
range(ej1)
## [1] 15 23
range(ej1)[2] - range(ej1)[1]
## [1] 8

\(\sqrt{32}\) ### 5.2 Desviación estandar La desviación estandar es una de las medidas de dispersión más utilizada, junto con el error estandar. La fórmula para calcular la desviación estandar es la siguiente: \[s = \sqrt{\frac{\sum{(x_i - \bar{x})^2 }}{n - 1}} \] Más allá de memorizar la fórmula, lo importante es que Ud entienda el significado. Puede entender la desviación estandar como el promedio de las distancias de cada dato a la media . Entonces, si la mayoría de datos están muy pegados a la media, su desviación estandar será muy pequeña. Pero si hay muchos datos que estan alejados de la media, entonces su desviación estandar será mas grande. Pogamos el siguiente ejemplo \[ej4 = {3.45,3.46,3.44,3.48,3.42,3.43,3.45,3.44}\] \[ej5 = {3.05,3.96,2.44,4.48,5.42,1.43,6.45,0.34}\] Si calculamos la media para estos dos conjuntos de datos, nos daremos cuenta que son iguales.

ej4 <- c(3.45,3.46,3.44,3.48,3.42,3.43,3.45,3.44)
ej5 <- c(3.05,3.96,2.44,4.48,5.42,1.43,6.45,0.34)
mean(ej4)
## [1] 3.44625
mean(ej5)
## [1] 3.44625

Pero veamos que pasa cuando calculamos sus desviaciones estandar con la función sd().

sd(ej4)
## [1] 0.01846812
sd(ej5)
## [1] 2.040112

La diferencia es enorme. La desviación estandar del ejemplo ej4 es casi el mismo valor que la media del grupo, lo cual es una gran diferencia. Al igual que las medias, la desviación estandar se ve muy afectada por valores atípicos en la muestra. Veamos un ejemplo

ej6 <- c(ej4, 35)
sd(ej4)
## [1] 0.01846812
sd(ej6)
## [1] 10.51793

En cuanto a la nomenclatura de la desviación estandar

Tipo de población símbolo
Desviación estandar muestral \(s\)
Desviación estandar poblacional \(\sigma\)

5.3 Varianza

La varianza, tambien llamda como dispersión o esparcimiento, equivale al cuadrado de la desviación estandar. Su interpretación es la misma que la desviación estandar, muestra la distancia promedio que hay entre los datos y la media del conunto de datos. Se calcula con la siguiente fórmula \[s^2 = \frac{\sum{(x_i - \bar{x})^2 }}{n - 1}\] En R podemos calcular facilmente la varianza con la función var()

var(ej4)
## [1] 0.0003410714
var(ej5)
## [1] 4.162055

La nomenclatura de la varianza es: |Tipo de población| símbolo | |———–|———-| | Desviación estandar muestral | \(s^2\)| |Desviación estandar poblacional| \(\sigma^2\)|

A veces es necesario comparar la variación entre dos muestras o dos poblaciones distintas. Supongamos que queremos comparar las variaciones de la expresión del gen “x” (relacioando con la altura de las personas) y con la correspondiente talla de las mismas, de la siguiente tabla

Expresion gen X altura en cm
5 178
4 155
5 176
4 154
7 195
8 201
4 159
5 161
6 174
7 180

Para comparar las varianzas entre las muestras podemos caluclar el Coeficiente de variación (CV) que queda definido por la siguiente fórmula \[CV = \frac{s}{\bar{x}} * 100\] podemos calcular facilmente le coeficiente de variación de cada muestra usando las funciones mean() y sd()

gen.X <- c(5,4,5,4,7,8,4,5,6,7)
talla <- c(178,155,176,154,195,201,159,161,174,180)
CV.gen <- (sd(gen.X)/mean(gen.X))*100
CV.talla <- (sd(talla)/mean(talla))*100
data.frame(variable = c("gen.X", "talla"),
           n = c(length(gen.X), length(talla)),
           medias = c(mean(gen.X), mean(talla)),
           sd = c(sd(gen.X),sd(talla)),
           CV = c(CV.gen, CV.talla))
##   variable  n medias        sd        CV
## 1    gen.X 10    5.5  1.433721 26.067652
## 2    talla 10  173.3 16.248419  9.375891

El resultado muestra que si bien es cierto el valor numérico de la desviación estandar de la expresión del gen X es casi 10 veces menor que la desviación estandar de la talla,lo que erroneamente nos haría pensar que la expresión del gen X tiene menor dispersión, si escalamos los datos usando el Coeficiente de variación observamos que realmente es la talla la que tiene una menor dispersión. Podemos aprovehcar este ejemplo para ver si las variables correlacionan con un gráfico de dispersión que vimos en la primera clase

plot(gen.X~talla, main = "Correlación \n gen X Vs talla", pch = 16,
     xlim = c(140,210), ylim = c(2,10), bty = "l", las = 1,
     ylab = "Expresión del gen X",
     xlab = "Talla en cemtímetros")

Aunque en este capítulo aún no analizaremos correlaciones, intuitivamente Ud puede observar que las variables guardan una correlación positiva, que debe ser muy fuerte.

6. MEDIDAS DE POSICIÓN RELATIVA

Muchas veces vamos a tener la necesidad de comparar diferentes datos cuantitivos cuyas unidades son distintas, por ejemplo cantidad de luz medida en lumenes y distancia al sol, o expresión de un gen y la talla de la persona, o longitud de onda y generación de calor. Todas estas variables tienen unidadesd diferentes, por lo que si queremos compararlas o relacionarlas serían imposible. Para ello, podemos expresar cada dato como una relación entre la media y la desviación estandar, estamos escalando los datos. ### 6.1 Puntuación Z La puntuación en Z nos permite transformar los datos a una escala estandarizada. ### 6.2 Percentiles y cuartiles

6.3 Boxplot