Práctica 2

ESTADÍSTICA DESCRIPTIVA: REPRESENTACIONES GRÁFICAS

Objetivos

  • Resumir, ordenar y analizar conjuntos de datos
  • Calcular diversas características de una variable estadística univariante
  • Representar gráficamente la distribución de frecuencias
  • Realizar análisis exploratorio de datos.

Introducción al Análisis Descriptivo

En esta práctica tomaremos un primer contacto con las técnicas estadísticas que se utilizan para ordenar, analizar y representar un conjunto de datos, con el fin de describir apropiadamente sus características. El primer paso en el análisis de datos, una vez introducidos los mismos, es realizar un análisis descriptivo o análisis exploratorio de datos. Los principales objetivos de un análisis descriptivo o análisis exploratorio de datos son la descripción y la síntesis de los datos. Para ello, los datos se organizan en tablas, se calculan medidas que describen sus características más importantes y se realizan representaciones gráficas.

Este análisis inicial proporciona una idea de la forma que tiene la distribución de las observaciones y permite obtener estadísticos de tendencia central (media, mediana y moda), de dispersión (varianza, desviación típica, rango), de forma (asimetría, curtosis), de posición (percentiles), así como gráficos de barras, de sectores e histograma.

R dispone de un amplio conjunto de herramientas para el análisis descriptivo de un conjunto de datos.

Tabla de Frecuencias

Para crear tablas de frecuencia en R se emplea la función table o la función prop.table, dependiendo de si la tabla muestra las frecuencias absolutas o las frecuencias relativas. La sintaxis de estas órdenes es la siguiente:

> table(x)  # para frecuencias absolutas

> prop.table(tab)   # para las frecuencias relativas

La principal diferencia entre las dos funciones reside en el tipo de los argumentos que necesita cada una.

  • table construye la tabla de frecuencias absolutas a partir de la variable que recibe como argumento
  • prop.table recibe como argumento una tabla o una matriz que representa una tabla de frecuencias absolutas, y a partir de ella construye la tabla de frecuencias relativas asociada. Es decir, prop.table recibe como argumento el resultado que devuelve la función table.

Ejemplo1:

En la siguiente tabla se recogen 29 datos sobre el peso, altura, velocidad y color

\(   \begin{array} {|c|c|c|c|}   \hline  peso & altura & velocidad & color \\ \hline 7.2 & 50 & 10.3 & Blanco \\ \hline  8.5 & 66 & 10.3 & Amarillo  \\ \hline  9.8 & 73 & 10.2 & Verde \\ \hline  6.5 & 72 &  16.4 & Verde \\ \hline  7.5 & 81 & 18.8 & Verde \\ \hline  10.1 & 73 & 19.7 & Verde \\ \hline  11 & 66 & 15.6 & Blanco \\ \hline  11 & 75 & 21.2 & Amarillo \\ \hline  11.1 & 70 & 22.6 &  NA \\ \hline  11.2 & 75 & 19.9 & Blanco \\ \hline  11.3 & 69 & 24.2 & Amarillo \\ \hline  11.4 & 76 & 21 & Blanco \\ \hline   11.4 & 76 & 21.4 & Verde \\ \hline  11.7 & 69 &  21.3 & Verde \\ \hline   12 & 75 & NA & Amarillo \\ \hline  12.9 & 64 & 22.2 & Amarillo \\ \hline  12.9 & 55 &  33.8 & Blanco \\ \hline  10.3 & 76 & 27.4 & Amarillo \\ \hline  9.7 & 71 & 25.7 & Verde \\ \hline   10.8 & 64 & 24.9 & Verde \\ \hline  11 & 78 &  23.1 & Amarillo \\ \hline   10.2 & 70 &  31.7 & Amarillo \\ \hline  10.5 & 74 &  36.3 & Verde \\ \hline  6.5 & 72 & 38.3 & Verde \\ \hline  6.3 & 77 & 42.6 & Verde \\ \hline  7.3 & 51 & 55.4 & Blanco \\ \hline  7.5  & 62  & NA & Blanco \\ \hline   7.9 & 60 & 58.3 & Amarillo \\ \hline   8.2 & 70 &  NA & Verde  \\ \hline     \end{array} \)

Tabla1. Datos del ejemplo 1

Nota: Se puede realizar: a) en la Consola de R y b) En el editor de R

a) En la Consola de R, como lo hacemos a continuación

> datos <- read.table(“C:/Users/Usuario/Desktop/misdatos.txt”, header = TRUE)

o bien

> setwd(“C:/Datos”)   # situarse en el directorio de trabajo

> datos <- read.table(“misdatos.txt”, header = TRUE)  

> datos
peso altura velocidad    color
1   7.2     50      10.3   Blanco
2   8.5     66      10.3 Amarillo
3   9.8     73      10.2    Verde
4   6.5     72      16.4    Verde
5   7.5     81      18.8    Verde
6  10.1     73      19.7    Verde
7  11.0     66      15.6   Blanco
8  11.0     75      21.2 Amarillo
9  11.1     70      22.6     <NA>
10 11.2     75      19.9   Blanco
11 11.3     69      24.2 Amarillo
12 11.4     76      21.0   Blanco
13 11.4     76      21.4    Verde
14 11.7     69      21.3    Verde
15 12.0     75        NA Amarillo
16 12.9     64      22.2 Amarillo
17 12.9     55      33.8   Blanco
18 10.3     76      27.4 Amarillo
19  9.7     71      25.7    Verde
20 10.8     64      24.9    Verde
21 11.0     78      23.1 Amarillo
22 10.2     70      31.7 Amarillo
23 10.5     74      36.3    Verde
24  6.5     72      38.3    Verde
25  6.3     77      42.6    Verde
26  7.3     51      55.4   Blanco
27  7.5     62        NA   Blanco
28  7.9     60      58.3 Amarillo
29  8.2     70        NA    Verde

b) En el Editor de  R. Para ello primero abrimos un nuevo script: Elegimos en el menú principal: Archivo/Nuevo script y escribimos

datos <- read.table(“misdatos.txt”, header = TRUE)  # Se recomienda situarse en el directorio donde están los archivos de los datos
datos

Figura 1: Consola de R y Editor de datos de R

 

Señalizamos todo en el Editor de R y pulsamos las teclas Ctrl +R para ejecutarlo. Mostrándose lo siguiente en la Consola de R

> datos <- read.table(“misdatos.txt”, header = TRUE)
> datos
peso altura velocidad    color
1   7.2     50      10.3   Blanco
2   8.5     66      10.3 Amarillo
3   9.8     73      10.2    Verde
4   6.5     72      16.4    Verde
5   7.5     81      18.8    Verde
6  10.1     73      19.7    Verde
7  11.0     66      15.6   Blanco
8  11.0     75      21.2 Amarillo
9  11.1     70      22.6     <NA>
10 11.2     75      19.9   Blanco
11 11.3     69      24.2 Amarillo
12 11.4     76      21.0   Blanco
13 11.4     76      21.4    Verde
14 11.7     69      21.3    Verde
15 12.0     75        NA Amarillo
16 12.9     64      22.2 Amarillo
17 12.9     55      33.8   Blanco
18 10.3     76      27.4 Amarillo
19  9.7     71      25.7    Verde
20 10.8     64      24.9    Verde
21 11.0     78      23.1 Amarillo
22 10.2     70      31.7 Amarillo
23 10.5     74      36.3    Verde
24  6.5     72      38.3    Verde
25  6.3     77      42.6    Verde
26  7.3     51      55.4   Blanco
27  7.5     62        NA   Blanco
28  7.9     60      58.3 Amarillo
29  8.2     70        NA    Verde

> tabla_color <- table(datos$color)
> tabla_color
Amarillo   Blanco    Verde
9        7       12

> prop.table(tabla_color)
Amarillo    Blanco     Verde
0.3214286 0.2500000 0.4285714

>  tabla_peso <- table(datos$peso)
>  tabla_peso
6.3  6.5  7.2  7.3  7.5  7.9  8.2  8.5  9.7  9.8 10.1 10.2 10.3 10.5 10.8   11 11.1 11.2 11.3 11.4 11.7   12 12.9
   1    2    1    1    2    1    1    1    1    1    1    1    1    1    1    3    1    1    1    2    1    1    2

> prop.table(tabla_peso)
      6.3        6.5        7.2        7.3        7.5        7.9        8.2        8.5        9.7        9.8       10.1       10.2       10.3       10.5       10.8
0.03448276 0.06896552 0.03448276 0.03448276 0.06896552 0.03448276 0.03448276 0.03448276 0.03448276 0.03448276 0.03448276 0.03448276 0.03448276 0.03448276 0.03448276
        11       11.1       11.2       11.3       11.4       11.7         12       12.9
0.10344828 0.03448276 0.03448276 0.03448276 0.06896552 0.03448276 0.03448276 0.06896552 

Representaciones gráficas

R ofrece una gran variedad de gráficos, el comando demo(graphics) muestra dichos gráficos. Atendiendo al tipo de datos vamos a utilizar varios tipos de gráficos.

    • Variables cualitativas o variables cuantitativas de tipo discreto: Se pueden considerar gráficos de sectores o gráficos de barras, los cuales se obtienen en R mediante las funciones pie y barplot, respectivamente. Los argumentos más importantes de estas funciones son:

pie(x, labels = names(x), clockwise = FALSE, init.angle = if(clockwise) 90 else 0,  col = NULL, main = NULL)

barplot(x, horiz = FALSE, col = NULL, main = NULL, sub = NULL, xlab = NULL, ylab = NULL)

donde

x es un vector con las frecuencias de las observaciones. Igualmente, puede ser una tabla de frecuencia (de las obtenidas con table o prop.table)

labels es un vector de cadenas de caracteres que indican los nombres de cada una de las categorías que aparecen en el gráfico de sectores

clockwise es un argumento lógico que indica si los sectores se dibujan en sentido horario (clockwise = TRUE) o en sentido antihorario (clockwise = FALSE, que es la opción por defecto)

init.angle es un valor numérico que indica el ángulo (en grados) en el que se sitúa el primer sector. Por defecto, el primer sector empieza a dibujarse a los 90 grados (- a las 12 en punto -, cuando clockwise es igual a TRUE) o a los 0 grados (- a las 3 en punto -, cuando clockwise es igual a FALSE)

horiz es un argumento lógico que indica si las barras del gráfico de barras se dibujan de forma vertical (horiz = FALSE, que es la opción por defecto) u horizontal (horiz = TRUE)

col es un vector en el que se indican los colores de las barras o los sectores del gráfico

main y sub son cadenas de caracteres en la que se especifican el título y el subtítulo del gráfico

xlab e ylab son cadenas de caracteres en las que se especifican los nombres de los ejes X e Y.

  • Variables cuantitativas: Los gráficos que se suelen emplear con más frecuencia son el histograma, el diagrama de tallos y hojas y el diagrama de caja y bigotes. En R, se utilizan las órdenes hist, stem y boxplot para la obtención de histogramas, de diagramas de tallos y hojas y de diagramas de caja y bigotes, respectivamente. Éstas son las principales opciones de estas funciones:

hist(x, breaks = “Sturges”, right = TRUE, col = NULL, main = paste(“Histogram of” , xname))

stem(x)

boxplot(x, range = 1.5, col = NULL, main = NULL)

donde, en este caso,

x es el vector de valores de la variable a partir de los cuales se dibujará el gráfico.

breaks indica la forma en la que se calcularán los intervalos en el histograma. Las opciones disponibles para este parámetro son “Sturges” (que es la opción por defecto) “Scott” y “FD” “Freedman-Diaconis“. Para más información sobre estos métodos, así como la fórmula que emplea cada uno de ellos para determinar el número de intervalos, se puede consultar el siguiente enlace (en inglés): http://www.mas.ncl.ac.uk/~nlf8/teaching/mas1343/notes/chap4-5.pdf

range es un valor numérico que determina la extensión de los bigotes de la caja. Para un valor positivo de range, los bigotes se extienden hasta el último dato que no supere 1.5 veces la longitud de la caja (el rango intercuartílico). Para un valor de 0, los bigotes se extienden hasta el dato más lejano

right es un argumento lógico que indica si los intervalos son cerrados por la izquierda y abiertos por la derecha (en cuyo caso, right = TRUE, que es la opción por defecto) o viceversa (right = FALSE).

Las opciones col y paste funcionan igual que en los gráficos de barras y sectores.

Nota: El programa R ha abierto puertas de accesibilidad  a los análisis estadísticos de las personas ciegas, mediante un paquete adicional llamado BrailleR, http://r-resources.massey.ac.nz/BrailleR. Este paquete permite que la información gráfica esté disponible en forma de texto.

http://r-resources.massey.ac.nz/BrailleR: Created and maintained by Jonathan Godfrey
Institute of Fundamental Sciences, Massey University,
Palmerston North, New Zealand)

Ejemplos:

> pie(table(datos$color), col = c(“yellow”, “white”, “green”), main = “Diagrama de sectores para la variable color”)

Se muestra el siguiente gráfico de sectores para la variable Color:

Figura 1: Diagrama de sectores (pie(table(datos$color), col = c("yellow", "white", "green"), main = "Diagrama de sectores para la variable color"))Figura 2: Diagrama de sectores

> barplot(table(datos$color), col=c(“yellow”, “white”, “green”), xlab=”Color”, ylab=”Frecuencias absolutas”,main =”Diagrama de barras para la variable Color”)

Se muestra el siguiente gráfico de barras para la variable Color:

Figura 2: Diagrama de barras (barplot(table(datos$color), col=c("yellow", "white", "green"), xlab="Color", ylab="Frecuencias absolutas",main ="Diagrama de barras para la variable Color"))Figura3: Diagrama de barras

> hist(table(datos$peso), col = “yellow”, main = “Histograma para la variable peso”, xlab=”Pesos”, ylab=”Frecuencia”)

Se muestra el siguiente histograma para la variable Peso

Figura 3: Histograma ( hist(table(datos$peso), col = "yellow", main = "Histograma para la variable peso", xlab="Pesos", ylab="Frecuencia"))Figura 4: Histograma

> stem(table(datos$altura))

The decimal point is at the |
1 | 0000000000
1 |
2 | 00000
2 |
3 | 000

> boxplot(datos$peso, xlab=”Pesos”, main = “Cajas y bigotes para la variable peso”)

Se muestra el siguiente boxplot (Cajas y bigotes) de la variable Peso

Figura 4: Caja con bigotes (boxplot(datos$peso, xlab="Pesos", main = "Cajas y bigotes para la variable peso"))Figura. 5: Caja con bigotes

Características o Medidas de una variable estadística

En las secciones anteriores se han planteado técnicas gráficas, tablas estadísticas y  representaciones gráficas, que han proporcionado una representación visual de las variables estadísticas. Dichas técnicas gráficas nos dan una idea de la composición de la población en estudio. En esta sección vamos a resumir todos los datos recogidos en una tabla estadística en unos valores, medidas numéricas, llamadas Características o Medidas que representen o sinteticen el conjunto de datos. Son medidas que proporcionan información sobre puntos importantes de la distribución, completando la información que nos ha proporcionado las tablas estadísticas y las representaciones gráficas.

Estudiaremos las Características o medidas de posición, de dispersión, y de forma

Medidas de posición

En muchas ocasiones el interés reside en localizar el centro de la distribución (para lo cual se calculan las medidas de tendencia central), existen casos en los que los puntos que se desean estudiar distan mucho de este centro (en cuyo caso se recurre al cálculo de las medidas de tendencia no central).

Algunas de las medidas más populares dentro del grupo de medidas de tendencia central son la media, la mediana y la moda. Las funciones que calculan las dos primeras medidas en R son mean y median.

mean (x, na.rm = FALSE)

median (x, na.rm = FALSE)

 donde:

x:  vector con los valores de la variable

na.rm: un argumento lógico que indica si hay que eliminar los valores faltantes del conjunto de datos.

Las observaciones faltantes o no disponibles de un conjunto de datos son codificadas en R como NA (que son las iniciales de Not Available). Cuando una función de R encuentra algún NA entre los valores de las observaciones que trata de analizar devuelve como resultado NA, indicando así que los cálculos no se han podido realizar. No obstante, asignando el valor TRUE al argumento na.rm se pueden eliminar los valores faltantes y obtener así un valor para la media o la mediana, basado en las observaciones restantes.

En cuanto a la moda, R no tiene implementada ninguna función que la calcule. Pero aprovechando la potencia del programa, podemos encargarnos nosotros mismos de definir una función que calcule la moda de un conjunto de datos. Así, tendremos que copiar y pegar el siguiente código en la consola de R:

Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}

Una vez hecho esto, podremos calcular la moda de un conjunto de datos tal y como sigue:

Mode (x)

En el caso de que existan varias modas (es decir, cuando estemos ante una distribución plurimodal), esta función mostrará únicamente la menor de ellas (o la primera en orden alfabético, si se está analizando una variable cualitativa).

Entre las medidas de posición de tendencia no central, los cuantiles figuran entre las más utilizadas. Para obtener los cuantiles de una variable en R se emplea la función quantile.

quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE)

donde:

x: vector que incluye los valores de la variable

seq: Argumento que indica los cuantiles que se van a calcular. Por defecto, se muestran los siguiente cuantiles:

  • 0, que coincide con el valor mínimo
  • 25, que coincide con el primer cuartil
  • 50, que coincide con el segundo cuartil y con la mediana
  • 75, que coincide con el tercer cuartil
  • 100, que coincide con el valor máximo

na.rm: un argumento lógico que indica si hay que eliminar los valores faltantes del conjunto de datos.

El mínimo y el máximo de un conjunto de datos, además de poder calcularse como los cuantiles 0 y 100, pueden obtenerse utilizando las funciones de R min y max.

min (x, na.rm = FALSE)

max (x, na.rm = FALSE)

Medidas de dispersión

Tratan  de cuantificar la variabilidad o esparcimiento de los datos informando acerca de la mayor o menor representatividad de las medidas de tendencia central.

Entre las medidas de dispersión más utilizadas se encuentran la cuasi-varianza, la cuasi-desviación típica y el rango intercuartílico, que en R se calculan a través de las funciones var, sd e IQR, respectivamente.

var(x, na.rm = FALSE)

sd(x, na.rm = FALSE)

IQR(x, na.rm = FALSE)

Los dos argumentos principales de estas funciones son x, que es el vector con los valores de la variable que se está estudiando y na.rm que, como ya se ha comentado, indica si los valores faltantes han de ser eliminados antes del análisis.

Como se ha especificado, las funciones var y sd no calculan la varianza y la desviación típica de una variable, sino su cuasi-varianza y su cuasi-desviación típica. En caso de necesitar la varianza o la desviación típica, basta con multiplicar el resultado de las funciones var y sd por (n – 1)/n, siendo n el número total de datos con el que se está trabajando.

A partir de las funciones anteriores se pueden calcular otras medidas, como el coeficiente de variación de Pearson o el rango. El coeficiente de variación se emplea para comparar la representatividad de la media entre distintas variables y se obtiene dividiendo la desviación típica de una variable entre su media. Por su parte, el rango es una medida de dispersión muy sencilla que se obtiene como la diferencia entre los valores máximo y mínimo.

Medidas de forma

Como su propio nombre indica, estas medidas se centran en el estudio de la forma que presenta una distribución a través del análisis de la simetría y la curtosis o el apuntamiento de la distribución en cuestión.

Para determinar la simetría de una distribución se emplea la función skewness, contenida en el paquete e1071. En R, un paquete no es más que un conjunto de funciones con un propósito común. Para poder utilizar las funciones incluidas en un determinado paquete, es necesario instalar el paquete y, posteriormente cargarlo.

Para instalar el paquete, utilizamos la orden install.packages(“nombre_del paquete”). En nuestro caso, tenemos que teclear

> install.packages(“e1071″) # cuidado con las comillas (tecla”)

Se muestra el CRAN mirror, donde elegimos como idioma Spain (Madrid)

Pulsamos OK, yse muestra el siguiente mensaje

— Please select a CRAN mirror for use in this session —
probando la URL ‘http://cran.es.r-project.org/bin/windows/contrib/3.2/e1071_1.6-7.zip’
Content type ‘application/zip’ length 814301 bytes (795 KB)
downloaded 795 KB
package ‘e1071’ successfully unpacked and MD5 sums checked
The downloaded binary packages are in
        C:\Users\Usuario\AppData\Local\Temp\RtmpOcmE1f\downloaded_packages
Una vez que el paquete se ha instalado de forma correcta en nuestro ordenador no será necesario volver a instalarlo nunca más, siempre que no cambiemos la versión de R. Tras instalar el paquete, procederemos a cargarlo mediante la función library.

> library(“e1071”)

Warning message:
package ‘e1071’ was built under R version 3.2.2

A diferencia de la instalación, la carga de los paquetes es necesaria cada vez que se inicia una nueva sesión de R. Una vez instalado y cargado el paquete e1071, ya podemos utilizar la función skewness sin problema. Su sintaxis es:

skewness(x, na.rm = FALSE)

donde

x: es el vector que incluye los valores de la variable

na.rm: es un argumento lógico que indica si hay que eliminar los valores faltantes del conjunto de datos.

De forma análoga, para estudiar la curtosis de un conjunto de datos emplearemos la función kurtosis que también está contenida en el paquete e1071.

kurtosis(x, na.rm = FALSE)

donde los parámetros x y na.rm se definen forma similar al caso anterior.

Algunas funciones resumen

 Existen funciones en R que calculan, a la vez, algunas de las medidas que se han descrito hasta ahora, summary es un buen ejemplo de este tipo de funciones, ya que cuando se aplica a una variable cuantitativa devuelve el mínimo, el máximo, la media, la mediana y los cuartiles primero y tercero de la variable. La sintaxis de esta función es la siguiente:

summary(object)

object: es el objeto (la variable en nuestro caso) del cual queremos obtener el resumen.

Ejemplos

> datos <- read.table(“C:/Users/Usuario/Desktop/misdatos.txt”, header = TRUE)

o bien

> setwd(“C:/directorio de trabajo”)

> datos <- read.table(“misdatos.txt”, header = TRUE)

> mean(datos$peso)
[1] 9.782759

> median(datos$peso)
[1] 10.3

> min(datos$peso)
[1] 6.3

> max(datos$peso)
[1] 12.9

> quantile(datos$peso, probs = c(0.25, 0.75))
25%  75%
7.9 11.2

> summary(datos$peso)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
6.300   7.900  10.300   9.783  11.200  12.900

> var(datos$peso, na.rm = TRUE)
[1] 3.945764

> sd(datos$peso, na.rm = TRUE)
[1] 1.986395

> IQR(datos$peso, na.rm = TRUE)
[1] 3.3

> install.packages(“e1071”)   # Es necesario si aún no se ha instalado
> library(e1071)
> skewness(datos$peso)
[1] -0.3492441

> skewness(datos$peso, na.rm = TRUE)
[1] -0.3492441

> kurtosis(datos$peso, na.rm = TRUE)
[1] -1.231833




Ejercicios

Ejercicios Guiados

Ejercicio guiado

Considérese el siguiente conjunto de datos que contiene información acerca de la raza, la edad, el peso y la altura de 10 personas: 

\(   \begin{array} {|c|c|c|c|}   \hline  Raza & Edad & Peso & Altura\\ \hline Blanca & 24 & 58 & 156 \\ \hline  Negra & 26 & 62 & 175  \\ \hline  Blanca & 62 & 61 & 169 \\ \hline  Blanca & 31 &  67 &  171 \\ \hline  Negra & 30 &  71 &  159 \\ \hline  Negra &  41 &  69 &  160  \\ \hline  Negra & 51 & NA & 158 \\ \hline  Blanca & 23 & 73 & 178 \\ \hline  Blanca & 28 & 56 &  168 \\ \hline  Blanca & 30 & 82 & 166  \\ \hline     \end{array} \)

Tabla2. Datos del Ejercicio Guiado

a) Crea 4 variables, de manera que cada una contenga los datos de una columna. Después, crea un data frame llamado Datos con las 4 variables que acabas de crear

b) Realiza una tabla de frecuencias absolutas y otra de frecuencias relativas para la variable Raza. Almacena las tablas anteriores en dos variables y llámalas abso y rela

c) Representa la variable Raza mediante un diagrama de barras y un diagrama de sectores. Incluye un título adecuado para cada gráfico y colorea las barras y los sectores de colores diferentes

d) Para la variable Edad, realiza un histograma y un diagrama de caja y bigotes considerando la opción range = 1.5. Incluye un título apropiado para cada gráfico y colorea las barras del histograma de color verde. ¿Existe algún valor atípico en esta variable? Reduce el valor del argumento range hasta 1. ¿Varían las conclusiones?

e) Realiza un resumen de la variable Altura mediante la orden summary. Comprueba que las medidas que proporciona summary coinciden con las medidas calculadas de forma individual usando su función específica

f) Calcula el peso medio de los individuos y proporciona, al menos, dos medidas que indiquen la dispersión de esta variable

g) ¿Qué variable es más homogénea: la edad o la altura?


Ejercicio Guiado (Resuelto)

a) Crea 4 variables, de manera que cada una contenga los datos de una columna. Después, crea un data frame llamado Datos con las 4 variables que acabas de crear.

En primer lugar, se tiene que tener en cuenta el tipo de las variables, pues ello determina la manera en que hay que crearlas. En este ejemplo, la variable Raza es un factor con dos categorías mientras que el resto de variables son numéricas. De las tres variables numéricas, Peso es la única con observaciones faltantes.

> Raza <- factor(c(“Blanca”, “Negra”, “Blanca”, “Blanca”, “Negra”, “Negra”, “Negra”, “Blanca”, “Blanca”, “Blanca”), levels = c(“Blanca”, “Negra”))

> Raza
[1] Blanca Negra  Blanca Blanca Negra  Negra  Negra  Blanca Blanca Blanca
Levels: Blanca Negra

El signo + al inicio de una línea en la consola de R indica que la orden anterior no se ha terminado de escribir por completo y que continúa en esa línea.

> Edad <- c(24, 26, 62, 31, 30, 41, 51, 23, 28, 30)
> Peso <- c(58, 62, NA, 67, 71, 69, NA, 73, 56, 82)
> Altura <- c(156, 175, 169, 171, 159, 160, 158, 178, 168, 166)

Agrupamos las 4 variables en un data frame, al que vamos a llamar Datos:

> Datos <- data.frame (Raza, Edad, Peso, Altura)

Comprobemos que los datos se han guardado correctamente.

> Datos

     Raza Edad Peso Altura
1  Blanca   24   58    156
2   Negra   26   62    175
3  Blanca   62   NA    169
4  Blanca   31   67    171
5   Negra   30   71    159
6   Negra   41   69    160
7   Negra   51   NA    158
8  Blanca   23   73    178
9  Blanca   28   56    168
10 Blanca   30   82    166

b) Realiza una tabla de frecuencias absolutas y otra de frecuencias relativas para la variable Raza. Almacena las tablas anteriores en dos variables y llámalas abso y rela

> abso <- table(Datos$Raza)
> abso

Blanca  Negra
     6      4

> rela <- prop.table(abso)
> rela

Blanca  Negra
   0.6    0.4

c) Representa la variable Raza mediante un diagrama de barras y un diagrama de sectores. Incluye un título adecuado para cada gráfico y colorea las barras y los sectores de colores diferentes

> barplot(abso, col = c(“red”, “blue”), main = “Diagrama de barras para la variable Raza”)

Fig. 5: Diagrama de barrasFigura 6: Diagrama de barras

> pie(abso, col = c(“white”, “black”), main = “Diagrama de sectores para la variable Raza”)

Fig. 6: Gráfico de sectoresFigura 7: Gráfico de sectores

d) Para la variable Edad, realiza un histograma y un diagrama de caja y bigotes considerando la opción range = 1.5. Incluye un título apropiado para cada gráfico y colorea las barras del histograma de color verde. ¿Existe algún valor atípico en esta variable? Reduce el valor del argumento range hasta 1. ¿Varían las conclusiones?

> hist(Datos$Edad, col = “green”, main = “Histograma para la variable Edad”, xlab = “Edades”, ylab = “Frecuencia”)

Fig. 7: HistogramaFigura 8: Histograma

> boxplot(Datos$Edad, main = “Cajas y bigotes para la variable Edad (range = 1.5)”)

Fig. 8: Caja con Bigotes (range = 1.5)Figura 9: Caja y Bigotes (range = 1.5)

En este caso no se aprecia ningún valor atípico en el diagrama de caja y bigotes, ya que no aparece ningún valor más allá de los bigotes.

> boxplot(Datos$Edad, main = “Cajas y bigotes para la variable Edad (range = 1)”)

Fig. 9: Caja con Bigotes (range = 1)Figura 10: Caja con Bigotes (range = 1)

Cuando se reduce el valor de range a 1 se observa que existe un dato más allá del bigote superior, el cual se considera como atípico.

e) Realiza un resumen de la variable Altura mediante la orden summary. Comprueba que las medidas que proporciona summary coinciden con las medidas calculadas de forma individual usando su función específica

Si aplicamos la función summary a la variable Altura, obtenemos el siguiente resultado

> summary(Datos$Altura)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
  156.0   159.2   167.0   166.0   170.5   178.0

Calculemos cada medida por separado

> min(Datos$Altura)
[1] 156

> max(Datos$Altura)
[1] 178

> quantile(Datos$Altura, probs = c(0.25, 0.75))
25%    75%
159.25 170.50

> mean(Datos$Altura)
[1] 166

> median(Datos$Altura)
[1] 167

f) Calcula el peso medio de los individuos y proporciona, al menos, dos medidas que indiquen la dispersión de esta variable

Para calcular el peso medio de los individuos, tenemos que tener en cuenta que la variable Peso incluye dos valores faltantes entre sus observaciones. Este hecho tiene que ser indicado estableciendo como TRUE el valor del parámetro na.rm

> mean(Datos$Peso, na.rm = TRUE)
[1] 67.25

El peso medio de los individuos es de 67,25 kg.

Como medidas de dispersión, se van a calcular la cuasi-varianza y el recorrido intercuartílico.

> var(Datos$Peso, na.rm = TRUE)
[1] 72.5

> IQR(Datos$Peso, na.rm = TRUE)
[1] 10.5

g) ¿Qué variable es más homogénea: la edad o la altura?

Para determinar la homogeneidad de una variable (o, lo que es lo mismo, la representatividad de su media), calculamos el coeficiente de variación para cada una de ellas, el cual se define como el cociente entre la desviación típica y la media de la variable.

Vamos a comenzar con la variable Edad. En primer lugar, calculemos la edad media de los individuos.

>  media_Edad <- mean(Datos$Edad)
>  media_Edad
[1] 34.6
A continuaciñon obtenemos la desviación típica. Para ello, calcularemos en primer lugar la varianza de la variable Edad mediante la función var, que recordemos calcula la cuasi-varianza de una variable.

> var_Edad <- 9/10 * var(Datos$Edad)
> var_Edad
[1] 148.04

Una vez obtenida la varianza, la desviación típica se obtiene como su raíz cuadrada positiva.

> dt_Edad <- sqrt(var_Edad)
> dt_Edad
[1] 12.16717

Por último, calculamos el coeficiente de variación de la Edad y mostramos su valor.

> CV_Edad <- dt_Edad/media_Edad
> CV_Edad
[1] 0.3516523

Repetimos el mismo proceso con la variable Altura.

>  media_Altura <- mean(Datos$Altura)
>  var_Altura <- 9/10 * var(Datos$Altura)
> dt_Altura <- sqrt(var_Altura)
> CV_Altura <- dt_Altura/media_Altura
> CV_Altura
[1] 0.04310492

La variable más homogénea es la variable Altura, ya que presenta un coeficiente de variación más próximo a 0.

 



Ejercicios Propuestos

Ejercicio Propuesto

 Las siguientes tablas recogen información sobre el diámetro, la altura, el volumen del tronco y la variedad de distintos cerezos en dos regiones distintas: RegiónA y RegiónB

REGIÓN A

\(   \begin{array} {|c|c|c|c|}    \hline Diámetro & Altura & Volumen & Variedad \\ \hline  8.3 & 70 & 10.3 & Blanco  \\ \hline  8.6 & 65 & 10.3 & Amarillo \\ \hline  8.8 & 63 &  10.2 &  Rosa \\ \hline  10.5 & 72 &  16.4 &  Rosa \\ \hline  10.5 & 81 &  18.8 &  Rosa \\ \hline   10.8 & 83 &  19.7 &  Rosa \\ \hline 11 & 66 &  15.6 &  Blanco \\ \hline  11 &  75 &  NA &  Amarillo  \\ \hline  11.1 & 80 & 22.6 & Rosa \\ \hline  11.2 & 75 & 19.9 & Blanco \\ \hline  11.3 & 79 & 24.2 &  Amarillo \\ \hline  11.4 & 76 & 21 & Blanco \\ \hline  11.4 & 76 & 21.4 &  Rosa  \\ \hline  11.7 & 69 & 21.3 &  Rosa \\ \hline  12 & 75 & 19.1 &  Amarillo \\ \hline  12.9 & 74 & 22.2 &  Amarillo \\ \hline  12.9 & 85 &  33.8 &  Blanco \\ \hline     \end{array}  \) 

REGIÓN B

\(   \begin{array} {|c|c|c|c|}   \hline    Diámetro & Altura & Volumen & Variedad \\ \hline  13.3 & 86 & 27.4 & Amarillo \\ \hline  13.7 & 71 & 25.7 & Rosa  \\ \hline  13.8 & 64 & 24.9 & Rosa  \\ \hline 14 & 78 & NA & Amarillo \\ \hline 14.2 & 80 & 31.7 & Amarillo  \\ \hline 14.5 & 74 & 36.3 & Rosa  \\ \hline 16 & 72 & 38.3 & Rosa  \\ \hline  16.3 & 77 & 42.6 & Rosa  \\ \hline 17.3 & 81 & 55.4 & Blanco \\ \hline  17.5 & 82 &  55.7 &  Blanco \\ \hline  17.9 & 80 &  58.3 &  Amarillo \\ \hline  18 &  80 &  NA &  Rosa  \\ \hline  18 & 80 & 51 & Blanco \\ \hline  20.6 & 87 & 77 & Rosa   \\ \hline     \end{array} \)

 Tabla3. Datos del Ejercicio Propuesto

Se pide:

a) Crear dos conjuntos de datos, de nombre RegA y RegB que contengan la información recogida en las tablas anteriores

b) Representar la variable Variedad mediante un diagrama de sectores en cada región. Incluir un título descriptivo en cada gráfico y colorear los sectores de blanco, amarillo o rosa

c) Representar la variable Altura mediante un histograma en cada región

d) ¿Existe algún dato atípico en la variable Diámetro en la región A? ¿Y en la región B?

e) ¿Cuál es el valor máximo del 30% de los diámetros más pequeños de los cerezos de la región A? ¿Y el valor mínimo del 25% de las alturas mayores de los cerezos de la región B?

f) ¿Dónde es la variable volumen más homogénea: en la región A o en la región B?

g) ¿En qué región presentan los cerezos una altura media mayor? ¿En qué región presentan los cerezos una altura mediana menor?

h) Estudia la asimetría y la curtosis de la variable Diámetro en la región A.


Ejercicio Propuesto  (Resuelto)

a) Crear dos conjuntos de datos, de nombre RegA y RegB que contengan la información recogida en las tablas anteriores

> diam<- c(8.3, 8.6, 8.8, 10.5, 10.5, 10.8, 11, 11, 11.1, 11.2, 11.3, 11.4, 11.4, 11.7, 12, 12.9, 12.9)
> alt<- c(70, 65, 63, 72, 81, 83, 66, 75, 80, 75, 79, 76, 76, 69, 75, 74, 85)
> vol<- c(10.3, 10.3, 10.2, 16.4, 18.8, 19.7, 15.6, NA, 22.6, 19.9, 24.2, 21, 21.4, 21.3, 19.1, 22.2, 33.8)
> var<- c(“B”, “A”, “R”, “R”, “R”, “R”, “B”, “A”, “R”, “B”, “A”, “B”, “R”, “R”, “A”, “A”, “B”)
> RegA<- data.frame (diam, alt, vol, var)
> RegA
diam alt  vol var
1   8.3  70 10.3   B
2   8.6  65 10.3   A
3   8.8  63 10.2   R
4  10.5  72 16.4   R
5  10.5  81 18.8   R
6  10.8  83 19.7   R
7  11.0  66 15.6   B
8  11.0  75   NA   A
9  11.1  80 22.6   R
10 11.2  75 19.9   B
11 11.3  79 24.2   A
12 11.4  76 21.0   B
13 11.4  76 21.4   R
14 11.7  69 21.3   R
15 12.0  75 19.1   A
16 12.9  74 22.2   A
17 12.9  85 33.8   B

 Repetir para la Región B

b) Representar la variable Variedad mediante un diagrama de sectores en cada región. Incluir un título descriptivo en cada gráfico y colorear los sectores de blanco, amarillo o rosa

Diagrama de sectores de Variedad (Región A)

Prp1_img1Figura 11: Diagrama de Sectores de Var (Región A)

 

Diagrama de sectores de Variedad para la Región B

Fig. 11: Diagrama de Sectores Región BFigura 12: Diagrama de Sectores de Var (Región B)

c) Representar la variable Altura mediante un histograma en cada región

Histograma de Altura en la Región A

Prp1_img3Figura 13: Histograma de la Altura (Región A)

Histograma de la Altura para la Región B

Fig. 13: Histograma de la Altura (Región B)Figura 14: Histograma de la Altura (Región B)

d) ¿Existe algún dato atípico en la variable Diámetro en la región A? ¿Y en la región B?

Para responder a esta pregunta, vamos a calcular los gráficos de caja y bigotes para la variable Diámetro en ambas regiones.

Boxplot de Diámetro para la Región A

Fig. 14: Caja y Bigotes de diámetro (Región A)Figura 15: Caja y Bigotes de diámetro (Región A)

Boxplot de Diámetro de la Región B

Fig. 15: Caja y Bigotes de diámetro (Región B)Figura 16: Caja y Bigotes de diámetro (Región B)

Hay cuatro valores atípicos (datos más allá de los extremos de los bigotes) para la variable Diámetro de la región A.

e) ¿Cuál es el valor máximo del 30% de los diámetros más pequeños de los cerezos de la región A? ¿Y el valor mínimo del 25% de las alturas mayores de los cerezos de la región B?

Los valores que nos están pidiendo son el percentil 30 de la variable Diámetro en la región A y el percentil 75 de la variable Altura en la región B, respectivamente.

Percentil 30 de Diámtero en la Región A = 10.74

Percentil 75 de la variable Altura en la región B = 80.75

f) ¿Dónde es la variable volumen más homogénea: en la región A o en la región B?

Para contestar a esta pregunta, vamos a calcular el coeficiente de variación para la variable Volumen en cada una de las regiones. Recordemos que la fórmula para el cómputo del coeficiente de variación (CV) es

\( CV= \displaystyle \frac{\sigma} {| \overline {x} | } \)

Fórmula 1: Coeficiente de Variación de Pearson

Por lo tanto,

CV de Volumen de la Región A = 0.3106773

CV de Volumne de la Región B = 0.3670137

Atendiendo a los resultados que hemos obtenido, podemos afirmar que la variable volumen es más homogénea en la región A, dado que es en esta región donde el coeficiente de variación para la variable volumen está más próximo a 0.

g) ¿En qué región presentan los cerezos una altura media mayor? ¿En qué región presentan los cerezos una altura mediana menor?

Media y mediana de la altura de la región A (74.35294 y 75, respectivamente) y de la región B (78 y 80, respectivamente)

Como se puede apreciar, tanto la altura media como la altura mediana es mayor en la región B.

h) Estudia la asimetría y la curtosis de la variable Diámetro en la región A.

Asimetría de Diámetro en la Región A = -0.5608155

Kurtosis de Diámetro de la Región A = -0.4475198

Como el coeficiente de asimetría es menor que 0, concluiremos que la distribución de la variable Diámetro en la región A es asimétrica a la izquierda. Igualmente, dado que el coeficiente de curtosis es también negativo, la distribución de esta variable es menos apuntada que la distribución normal es decir, platicúrtica.

Ejercicio Propuesto resuelto

Autores: David Molina Muñoz y Ana María Lara Porras. Universidad de Granada. (2017)

Reformulado con MathML en 2021 por Ana María Lara Porras 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *