Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contents
Tipos de objetos en R 1
Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Data frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Importación de datos 4
Ficheros de texto plano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Ficheros .csv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Gráficos 8
Variables categóricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Variables numéricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Transformación de datos 22
Coeficiente de variación 22
Estandarización 22
Paquete ggplot2 23
Tipos de objetos en R
Recordar que R es un lenguaje orientado a objetos. Todos las variables que se utilicen serán objetos de una
clase, con sus propiedades partículares. Repasemos los principales objetos que manejaremos.
1. Numeric: son los números. 7 es de la clase numeric.
2. Character: son las cadenas de texto. “Cadena de texto” es de la clase character.
3. Logical: son los booleanos correspondientes a verdadero o falso. FALSE es de la clase logical.
A parte de estos tres objetos más básicos, existen otros más complejos que albergan conjutos de datos.
Vectores
Un vector es una lista ordenada de números o cadenas de letras. La forma de definir un vector es utilizando
la función c(), e indicando entre paréntesis los elementos del vector separados por comas.
numeros.vector<-c(1,2,3)
numeros.vector
1
## [1] 1 2 3
letras.vector<-c("Hola","que","tal")
letras.vector
Matriz
Una matriz es una tabla de n filas y m columnas. Todos los elementos de una misma matriz deben de ser de
objetos del mismo tipo. No es posible mezclar números y cadenas de texto.
Para crear la matriz es necesario utilizar la función matrix, a la que se le debe pasar como parámetros: * un
vector * un número de filas * un numero de columnas * la forma de rellenar la matriz.
numeros.matriz<-matrix(c(0,1,1,1,0,0,1,1,1,1,0,0),
nrow=6,ncol=2,byrow = TRUE)
numeros.matriz
## [,1] [,2]
## [1,] 0 1
## [2,] 1 1
## [3,] 0 0
## [4,] 1 1
## [5,] 1 1
## [6,] 0 0
numeros.otra.matriz<-matrix(c(0,1,1,1,0,0,1,1,1,1,0,0),
nrow=6,ncol=2,byrow = FALSE)
numeros.otra.matriz
## [,1] [,2]
## [1,] 0 1
## [2,] 1 1
## [3,] 1 1
## [4,] 1 1
## [5,] 0 0
## [6,] 0 0
Data frame
Un data frame es como una matriz, pero las columnas pueden tener distintos tipos de objetos. De esta manera,
podemos tener una columna de cadenas de texto y la columna siguiente una columna de números. Es el objeto
más utilizado en R, puesto que normalmente se representan en las columnas los números correspondientes a
las variables analizadas y de las que se disponen datos y en las filas se corresponden con las observaciones,
que serían los distintos individuos sobre los que se han realizado las mediciones, y habitualmente se encuentran
identificados con una cadena de texto.
En un data frame las columnas pueden tener un nombre o etiqueta (label), así como las filas, que se
correspondería con el identificador del elemento.
Para crear un objeto de la clase data.frame es preciso trabajar con dos vectores y la función data.frame().
Es importante que estos dos vectores tengan la misma longitud, sino obtendremos
2
x<-c(0,1,0,0,1,0,0,1,0)
y<-c(0,0,1,0,0,1,0,0,1)
numeros.dataframe<-data.frame(x,y)
numeros.dataframe
## x y
## 1 0 0
## 2 1 0
## 3 0 1
## 4 0 0
## 5 1 0
## 6 0 1
## 7 0 0
## 8 1 0
## 9 0 1
class(numeros.dataframe)
## [1] "data.frame"
x<-c(0,1,0,0,1,0,0)
y<-c("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo")
semana.dataframe<-data.frame(x,y)
semana.dataframe
## x y
## 1 0 Lunes
## 2 1 Martes
## 3 0 Miercoles
## 4 0 Jueves
## 5 1 Viernes
## 6 0 Sabado
## 7 0 Domingo
class(semana.dataframe)
## [1] "data.frame"
A parte de la función dim() anteriormente comentada en las matrices hay una serie de funciones habituales
para trabajar con este tipo de objetos.
Lista
Es un vector generalizado, es decir, un contenedor diseñado para almacenar objetos de tipos distintos,
incluyendo a su vez también listas. Una especie de “cajón de sastre”. Para su creación se emplea la función
list()
mix.lista<-list(x,y,"palabra",numeros.matriz)
mix.lista
## [[1]]
## [1] 0 1 0 0 1 0 0
##
## [[2]]
## [1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado"
## [7] "Domingo"
##
## [[3]]
3
## [1] "palabra"
##
## [[4]]
## [,1] [,2]
## [1,] 0 1
## [2,] 1 1
## [3,] 0 0
## [4,] 1 1
## [5,] 1 1
## [6,] 0 0
re.lista<-list(mix.lista,c("Esto","es","una","lista","con","lista","dentro"))
re.lista
## [[1]]
## [[1]][[1]]
## [1] 0 1 0 0 1 0 0
##
## [[1]][[2]]
## [1] "Lunes" "Martes" "Miercoles" "Jueves" "Viernes" "Sabado"
## [7] "Domingo"
##
## [[1]][[3]]
## [1] "palabra"
##
## [[1]][[4]]
## [,1] [,2]
## [1,] 0 1
## [2,] 1 1
## [3,] 0 0
## [4,] 1 1
## [5,] 1 1
## [6,] 0 0
##
##
## [[2]]
## [1] "Esto" "es" "una" "lista" "con" "lista" "dentro"
Cada elemento de la lista viene identificado por un número que indica la posición dentro de la lista marcado
por dos corchetes [[posicion]].
Importación de datos
En bioestadística la mayoría de las ocasiones los datos con los que se va a trabajar van a proceder de ficheros
externos. El objetivo fundamental será el de incorporar los datos en un objeto dentro de R.
4
Ficheros .csv
Estos ficheros son grupos de datos cuyos valores están separados por comas. Si son generados por programas
tipo excel en sus configuraciones de idioma local español, en lugar de separados por comas lo estarán por
puntos y comas. Por ello, deben usarse distintos comandos. Habitualmente, trabajaremos con ficheros
separados por ;.
lab.data <- read.csv2(file="EsterData.csv", header = TRUE, sep = ";")
Función summary
A continuación se muestran los datos recogidos en un ensayo de tres lotes distintos de una misma enzima.
Cada ensayo consiste en enfrentar a cada variedad a una proteía de 200 aminoácidos para su disgestión. El
resultado del tiempo que tarda en digerirla es el siguiente:
enzyme
5
Para obtener información dde manera rápida sobre cuál de los lotes es mejro de la enzima la función summary
es muy útil. Realiza la función de varios de los comandos de la tabla anterior.
summary(enzyme)
Tipos de variables
Las variables que podemos representar pueden ser de dos tipos:
• Categóricas.
• Numéricas.
El siguiente ejemplo contiene ambos tipos de variables. Se trata de un ejemplo dentro del paquete MASS
llamado birthwt que incluye información sobre 189 recién nacidos en Springfield en el año 1986:
require(MASS)
6
• bwt: peso en gramos al nacimiento.
Las variables age, lwt, ptl, ftv y bwt son variables numéricas. El resto, low, race, smoke, ht y ui
son categóricas, aunque estén codificadas con valores numéricos. En este caso R, no las reconoce como
variables categóricas, sino como numéricas por defecto, por ello hay que recodificarlas a factores.
birthwt$low <- as.factor(birthwt$low)
birthwt$race <- as.factor(birthwt$race)
birthwt$smoke <- as.factor(birthwt$smoke)
birthwt$ht <- as.factor(birthwt$ht)
birthwt$ui <- as.factor(birthwt$ui)
Var1 Freq
1 96
2 26
3 67
La suma de las frecuencias de todas las categorías tiene que ser igual a la suma total de la muestra.
X
nc = n,
c
X
nc = n1 + n2 + n3 = 96 + 26 + 67 = 189
c
Frecuencia relativa
Hemos obtenido que n1 = 96, n2 = 26 y n3 = 67, para mujeres blancas, afroamericanas y otras, respectiva-
mente. Dijeramos, que el tamaño de la muestra es representativo a la sociedad americana, de forma que los
datos también deberían de serlo. Para ello se calcula la frecuencia relativa.
Por tanto, se definiría como la proporción de muestra de cada categoria posible. Y se obtiene:
nc
pc = ,
n
donde
pc es la frecuencia relativa, nc la frecuencia absoluta hallada anteriormente y n el número de observaciones.
A veces, el valor se suele presentar en porcentajes, bastaría con multiplicar por 100 el resultado obtenido.
Por tanto, los valores anteriores de frecuencias relativas serían:
p1 = 96/189 = 0.508
p2 = 26/189 = 0.138
7
p3 = 67/189 = 0.354
La suma de las frecuencias relativas de todas las categorías debe ser igual a 1, siempre (100 si se suman los
porcentajes).
X
nc = 1,
c
X
nc = n1 + n2 + n3 = 0.508 + 0.138 + 0.354 = 1
c
Para una variables categórica, la moda es el valor mas común, es decir, el de mayor frecuencia.
Gráficos
Las representaciones gráficas suelen ser de gran ayuda en bioestadística durante la exploración de datos, de
un vistazo se pueden obtener mucha información. Para cada tipo de variable de las anteriores explicadas hay
una serie de gráficos que ayudan a representar sus correspondientes datos.
Variables categóricas
Gráficos de barras
Es la forma más simple de visualizar datos. Se pueden ver:
• Los posibles valores que hay por categoría.
• Número de veces que cada categoría es observada en la muestra.
No es otra cosa sino la representación de las frecuencias absolutas obtenidas.
Para esta parte teórica, también vamos a trabajar con el dataset diabetes, que muestra los datos recogidos
en un hospital de la India sobre mujeres diabéticas, que contiene la siguiente información:
• Pregnancies, número de embarazos.
• Glucose, concentración plasmática de glucosa en el test oral de tolerancia,
• BloodPressure, presión sanguínea diastólica,
• SkinThickness, grosor del pliegue de la piel del triceps,
• BMI, índice de masa corporal,
• DiabetesPedigreeFunction, función de pedigrí diabético,
• Age, edad,
• Outcome, estatus de la enfermedad, 1 diabética (Sí), 0 no diabética (No).
Representando la variable Outcome con un diagrama de barras se puede observar la frecuencia de los valores
obtenidos en el estudio para enfermas.
# Se calcula la frecuencia absoluta
tabla.diabetes <- table(diabetes$Outcome)
8
Gráfico de barras de frecuencia de diabetes
100 200 300 400 500
Frecuencia
No Si
Estatus enfermedad
Figure 1: Barplot
9
# Colocados todos en dos filas
# Se aplican por gráfico los parámetros del chunk
par(mfrow=c(1,2))
# Barras pegadas
barplot(tabla.diabetes, main = "Barras pegadas", space=0
,xlab = "Estatus enfermedad", ylab="Frecuencia")
# Barras pegadas
barplot(tabla.diabetes, main = "Barras pegadas", space=0
,xlab = "Estatus enfermedad", ylab="Frecuencia")
10
Gráfico de barras de frecuencia
Barras pegadas
de diabetes por IMC
100 200 300 400 500
250
No
200 Si
Frecuencia
Frecuencia
150
100
50
0
0
Delgadez
Delgadez Severa
Obesidad
Saludable
Sobrepeso
No Si
Estatus enfermedad
No
400
Si
Frecuencia
300
200
100
0
Delgadez
Delgadez Severa
Obesidad
Saludable
Sobrepeso
11
Barras pegadas
500
400
300
Frecuencia
200
100
0
No Si
Estatus enfermedad
300
Frecuencia
Frecuencia
150
200
100
50 100
0 0
Delgadez
Delgadez Severa
Obesidad
Saludable
Sobrepeso
Delgadez
Delgadez Severa
Obesidad
Saludable
Sobrepeso
12
Pie chart
Los gráficos tipo tarta se utilizan para la visualización de las frecuencias relativas de una variable categórica.
El área de un círculo se dividirá en tantos sectores como categorías posibles. El área de cada sector será
proporcional a la frecuencia relativa calculada.
# Se utilizan las frecuencias absolutas y automáticamente determina la relativas
pie(tabla.diabetes, main="Frecuencia diabetes")
Frecuencia diabetes
No
Si
Variables numéricas
Histogramas
Son muy habituales para visualizar variables numéricas. Sería un gráfico de barras, pero en que la variable
a estudiar está agrupada en un número finito de intervalos. Para cada intervalo, la altura de la barra se
corresponde con la frecuencia de esa observación en ese intervalo. La función a utilizar es hist()
Para la variable del dataset de diabetes del índice de masa corporal (BMI), un histograma quedaría de la
siguiente manera.
# Eliminar la configuración anterior
dev.off()
par(c(1,2))
## NULL
# Frecuencia absoluta
hist(diabetes$BMI, main="Histograma de frecuencia absoluta del BMI ", xlab="BMI"
, col="grey", freq = TRUE)
13
Histograma de frecuencia absoluta del BMI
200
150
Frequency
100
50
0
0 10 20 30 40 50 60 70
BMI
Figure 5: Histogramas
# Frecuencia relativa
hist(diabetes$BMI, main="Histograma de frecuencia relativa del BMI ", xlab="BMI"
, col="grey", freq = FALSE)
Con los histogramas se puede obtener de un solo vistazo donde se encuentran los índices de masa corporal
más frecuentes del estudio: entre 25 y 40.
Los dos gráficos representados, a priori son iguales, únicamente cambiando los valores del eje de las y. Sin
embargo, es más habitual la representación del segundo, con elvalor de Density. Que sería similar al concepto
de frecuencia relativa, pero al tratarse de una variable cuantitativa, es más habitual referirse al dato obtenido
como densidad.
La densidad, por tanto, es la frecuencia relativa de una unidad de intervalo. Se obtiene diviendo la frecuencia
relativa para la anchura del intervalo, c:
pc
fc = , donde
wc
pc = nc /n es la frecuencia relativa con nc como la frecuencia del intervalo c y n el total del tamaño de la
muestra, wc es el tamaño del intervalo de c.
Para el intervalo de (30,35], que es el séptimo intervalo, c = 7, hay 221 observaciones (n7 ). Por tanto la
frecuencia relativa p7 = 0.2877604. Teniendo en cuenta que la wc = 5, la densidad será:
f7 = 0.289/5 = 0.0578
El número de intervalos (bins, en inglés), en los que un histograma puede dividirse tiene una anchura
determinada, w. Esta anchura determinará el número de intervalos que tengamos, por tanto es importante
14
Histograma de frecuencia relativa del BMI
0.04
Density
0.02
0.00
0 10 20 30 40 50 60 70
BMI
Figure 6: Histogramas
escoger una anchura determinadda, puesto que determinará la forma del histograma. El parámetro a incluir
en la función hist es breaks, y automáticamente se calculará el tamaño del intervalo, sin embargo el valor
índicado no tiene porque ser el que finalmente se use para hacer la división. Cuando se desea forzar un
número de intervalos exactos la mejor opción es pasarle un vector, de esta manera se índican los puntos
límites entre cada intervalo.
Por ejemplo, si en el dataset de diabetes para BMI anterior queremos un histograma dividido en 5 intervalos:
# Para el número de intervalos deseados crear un vector con
# el mínimo valor, el máximo valor y n+1 intervalos que se desean.
intervalos <- seq(min(diabetes$BMI),max(diabetes$BMI),length.out = 6)
15
Histograma de frecuencia relativa del BMI
0.04
Density
0.02
0.00
0 10 20 30 40 50 60
BMI
Figure 7: Histogramas
Boxplot
Para estudiar los gráficos de cajas, es preciso repasar algunos conceptos básicos estadísticos:
Media
Es el valor medio de los datos observados. Para valores x1 , . . . , xn, la media de la muestra es x y se calcula:
P
i xi
x=
n
donde xi es la cada valor ith observado del vector de tamaño n.
La función para calcularla es mean.
Si el vector tiene valores muy grandes o muy pequeños, que en alguna ocasión podrán ser considerarse valores
inusuales ,outliers, la media será muy sensible al ellos.
Mediana
Es una medida alternativa de localización, menos sensible a los outliers, por ello se dice que es robusta. Para
valores x1 , . . . , xn, la mediana de la muestra es x̃, y se calcularía ordenando de menor a mayor los valores
observados y seleccionando el valor central. Si el tamaño de la muestra, n es impar, será el valor central, si es
par, será la media de los valores centrales.
La función para calcularla es median.
16
Varianza
Para terminar de describir la distribución de los datos es necesario estudiar la dispersión. Está basado en la
desviación de los valores observados de la media, que sería: xi − x. La suma de todas las desviaciones es
0, por lo que la desviación en sí no se puede utilizar como medida de dispersión. En cambio si eliminamos
el signo del cálculo de la desviación, por ejemplo tomando el valor absoluto de la desviación o elevando al
cuadrado (opción más frecuente) si que podemos observar la dispersión.
La varianza, s2 , se basa en el cálculo de las desviaciones al cuadrado dividido para el tamaño de la muestra,
n:
Pn
i=1 (xi − x)2
s2 =
n
Aunque es habitual encontrar el cálculo de la varianza con la división para n − 1, se conoce como la correción
de Bessel. De esta manera se corrige el sesgo estadístico (concepto que estudiaremos más adelante), y será
esta variación la que se utilizará en la asignatura.
Pn
− x)2
i=1 (xi
s2 =
n−1
Desviación estándar
Es también una medida de dispersión de los datos de una muestra, y se calcula a partir de la raíz cuadrada
de la varianza:
r Pn
i=1 (xi − x)2
s=
n
Cuartiles
El cuantil o percentil es el resultado de encajar en cuatro bloques distintos los valores ordenados de menor a
mayor de una muestra.
Por lo tanto existen 4 cuantiles, son valores, Q1 , Q2 , Q3 y Q4 .
• Q2 se corresponde con la mediana.
• Q1 será el primer cuantil.
• Q3 es el tercer cuantil.
• Q4 es el cuarto cuantil.
El 50% de los valores se encuentran entre Q1 y Q3 . Y se conoce como rango intercuantil la diferencia
entre el valor Q3 y el Q1 (IQR = Q3 - Q1 ). No confundir con el rango que será la diferencia entre el valor
máximo y el mínimo de la muestra. El rango intercuantil será una medida más robusta, puesto que es menos
sensible a los valores inusuales, ya que habitualmente están por debajo de Q1 y por encima de Q3 .
Para visualizar como los datos se distribuyen en los cuartiles, el gráfico boxplot. Este gráfico también permite
estudiar la simetría, la distribución de los datos y comparar poblaciones.
boxplot(diabetes$BMI, main="Boxplot BMI ", xlab="BMI", col="grey")
17
Boxplot BMI
50
30
0 10
BMI
Boxplot BMI
0 10 20 30 40 50 60
BMI
Figure 8: Boxplot
18
La línea inferior de la caja representa el Q1 , mientras que la línea superior se corresponde con el Q3 . La línea
horizontal central de la caja se corresponde con el Q2 . El 50% de los datos se encuentran contenidos en esta
caja, es decir, representa el rango intercuartil.
Las líneas que se extienden de las cajas, llamadas bigotes (whiskers), se extienden por arriba y por abajo
hasta el valor Q3 + 1,5 x IQR y Q1 - 1,5 x IQR. Aquellos datos que se encuentren fuera de estas líneas son
potenciales outliers, y por tanto, suceptibles de ser eliminados.
Matrices de dispersión
Están relacionadas con la representación de todas las variables numéricas de un dataset, y su objetivo es el
de presentar las relaciones entre pares de variables. El gráfico en sí es una matriz donde cada entrada es
un gráfico de dispersión sencillo. Cuanto mayor es el número de visualizaciones peor es la visualización. Se
consigue gracias a la función pairs().
pairs(diabetes[,seq(1:8)], main="Matriz dispersión para diabetes")
Pregnancies
0
Glucose
0
BloodPressure
0
SkinThickness
0
Insulin
0
BMI
0
DiabetesPedigreeFunction
0.0
Age
20
19
A continuación se muestra el listado resumen de los comandos para representar gráficos que hemos estudiado.
Los gráficos principales, como los anteriores, pueden incluir otros gráficos de segundo nivel que pueden
dibujarse dentro de ellos. Basta con ejecutar la función justo después del gráfico principal.
Los gráficos pueden incluir parámetros para que sean más vistosos y/o informativos, se incluirán como
argumentos en los gráficos anteriores.
Parámetro Especificación
main Título
sub Subtítulo
xlab Nombre del eje x
ylab Nombre del eje y
xlim=c(xminimo ,xmaximo ) Representación del eje x entre el máximo y el mínimo
ylim=c(yminimo ,ymaximo ) Representación del eje y entre el máximo y el mínimo
bg Color de fondo de la ventana
col Controla el color de símbolos, ejes, título.. (col.axis, col.lab,
col.title. . . )
font Controla el estílo del texto (0 normal, 1 cursiva, 2 negrita, 3
cursiva negrita)
lty Tipo de línea (1 sólida, 2 rallas, 3 puntos. . . )
lwd Anchura de las líneas
cex Controla el tamaño de símbolos, ejes, título.. (cex.axis,
cex.lab, cex.title. . . )
pch Controla el tipo de símbolos (carácter del dibujo) (del 1 al
25)
title("") Añade un título principal al gráfico.
20
Parámetro Especificación
rug(x) Dibuja los datos sobre el eje x con líneas verticales pequeñas
rect(x0 , y0 , x1 , y1 ) Dibuja un rectángulo con esos límites
legend(x,y,legend=, ) Añade una leyenda a las coordenas x,y
axis() Añade un eje adicional al gráfico actual
las() Orientación etiquetas en los ejes (0 paralelo a los ejes, 1
horizontal, 2 perpendicular a los ejes, 3 vertical)
21
Transformación de datos
En ocasiones, se pueden dar situaciones de valores dentro de los datos que sean extremos, para poder reducir
su influencia previo a los análisis que se vayan a realizar se suelen realizar dos transformaciones de todos los
datos:
• Aplicar logarítmos: cuando hay valores muy grandes positivos (observamos un sesgo a la derecha), se
consigue aplicando la función log. De esta manera se reduce el sesgo, y, por ejemplo, en los histogramas,
se observa una distribución de datos más simétrica.
• Aplicar la raíz cuadrada.
Coeficiente de variación
Para comparar la dispersión de varios grupos de datos independientemente de sus unidades, el coeficiente
de variación es muy útil, ya que a través de su cálculo se elimina cualquier influencia que se pueda tener de
las unidades.
s
CV =
x
Por ejemplo, en el dataset de birthwt, las variables lwt y bwt están en distintas unidades, libras y gramos,
respectivamente:
lwt.sd <- sd(birthwt$lwt)
lwt.sd
## [1] 30.57938
bwt.sd <- sd(birthwt$bwt)
bwt.sd
## [1] 729.2143
Calculando el coeficiente de variación:
lwt.cv <- (lwt.sd/mean(birthwt$lwt))
lwt.cv
## [1] 0.2355616
bwt.cv <- (bwt.sd/mean(birthwt$bwt))
bwt.cv
## [1] 0.2476457
De esta manera se puede comparar la distribución de las observaciones de ambas variables, que en esto caso
presentan prácticamente la misma dispersión hablando en términos de CV.
Estandarización
La estandarización de una variable es una transformación lineal habitual, consiste en dividir la media de
la muestra, x, a cada valor observado y dividirlo para la desviación estándar, s, de la muestra:
La variable xi se transforma en la variable yi de la siguiente manera,
xi − x
yi =
s
22
Al restar la media, las observaciones se desplazan hacia el cero. La desviación sigue manteniéndose igual.
Al dividir para la desviación estándar, ésta cambia a 1.
El resultado es que la nueva variable, yi , tiene media 0 y desviación estándar 0.
Es muy habitual en los análisis que realizaremos en las regresiones lineales y de clusterización.
Paquete ggplot2
Existen otros paquetes en R para realizar representaciones gráficas. El paquete ggplot2 ofrece múltiples
funciones para crear gráficos complejos y elegantes. Podeis encontrar cheatsheets en https://ggplot2.tidyverse.
org/
Mientras que en los gráficos básicos hay que pasar como parámetro un vector, ggplot trabaja con dataframes.
Se puede construir cualquier gráfico con los 3 mismos componentes: un dataset, un sistema de coordenadas y
las marcas visuales que representan los puntos de los datos.
install.packages("ggplot2")
Los ejes de coordinación se especifican con el parámetro data, los puntos a representar con la función aes
(viene de aesthetics)
# Solo los ejes
ggplot(diabetes, aes(x= Glucose,y = BMI))
60
40
BMI
20
23
60
40
BMI
20
60
40
BMI
20
Ajustar los gráficos a nuestras necesidades, eliminando los puntos para los que no hay un valor
24
g <- ggplot(diabetes, aes(x= Glucose,y = BMI)) + geom_point() + geom_smooth(method="lm")
g + xlim(c(1,201)) + ylim(c(1,70))
60
40
BMI
20
0
0 50 100 150 200
Glucose
25
70
60
50
BMI
40
30
20
BMI vs Glucose
birthwt dataset
70
60
50
BMI
40
30
20
26
Modificar color y tamaño de puntos
ggplot(diabetes, aes(x= Glucose,y = BMI)) +
geom_point(col="steelblue", size=.5) +
geom_smooth(method="lm", col="firebrick") +
coord_cartesian(xlim=c(40,201), ylim=c(15,70))+
labs(title="BMI vs Glucose", subtitle="birthwt dataset", y ="BMI", x="Glucose", caption="Diabetes in wom
BMI vs Glucose
birthwt dataset
70
60
50
BMI
40
30
20
27
BMI vs Glucose
birthwt dataset
70
60
50
Outcome
BMI
No
40
Si
30
20
Existen otros paquetes de gráficos como lattice muy útiles para la visualización de datos multivariantes.
28