2 Representaciones gráficas

Una imagen vale más que mil palabras. Las gráficas son importantes en epidemiología y en estadística.

2.1 Gráfico de sectores

El Gráfico de sectores se realiza con la fucnión pie de R, de la siguiente forma:

# Simple Pie Chart
Conteo <- c(10, 12,6, 3, 1)
lbls <- c("Médicos", "Ingenieros", "Estadísticos", "Administradores", "Filósofos")
pie(Conteo, labels = lbls, main="Gráfico de sectores de mis estudiantes")

Puede incluirle los porcentajes:

Conteo <- c(10, 12,6, 3, 1)
lbls <- c("Médicos", "Ingenieros", "Estadísticos", "Administradores", "Filósofos")
pct <- round(Conteo/sum(Conteo)*100)
lbls <- paste(lbls, pct) # añade los porcentajes 
lbls <- paste(lbls,"%",sep="") # añade los porcentajes a las etiquetas
pie(Conteo,labels = lbls, col=rainbow(length(lbls)),
   main="Gráfico de sectores de mis estudiantes")

ó darle mas estilo en 3D. Para esto, debe cargar el paquete: plotrix

library(plotrix)
Conteo <- c(10, 12,6, 3, 1)
lbls <- c("Médicos", "Ingenieros", "Estadísticos", "Administradores", "Filósofos")
pie3D(Conteo,labels=lbls,explode=0.1,
   main="Gráfico de sectores de mis estudiantes en 3D")

Ya vimos dos problemas en el gráfico de sectores:

El primero, es que solo son para variables nominales,

Sin embargo, existe una excepción:

Es posible realizar una transformación de una variable cuantitativa y pasarla a una escala ordinal. Este proceso se suele denominar categorización de una variable. Con esta transformación, se puede tambien realizar un gráfico de sectores.

Para poner etiquetas a los valores de una variable categórica en R se debe indicar primero que se trata de un factor. De lo contrario, R la tratará como cuantitativa. Después se puede dar nombre a cada categoría escribiendo las etiquetas según el orden numérico de la codificación utilizada (1 = varón; 2 “’ mujer). Se haría así:

sexo = c(1,2,1,1,2,2,1,1,1,2,1,2, 1,2,1,1,2,2,1,1,1,2,1,2,1,2,1,1,2,2,1,1,1,2,1,2,1,2,1,1,2,2,1,1,1,2,1,2)
sexo<-factor(sexo,labels=c("varón","mujer"))

El segundo problema es que el gráfico debe realizarse con los datos ya contados, y por lo general, nosotros solo tenemos la base de datos completas. Entonces, utilizamos el comando table:

sexo = c(1,2,1,1,2,2,1,1,1,2,1,2, 1,2,1,1,2,2,1,1,1,2,1,2,1,2,1,1,2,2,1,1,1,2,1,2,1,2,1,1,2,2,1,1,1,2,1,2)
sexo<-factor(sexo,labels=c("varón","mujer"))
TablaSexo <- table(sexo)
TablaSexo
## sexo
## varón mujer 
##    28    20

table construye una tabla de contingencia de los conteos en cada combinación de niveles de factores. Con estos datos se construye el gráfico de sectores.

Ahora si, ya podemos generar nuestro gráfico de sectores:

sexo = c(1,2,1,1,2,2,1,1,1,2,1,2, 1,2,1,1,2,2,1,1,1,2,1,2,1,2,1,1,2,2,1,1,1,2,1,2,1,2,1,1,2,2,1,1,1,2,1,2)
sexo<-factor(sexo,labels=c("varón","mujer"))
TablaSexo <- table(sexo)
pie(TablaSexo)

¡A TRABAJAR!

En cada uno de los ejercicios, debe escribir todos los comandos de los anteriores ejercicios. Los datos ChickWeight tiene 578 filas y 4 columnas de un experimento sobre el efecto de la dieta en el crecimiento temprano de los pollitos.

Asigne a la variable dieta únicamente la columna que corresponde a esta variable:

La asignacion de una variable se realiza con el comando <- asi: dieta<-ChickWeight_____

dieta<-ChickWeight$Diet

Transforme los valores en factores (En este caso, se llaman simplemente: 1, 2, 3 y 4)

dieta<-ChickWeight$Diet
dieta<-factor(dieta,labels=c("1","2", "3", "4"))

Construya una tabla de contingencia para la variable dieta. Llame a esta variable Tabladieta

dieta<-ChickWeight$Diet
dieta<-factor(dieta,labels=c("1","2", "3", "4"))
Tabladieta<-table(dieta)

Construya el gráfico de sectores:

dieta<-ChickWeight$Diet
dieta<-factor(dieta,labels=c("1","2", "3", "4"))
Tabladieta<-table(dieta)
pie(Tabladieta)

2.2 Histogramas

El histograma se puede crear usando la función hist() en el lenguaje de programación R. Esta función toma un vector de valores para los cuales se traza el histograma.

Usemos el conjunto de datos integrado de calidad del aire que tiene mediciones diarias de la calidad del aire en Nueva York, de mayo a septiembre de 1973.-Documentación R.

head(airquality)
##   Ozone Solar.R Wind Temp Month Day
## 1    41     190  7.4   67     5   1
## 2    36     118  8.0   72     5   2
## 3    12     149 12.6   74     5   3
## 4    18     313 11.5   62     5   4
## 5    NA      NA 14.3   56     5   5
## 6    28      NA 14.9   66     5   6

Usaremos el parámetro de temperatura que tiene 154 observaciones en grados Fahrenheit.

Temperatura <- airquality$Temp
hist(Temperatura)

Podemos asignarle mas carácteristicas al histograma con parámetros agregados:

Temperatura <- airquality$Temp
hist(Temperatura,
main="Maximum daily temperature at La Guardia Airport",
xlab="Temperature in degrees Fahrenheit",
xlim=c(50,100),
col="darkmagenta",
freq=FALSE
)

Y devolver el valor hist()

La función hist () devuelve una lista con 6 componentes:

Temperatura <- airquality$Temp
h <- hist(Temperatura)

h
## $breaks
##  [1]  55  60  65  70  75  80  85  90  95 100
## 
## $counts
## [1]  8 10 15 19 33 34 20 12  2
## 
## $density
## [1] 0.010457516 0.013071895 0.019607843 0.024836601 0.043137255 0.044444444 0.026143791
## [8] 0.015686275 0.002614379
## 
## $mids
## [1] 57.5 62.5 67.5 72.5 77.5 82.5 87.5 92.5 97.5
## 
## $xname
## [1] "Temperatura"
## 
## $equidist
## [1] TRUE
## 
## attr(,"class")
## [1] "histogram"

Indica que, por ejemplo, entre 85 y 90 hay 20 datos.

E incluso mostrarlos en el histograma:

Temperatura <- airquality$Temp
h <- hist(Temperatura,ylim=c(0,40))
text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))

¡SU TURNO!

Con el mismo conjunto de datos airquality, pero con la variable: Solar.R: Radiación solar en Langleys en la banda de frecuencia 4000–7700 Angstroms de 0800 a 1200 horas en Central Park construya un histograma azul y que se muestre los valores sobre las barras. A la variable llamela Solar.

Solar<- airquality$Solar.R
h <- hist(Solar, col="blue")
text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))

2.3 Diagrama de caja

En este artículo, aprenderá a crear diagrama de caja y bigotes en la programación R. También aprenderá a dibujar varios diagramas de caja en un solo diagrama.

La función boxplot () toma cualquier número de vectores numéricos, dibujando una gráfica de caja para cada vector. También puede pasar una lista (o marco de datos) con vectores numéricos como sus componentes. Usemos el conjunto de datos integrado de calidad del aire que tiene “Mediciones diarias de la calidad del aire en Nueva York, de mayo a septiembre de 1973.” - Documentación R.

head(airquality)
##   Ozone Solar.R Wind Temp Month Day
## 1    41     190  7.4   67     5   1
## 2    36     118  8.0   72     5   2
## 3    12     149 12.6   74     5   3
## 4    18     313 11.5   62     5   4
## 5    NA      NA 14.3   56     5   5
## 6    28      NA 14.9   66     5   6

Simplemente,

boxplot(airquality$Ozone)

Podemos ver que los datos por encima de la mediana están más dispersos. También podemos notar dos valores atípicos en el extremo superior.

Podemos pasar parámetros adicionales para controlar el aspecto de nuestra trama. Puede ver en la sección de ayuda todo lo que puede modificar:

?boxplot

Algunos de los que se utilizan con más frecuencia son,main para dar el título, xlab y ylab para proporcionar etiquetas para los ejes, col para definir el color, etc. Además, con el argumento horizontal = TRUE podemos trazarlo horizontalmente y con notch = TRUE podemos agregar una muesca al cuadro:

boxplot(airquality$Ozone,
main = "Media de ozono en partes por mil millones en Roosevelt Island",
xlab = "Partes por billón",
ylab = "Ozone",
col = "orange",
border = "brown",
horizontal = TRUE,
notch = TRUE
)

Y de la misma forma que la función hist(), La función boxplot () devuelve una lista con 6 componentes que se muestran a continuación.

b <- boxplot(airquality$Ozone)

b
## $stats
##       [,1]
## [1,]   1.0
## [2,]  18.0
## [3,]  31.5
## [4,]  63.5
## [5,] 122.0
## 
## $n
## [1] 116
## 
## $conf
##          [,1]
## [1,] 24.82518
## [2,] 38.17482
## 
## $out
## [1] 135 168
## 
## $group
## [1] 1 1
## 
## $names
## [1] "1"

Entonces, podemos recopilar todos los valores que nos da el Boxplot:

b <- boxplot(airquality$Ozone)

b$stats
##       [,1]
## [1,]   1.0
## [2,]  18.0
## [3,]  31.5
## [4,]  63.5
## [5,] 122.0
  • Valor Mínimo: 1.0
  • Percentil 25: 18.0
  • Percentil 50 o mediana: 31.5
  • Percentil 75: 63.5
  • Valor Máximo: 122.0

Veamos…

Con el mismo conjunto de datos airquality, pero con la variable:Wind construya un BOXPLOT rojo, vertical, con una muesca, con el título Medida de viento, en el eje x: Partes por billón y en el eje y: Viento:

boxplot(airquality$Wind,
         main = "Medida de viento",
       xlab = "Partes por billón",
        ylab = "Viento",   
       col = "red",
        horizontal = FALSE,
        notch = TRUE
)