1 Tipos de datos

1.1 String:

Un string o una cadena de caracteres se construye escribiendo entre comillas la sucesion de caracteres que la define.

nombre<- 'Karen'
print(nombre)
## [1] "Karen"
cat(nombre)
## Karen
  • Usa print() cuando necesitas inspeccionar objetos de R, como listas, marcos de datos, matrices, etc.

  • Usa cat() cuando quieras mostrar texto formateado sin comillas, por ejemplo, en mensajes, reportes, o R Markdown.

Los vectores de caracteres pueden concatenarse en un vector mediante la funcion c.

edad<-c('adulto','joven','niño')
print(edad)
## [1] "adulto" "joven"  "niño"

1.1.1 Operaciones basicas

  • concatenar strings
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
print(nombre_completo)
## [1] "Karen Sanchez"
cat(nombre_completo)
## Karen Sanchez
  • Tambien puede utilizar paste0() para evitar espacios.
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste0(nombre,apellido)
print(nombre_completo)
## [1] "KarenSanchez"
  • Repetir una cadena
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
rep(nombre_completo,2)
## [1] "Karen Sanchez" "Karen Sanchez"
rep('Hola',4)
## [1] "Hola" "Hola" "Hola" "Hola"
  • Saber la cantidad de caracteres que tiene nuestra variable
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
nchar(nombre)
## [1] 5
nchar(apellido)
## [1] 7
nchar(nombre_completo)
## [1] 13
  • Extraer texto de un string

substr(variable,posicion inicial,posicion final)

nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
substr(nombre_completo,3,9)
## [1] "ren San"
  • Convertir a mayusculas o minusculas
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
tolower(nombre_completo)
## [1] "karen sanchez"
toupper(nombre_completo)
## [1] "KAREN SANCHEZ"
  • Sustituir valores de strings
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
sub('a','A',nombre_completo)
## [1] "KAren Sanchez"
gsub('a','A',nombre_completo)
## [1] "KAren SAnchez"
  • Usa sub() para solo cambiar el primer caracter que escojas del string.

  • Usa gsub() para realizar el cambio en todo el string.

  • sub(‘a’,‘A’,nombre_completo) donde a es el caracter que vamos a sustituir, A es la letra con la cual vamos a sustituirla y nombre_completo es el string donde se va a realizar el cambio.

1.2 Numericos

En R, los datos numéricos pueden ser de dos tipos principales: integer (enteros) y numeric (valores decimales o de punto flotante). Por defecto, los números en R son de tipo numeric.

x=10
y=1L
class(x)
## [1] "numeric"
class(y)
## [1] "integer"

Nota:

  • Si una operación involucra un numeric, el resultado será numeric automáticamente.

  • La división (/) siempre devuelve numeric.

x=10
y=2L #La L significa que es un numero entero.
w=18L
z=9L
x+y
## [1] 12
class(x+y)
## [1] "numeric"
(w/z)
## [1] 2
class(w/z)
## [1] "numeric"

1.2.1 Operaciones basicas

  • Suma
numero1=20
numero2=12
numero1+19
## [1] 39
numero1+numero2
## [1] 32
  • resta
numero1=20
numero2=12
numero2-numero1
## [1] -8
numero1-numero2
## [1] 8
  • Multiplicación
numero1=20
numero2=12
numero1*numero2
## [1] 240
  • División
numero1=20
numero2=12
numero1/numero2
## [1] 1.666667
#Modulo o residuo que deja la division
numero1%%numero2
## [1] 8
  • Potenciación
numero1=20
numero2=12
numero1**3
## [1] 8000
numero2^6
## [1] 2985984
  • Redondeo

  • Usa ceiling() para convertir el numero decimal al entero mayor mas cercano.

numero1=20.64851
ceiling(numero1) 
## [1] 21
  • Usa floor() para convertir el numero decimal al entero menor mas cercano.
numero1=20.64851
floor(numero1)
## [1] 20
  • Usa trunc() elimina la parte decimal.
numero1=20.64851
trunc(numero1)
## [1] 20
  • Usa round(a,d) para redondear el número a a d decimales.
numero1=20.64851
round(numero1,2) #Redondea a 2 decimales 
## [1] 20.65
  • Usa signif(a,d) para redondear el número a manteniendo d cifras significativas.
numero1=20.64851
signif(123456, 3) #los tres primeros números se mantienen, los demás se convierten en ceros
## [1] 123000
signif(0.00123456, 3) #los primeros 3 números distintos de cero se conservan
## [1] 0.00123
signif(98765.4321, 4) #se mantiene 9877 y se redondea el último número
## [1] 98770

Nota:

  • Cuando un número termina en 5, R usa el redondeo a par (en caso de empate, redondea al número par más cercano).

1.3 Logicos

Sirven para representar respuestas a preguntas de verdadero o falso.

Operadores logicos

  • & (y) y | (o) evalúan todos los valores de una expresión / comparan todos los elementos de un vector.

  • && (y) y || (o) detienen la evaluación al conocer el resultado / solo evalúan el primer elemento.

  • == (igual), != (diferente de), <, >, <= (menor o igual que), >= (mayor o igual que) Se combinan con operadores relacionales.

Los operadores relacionales en R sirven para comparar valores y determinar si cumplen ciertas condiciones. Devuelven un valor lógico (TRUE o FALSE), y se combinan con operadores lógicos para realizar evaluaciones más complejas.

  • !(no) invierte el valor lógico.

  • TRUE (1)

  • FALSE (0)

Aplicaciones de los operadores logicos en distintos tipos de datos

  • Numericos
#Calificacion primer parcial
parcial_1=2.5
#¿Saque 5.0?
parcial_1==5.0
## [1] FALSE
#¿Pasé el parcial?
parcial_1>=3.0
## [1] FALSE
#Obtuve una nota >2.3 y <3.3
parcial_1>2.3 & parcial_1<3.3
## [1] TRUE
#Calificación segundo parcial
parcial_2=3.6
#¿Tengo algun parcial perdido?
parcial_1<3.0 | parcial_2<3.0
## [1] TRUE
#Validar que dos objetos sean distintos
parcial_1 != parcial_2
## [1] TRUE
  • Strings
#Nombre de usuario
usuario= 'Vaneldris'
usuario=='Vanessa'
## [1] FALSE
#Validar el numero de caracteres
n_carac=nchar(usuario) >10
#Validar que contiene una palabra en particular 
val_pal=grepl('ane',usuario)
#Voltear un valor
!grepl('ane',usuario)
## [1] FALSE
#Validar que no comience con .
val_=substr(usuario,1,1) != '.'
#Validar que cumpla con las tres soluciones anteriores
val_pal & val_ & n_carac
## [1] FALSE
#Suma de valores logicos
  • Usa grepl(‘a’,b ) para validar que contiene una palabra en particular, a como primer parametro va lo que queremos buscar y b como segundo parametro va en donde lo queremos buscar.
usuario= 'Vaneldris'
grepl('ane',usuario)
## [1] TRUE

1.4 Complejos

En R, los números complejos son un tipo de dato que se representa con la notación
a + bi, donde i es la unidad imaginaria (\(\sqrt{-1}\)).

# Forma 1: Usando la función complex()
z1 <- complex(real = 3, imaginary = 4)  # 3 + 4i
z2 <- complex(real = -2, imaginary = 5) # -2 + 5i

# Forma 2: Usando 'i' o 'j' directamente
z3 <- 2 + 3i  
z4 <- -1 - 2i 

1.4.1 Operaciones basicas

  • Suma
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 + z2
## [1] 1+9i
  • Resta
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 - z2
## [1] 5-1i
  • Multiplicación
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 * z2
## [1] -26+7i
  • División
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 / z2
## [1] 0.4827586-0.7931034i
  • Potenciación
z1 <- 3 + 4i
z2 <- -2 + 5i
z1^3
## [1] -117+44i
z2**2
## [1] -21-20i

1.4.2 Funciones útiles para trabajar con números complejos

  • Modulo valor absoluto
z1=3 + 4i
Mod(z1)  
## [1] 5
  • Argumento en radianes (fase)
z1=3 + 4i
Arg(z1) 
## [1] 0.9272952
  • Parte real
z1=3 + 4i
Re(z1) 
## [1] 3
  • Parte imaginaria
z1=3 + 4i
Im(z1)  
## [1] 4
  • Conjugado
z1=3 + 4i
Conj(z1)  
## [1] 3-4i

1.4.3 Conversión de otros tipos de datos a complejos

Puedes convertir números reales a complejos con as.complex():

real_num <- 5
complex_num <- as.complex(real_num)
print(complex_num)
## [1] 5+0i

2 Clases de objetos

Las estructuras de datos son formas organizadas de almacenar y manipular información en la memoria de una computadora. Son fundamentales en programación, ya que permiten optimizar el acceso, búsqueda y modificación de datos. Las entidades que manipula R se conocen con el nombre de objetos.

2.1 Vectores

un vector es la estructura de datos más básica. Es una secuencia ordenada de elementos del mismo tipo.

Tipos de vectores

2.1.1 Vectores de caracteres

Las cadenas de caracteres, o frases, tambien son utilizadas en R, por ejemplo, para etiquetar graficos. Una cadena de caracteres se construye escribiendo entre comillas la sucesion de caracteres que la define. Los vectores de caracteres pueden concatenarse en un vector mediante la funcion c().

fruta <- c('manzana','pera','banano','uva')
print(fruta)
## [1] "manzana" "pera"    "banano"  "uva"

2.1.2 Vectores numericos

Los vectores numericos son estructuras de datos que almacenan secuencias de números (enteros o decimales). Son el tipo de vector más común y permiten realizar operaciones matemáticas y estadísticas fácilmente.

edad<- c(15,18,12,23)
print(edad)
## [1] 15 18 12 23

Operaciones entre vectores

  • Suma
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1+vector2
## [1]  32 106  54  86
  • Resta
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1-vector2
## [1]  -2 -70 -30 -40
  • Multiplicación
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1*vector2
## [1]  255 1584  504 1449
  • División
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1/vector2
## [1] 0.8823529 0.2045455 0.2857143 0.3650794
  • Radicación
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
sqrt(vector1)
## [1] 3.872983 4.242641 3.464102 4.795832
sqrt(vector2)
## [1] 4.123106 9.380832 6.480741 7.937254
  • Potenciación
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1**vector2
## [1]  9.852613e+19 2.910586e+110  2.116471e+45  6.149696e+85
vector2^vector1
## [1] 2.862423e+18 1.001586e+35 3.012947e+19 2.425675e+41

2.1.3 Vectores logicos

Los elementos de un vector logico solo pueden tomar dos valores: FALSE (falso) y TRUE (verdadero). Estos valores se representan tambien por F y T. Los vectores logicos aparecen al utilizar condiciones. Por ejemplo,

# Definir un vector numérico
x <- c(10, 15, 8, 20, 13)

# Crear un vector lógico con la condición x > 13
temp <- x > 13

# Mostrar el resultado
print(temp)
## [1] FALSE  TRUE FALSE  TRUE FALSE

2.1.4 Vectores de indice

Los vectores de índices en R son vectores que se utilizan para acceder a elementos específicos dentro de otro vector. Sirven para seleccionar, modificar o filtrar datos de manera eficiente. Puede seleccionar un subvector de un vector añadiendo al nombre del mismo un vector de n-dices entre corchetes, [ y ]. En general podra obtener un subvector de cualquier expresion cuyo resultado sea un vector, sin mas que anadirle un vector de n-dices entre corchetes.

  • Vectores de índice lógicos En este caso el vector de n-dices debe tener la misma longitud que el vector al que refiere. Solo se seleccionaran los elementos correspondientes a valores T del vector de ndices y se omitira el resto. Por ejemplo,
x <- c(10, NA, 20, 30, NA, 40)

# Seleccionar solo valores no NA
y <- x[!is.na(x)]
print(y) 
## [1] 10 20 30 40

almacena en y los valores no-faltantes de x, en el mismo orden. Si x tiene valores faltantes, el vector y sera mas corto que x. Analogamente,

x <- c(10, NA, 20, 30, NA, 40)
# Seleccionar valores positivos de (x + 1)
z <- (x + 1)[(!is.na(x)) & x > 0]
print(z)  
## [1] 11 21 31 41

almacena en z los elementos del vector x+1 para los que el correspondiente elemento de x es no-faltante y positivo.

  • Un vector de numeros naturales positivos Los vectores de índices con números naturales positivos permiten seleccionar elementos específicos de un vector utilizando posiciones dentro del conjunto {1, 2, ..., length(x)}. El vector de n-dices puede tener cualquier longitud y el resultado sera de esa misma longitud.
x <- c(10, NA, 20, 30, NA, 40)
x[1:10]  # Selecciona los primeros 10 elementos de x
##  [1] 10 NA 20 30 NA 40 NA NA NA NA

También se pueden usar repeticiones para generar patrones en vectores de caracteres:

c("x", "y")[rep(c(1,2,2,1), times=4)]
##  [1] "x" "y" "y" "x" "x" "y" "y" "x" "x" "y" "y" "x" "x" "y" "y" "x"

Este código genera un vector de longitud 16 con la secuencia repetida cuatro veces.

  • length(x) devuelve la cantidad de elementos que tiene el vector x.
x <- c(10, 20, 30, 40, 50)
length(x)
## [1] 5
  • Un vector de numeros naturales negativos En este caso, los ndices indican los elementos del vector referido que deben excluirse. Así pues
x <- c(5, 10, 15, 20, 25)
y <- x[-(1:2)]
print(y)  
## [1] 15 20 25

almacena en el vector y todos los elementos de x excepto los cinco primeros (suponiendo que x tiene al menos cinco elementos).

  • Vector de caracteres Esta opcion solo puede realizarse si el vector posee el atributo names (nombres) para identificar sus componentes.
fruta <- c(5, 10, 1, 20)
names(fruta) <- c("naranja", "plátano", "manzana", "pera")
postre <- fruta[c("manzana", "naranja")]
print(postre)  
## manzana naranja 
##       1       5

La ventaja en este caso es que los nombres son a menudo mas faciles de recordar que los n-dices numericos.Esta opcion es especialmente util al tratar de la estructura de hoja de datos (data frame).

2.2 Matrices

Las matrices o, mas generalmente, variables indexadas (Arrays) son generalizaciones multidimensionales de los vectores. De hecho, son vectores indexados por dos o mas indices y que se imprimen de modo especial.

  • Usa matrix(a:d,nrow=c,ncol=c) para crear una matriz, donde a:d genera los números a al d automáticamente, nrow=c son el numero de filas y ncol=c son el numero de columnas.
mi_matriz <- matrix(1:9, nrow = 3, ncol = 3) 
print(mi_matriz)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
matriz_no_cuadrada <- matrix(1:6, nrow = 2, ncol = 3)
print(matriz_no_cuadrada)
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6

Variables indexadas (Arrays)

Una variable indexada (array) es una colección de datos, por ejemplo numericos, indexada por varios n-dices. R permite crear y manipular variables indexadas en genera.

Un vector puede transformarse en una variable indexada cuando se asigna un vector de dimensiones al atributo dim. Supongamos, por ejemplo, que z es un vector de 1500 elementos z <- 1:1500. La asignacion dim(z) <- c(3,5,100) hace que R considere a z como una variable indexada de dimension 3x5x100.

Nota:

  • Una matriz es un caso particular de array con dos dimensiones.

  • Un array puede tener más de dos dimensiones.

Operaciones basicas

  • Suma
A <- matrix(c(1, 2, 3, 4), nrow=2, byrow=TRUE)
B <- matrix(c(5, 6, 7, 8), nrow=2, byrow=TRUE)
A+B
##      [,1] [,2]
## [1,]    6    8
## [2,]   10   12

La función byrow en R es un argumento dentro de la función matrix() que determina cómo se llenan los valores en la matriz:

  • byrow = TRUE, la matriz se llena por filas (row-wise).

  • byrow = FALSE (Valor por defecto), la matriz se llena por columnas (column-wise).

  • Resta

A <- matrix(c(1, 2, 3, 4), nrow=2)
B <- matrix(c(5, 6, 7, 8), nrow=2)
A-B
##      [,1] [,2]
## [1,]   -4   -4
## [2,]   -4   -4
B-A
##      [,1] [,2]
## [1,]    4    4
## [2,]    4    4
A-B==B-A
##       [,1]  [,2]
## [1,] FALSE FALSE
## [2,] FALSE FALSE
  • Multiplicación
A <- matrix(c(1, 2, 3, 4), nrow=2)
B <- matrix(c(5, 6, 7, 8), nrow=2)
A %*% B
##      [,1] [,2]
## [1,]   23   31
## [2,]   34   46

En R, puedes multiplicar matrices que no sean cuadradas siempre que cumplan con la regla de la multiplicación de matrices:

  • Si tienes una matriz A de dimención m x n y una matriz B de dimensión n x p, la multiplicación A x B solo es posible si el número de columnas de A coincide con el número de filas de B.
A <- matrix(1:6, nrow = 2, ncol = 3)
B <- matrix(7:12, nrow = 3, ncol = 2)
A %*% B
##      [,1] [,2]
## [1,]   76  103
## [2,]  100  136
  • Producto escalar
A <- matrix(1:6, nrow = 2, ncol = 3)
B <- matrix(7:12, nrow = 3, ncol = 2)
6*B
##      [,1] [,2]
## [1,]   42   60
## [2,]   48   66
## [3,]   54   72
2*A
##      [,1] [,2] [,3]
## [1,]    2    6   10
## [2,]    4    8   12
  • Transposisicón
A <- matrix(1:6, nrow = 2, ncol = 3)
B <- matrix(7:12, nrow = 3, ncol = 2)
t(A %*% B)
##      [,1] [,2]
## [1,]   76  100
## [2,]  103  136
t(A)
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
  • Inversa
A <- matrix(c(2, 3, 1, 4), nrow = 2)
solve(A)
##      [,1] [,2]
## [1,]  0.8 -0.2
## [2,] -0.6  0.4
  • solve() encuentra la inversa de la matriz A, siempre que sea cuadrada y tenga determinante distinto de cero.

  • Si la matriz no es invertible (det(A) = 0), R devolverá un error.

  • Determinantes

A <- matrix(c(2, 3, 1, 4), nrow = 2)
det(A)
## [1] 5
  • Propiedades Los eigenvalores (valores propios) y eigenvectores (vectores propios) son propiedades fundamentales de las matrices cuadradas.
A <- matrix(c(4, 2, 2, 3), nrow=2)  
eigen(A) 
## eigen() decomposition
## $values
## [1] 5.561553 1.438447
## 
## $vectors
##            [,1]       [,2]
## [1,] -0.7882054  0.6154122
## [2,] -0.6154122 -0.7882054

2.3 Factores

Los factores sirven para representar datos categoricos.

2.4 Listas

Las listas son una forma generalizada de vector en las cuales los elementos no tienen por que ser del mismo tipo y a menudo son a su vez vectores o listas. Las listas permiten devolver los resultados de los calculos estadsticos de un modo conveniente.

2.5 Las hojas de datos (data frames)

Las hojas de datos (data frames) son estructuras similares a una matriz, en que cada columna puede ser de un tipo distinto a las otras. Las hojas de datos son apropiadas para describir matrices de datos donde cada la representa a un individuo y cada columna una variable, cuyas variables pueden ser numericas o categoricas. Muchos experimentos se describen muy apropiadamente con hojas de datos: los tratamientos son categoricos pero la respuesta es numerica.

Creacion de una dataframe

se crean cinco vectores (Se crean los vectores que desee), con registro aleatorios de variables en dieciocho depósitos de archivo hipotéticos. Las variables creadas son

nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
print(dt)
##       nombre edad promedio semestre nivelado
## 1      Maura   20      3.5        7       si
## 2     Camila   21      3.5        8       no
## 3      Johan   21      3.5        7       no
## 4      elkin   18      3.3        3       no
## 5  Alejandro   17      3.3        3       si
## 6     yandry   19      3.9        7       si
## 7    Nicolas   20      3.7        7       no
## 8     Dirley   19      3.6        7       no
## 9    Willian   18      3.5       10       no
## 10   Daniela   22      3.2        7       no
## 11    Steven   20      3.3        6       no
## 12   Yuliana   19      3.3        8       no
## 13     Karen   21      3.5        7       no
## 14      Jose   20      3.4        7       no
## 15  Santiago   19      3.5        5       si
## 16     Johan   20      3.9        5       no
## 17  Santaigo   19      3.7        6       si
## 18   Daniela   20      3.7        5       no

Operaciones

  • agregar columnas
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
#Agregar columnas
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
print(dt)
##       nombre edad promedio semestre nivelado estrato
## 1      Maura   20      3.5        7       si       1
## 2     Camila   21      3.5        8       no       1
## 3      Johan   21      3.5        7       no       1
## 4      elkin   18      3.3        3       no       1
## 5  Alejandro   17      3.3        3       si       1
## 6     yandry   19      3.9        7       si       1
## 7    Nicolas   20      3.7        7       no       2
## 8     Dirley   19      3.6        7       no       3
## 9    Willian   18      3.5       10       no       2
## 10   Daniela   22      3.2        7       no       3
## 11    Steven   20      3.3        6       no       1
## 12   Yuliana   19      3.3        8       no       2
## 13     Karen   21      3.5        7       no       2
## 14      Jose   20      3.4        7       no       4
## 15  Santiago   19      3.5        5       si       3
## 16     Johan   20      3.9        5       no       2
## 17  Santaigo   19      3.7        6       si       1
## 18   Daniela   20      3.7        5       no       3
  • Agregar filas
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
#Agregar filas/datos ficticios 
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
print(dt)
##       nombre edad promedio semestre nivelado estrato
## 1      Maura   20      3.5        7       si       1
## 2     Camila   21      3.5        8       no       1
## 3      Johan   21      3.5        7       no       1
## 4      elkin   18      3.3        3       no       1
## 5  Alejandro   17      3.3        3       si       1
## 6     yandry   19      3.9        7       si       1
## 7    Nicolas   20      3.7        7       no       2
## 8     Dirley   19      3.6        7       no       3
## 9    Willian   18      3.5       10       no       2
## 10   Daniela   22      3.2        7       no       3
## 11    Steven   20      3.3        6       no       1
## 12   Yuliana   19      3.3        8       no       2
## 13     Karen   21      3.5        7       no       2
## 14      Jose   20      3.4        7       no       4
## 15  Santiago   19      3.5        5       si       3
## 16     Johan   20      3.9        5       no       2
## 17  Santaigo   19      3.7        6       si       1
## 18   Daniela   20      3.7        5       no       3
## 19 Valentina   28      4.0        8       no       2
  • Seleccionar fila
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Seleccionar fila
dato1=dt[7,]
print(dato1)
##    nombre edad promedio semestre nivelado estrato
## 7 Nicolas   20      3.7        7       no       2
  • Seleccionar columna
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Seleccionar columna
dato2=dt[,2]
print(dato2)
##  [1] 20 21 21 18 17 19 20 19 18 22 20 19 21 20 19 20 19 20 28
  • Seleccionar un elemento especifico
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Seleccionar un elemento especifico
dato3=dt[5,2]
print(dato3)
## [1] 17
  • Seleccionar varias filas
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Seleccionar varias filas
dato4<-dt[c(3,5,6,7,4),]
print(dato4)
##      nombre edad promedio semestre nivelado estrato
## 3     Johan   21      3.5        7       no       1
## 5 Alejandro   17      3.3        3       si       1
## 6    yandry   19      3.9        7       si       1
## 7   Nicolas   20      3.7        7       no       2
## 4     elkin   18      3.3        3       no       1
  • Seleccionar varias columnas
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Seleccionar varias columnas
dato4<-dt[,c(1,4,2)]
print(dato4)
##       nombre semestre edad
## 1      Maura        7   20
## 2     Camila        8   21
## 3      Johan        7   21
## 4      elkin        3   18
## 5  Alejandro        3   17
## 6     yandry        7   19
## 7    Nicolas        7   20
## 8     Dirley        7   19
## 9    Willian       10   18
## 10   Daniela        7   22
## 11    Steven        6   20
## 12   Yuliana        8   19
## 13     Karen        7   21
## 14      Jose        7   20
## 15  Santiago        5   19
## 16     Johan        5   20
## 17  Santaigo        6   19
## 18   Daniela        5   20
## 19 Valentina        8   28
  • Seleccionar varias filas y columnas
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
#Agregar filas/datos ficticios 
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Seleccionar varias filas y columnas
dato5<-dt[c(1,6,2,9),c(1,4,2)]
print(dato5)
##    nombre semestre edad
## 1   Maura        7   20
## 6  yandry        7   19
## 2  Camila        8   21
## 9 Willian       10   18
  • Seleccionar varias filas y columnas en secuencia
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Seleccionar varias filas y columnas en secuencia
dato6<-dt[1:6,2:5]
print(dato6)
##   edad promedio semestre nivelado
## 1   20      3.5        7       si
## 2   21      3.5        8       no
## 3   21      3.5        7       no
## 4   18      3.3        3       no
## 5   17      3.3        3       si
## 6   19      3.9        7       si
  • Filtro de datos
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
nombre<-c("Maura","Camila","Johan","elkin","Alejandro","yandry","Nicolas","Dirley","Willian","Daniela","Steven","Yuliana","Karen","Jose","Santiago","Johan","Santaigo","Daniela")
edad<-c(20,21,21,18,17,19,20,19,18,22,20,19,21,20,19,20,19,20)
promedio<-c(3.5,3.5,3.5,3.3,3.3,3.9,3.7,3.6,3.5,3.2,3.3,3.3,3.5,3.4,3.5,3.9,3.7,3.7)
semestre<-c(7,8,7,3,3,7,7,7,10,7,6,8,7,7,5,5,6,5)
nivelado<-c("si","no","no","no","si","si","no","no","no","no","no","no","no","no","si","no","si","no")
dt<-data.frame(nombre,edad,promedio,semestre,nivelado)
dt$estrato<-c(1,1,1,1,1,1,2,3,2,3,1,2,2,4,3,2,1,3)
valentina<-data.frame(nombre='Valentina',edad=28,promedio=4,semestre=8,nivelado='no',estrato=2)
dt<-rbind(dt,valentina)
#Filtro de datos 
#Para utilizar el filtro de datos debemostener descargado el paquete dplyr
filtrado<-dt%>%filter(promedio>3.5)
print(filtrado)
##      nombre edad promedio semestre nivelado estrato
## 1    yandry   19      3.9        7       si       1
## 2   Nicolas   20      3.7        7       no       2
## 3    Dirley   19      3.6        7       no       3
## 4     Johan   20      3.9        5       no       2
## 5  Santaigo   19      3.7        6       si       1
## 6   Daniela   20      3.7        5       no       3
## 7 Valentina   28      4.0        8       no       2

2.6 Funciones

Las funciones son tambien objetos de R que pueden almacenarse en el espacio de trabajo, lo que permite extender las capacidades de R facilmente.

3 Estadistica descriptiva

La estadística descriptiva en R permite resumir y analizar conjuntos de datos a través de medidas como la media, la mediana, la desviación estándar y los cuartiles.

3.1 Generación de datos

  • Creación de vectores aleatorios
vector_aleatorio <- runif(5, min = 0, max = 100)
print(vector_aleatorio)
## [1] 83.79814 75.78706 65.38453 74.50979 82.25283
  • Creación de matrices aleatorias
matriz_aleatoria <- matrix(rnorm(9), nrow = 3)
print(matriz_aleatoria)
##            [,1]       [,2]       [,3]
## [1,]  0.4498375 -0.2924272  1.1173996
## [2,] -0.0570610 -1.0987491 -0.1726069
## [3,]  0.3140459  0.8911468  0.2034830

3.2 Medidas de tendencia central

3.2.1 Media (Promedio)

Suma todos los valores y los divide por la cantidad total.

datos <- c(10, 20, 30, 40, 50)
mean(datos)
## [1] 30

3.2.2 Mediana

Es el valor central del conjunto de datos cuando están ordenados.

datos <- c(10, 20, 30, 40, 50)
median(datos)
## [1] 30

3.2.3 Moda

La moda es el valor que mas se repite.

moda <- function(x) {
  t <- table(x)  # Cuenta las frecuencias de los valores
  return(as.numeric(names(t[t == max(t)])))  # Extrae el valor más frecuente
}
datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
moda(datos)
## [1] 1

3.3 Medidas de dispersión

3.3.1 Varianza y Desviación Estándar

datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
var(datos)
## [1] 3.025641
sd(datos)
## [1] 1.739437
  • La varianza mide qué tan dispersos están los datos con respecto a la media.

  • La desviación estándar es la raíz cuadrada de la varianza y se usa para interpretar la dispersión en las mismas unidades que los datos.

3.3.2 Rango y Rango Intercuartil (IQR)

datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
range(datos)  # Muestra el valor mínimo y máximo
## [1] 1 6
IQR(datos)    # Calcula la diferencia entre el Q3 y Q1
## [1] 2

3.4 Resumen Estadístico Completo

datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
summary(datos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   1.000   1.000   2.231   3.000   6.000

3.5 Visualización basica

  • Colores que puedes usar en R
## 
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
Básicos Oscuros Claros
red black white
blue darkred lightgray
green darkblue lightcoral
yellow darkgreen lightskyblue
purple darkcyan lightgreen
orange darkmagenta lightgoldenrod
cyan darkgoldenrod lightpink
magenta midnightblue lightsteelblue
Verdes.oscuros Azules.oscuros Morados.y.rojos.oscuros Grises.y.negros
#145A32 #1F618D #7B241C #1C2833
#0B5345 #154360 #4A235A #212F3D
#1B4F72 #0D47A1 #641E16 #17202A

Funciones útiles para trabajar con colores

rainbow(1)        # Paleta de colores tipo arcoíris
## [1] "#FF0000"
heat.colors(5)    # Colores cálidos
## [1] "#FF0000" "#FF5500" "#FFAA00" "#FFFF00" "#FFFF80"
terrain.colors(4) # Colores tierra
## [1] "#00A600" "#E6E600" "#ECB176" "#F2F2F2"
topo.colors(3)    # Colores topográficos
## [1] "#4C00FF" "#00FF4D" "#FFFF00"
cm.colors(5)      # Colores tipo cyan-magenta
## [1] "#80FFFF" "#BFFFFF" "#FFFFFF" "#FFBFFF" "#FF80FF"

El número dentro de esas funciones indica la cantidad de colores que se generarán en la paleta.

  • rainbow(n) Devuelve n colores en un gradiente tipo arcoíris.
  • heat.colors(n) Devuelve n colores cálidos (de amarillo a rojo).
  • terrain.colors(n) Devuelve n colores tierra (de verde a marrón).
  • topo.colors(n) Devuelve n colores topográficos (de azul a marrón).
  • cm.colors(n) Devuelve n colores en una escala cian-magenta.

Tabla de ayuda

tabla <- data.frame(
  X = c("Continua", "Continua", "Discreta", "Discretas"),
  Y = c("Continua", "Discreta","Continua", "Discretas"),
  Grafico = c("Diagrama de dispersión/scatterplot", "Diagrama de dispersión", "Box plot/Caja de bigotes", "Diagrama de Kinneman")
)
print(tabla)
##           X         Y                            Grafico
## 1  Continua  Continua Diagrama de dispersión/scatterplot
## 2  Continua  Discreta             Diagrama de dispersión
## 3  Discreta  Continua           Box plot/Caja de bigotes
## 4 Discretas Discretas               Diagrama de Kinneman

3.5.1 Histogramas/hist()

Analiza cómo se distribuyen los datos numéricos en intervalos.

datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
hist(datos, 
     col = "#1F618D",         # Color de las barras
     border = "#154360",      # Color del borde de las barras
     main = "Histograma Personalizado",  # Título
     col.main = "#E74C3C",    # Color del título
     xlab = "Valores",        # Etiqueta del eje X
     col.lab = "#28B463",     # Color de las etiquetas de los ejes
     ylab = "Frecuencia",
     col.axis = "#F1C40F",    # Color de los números en los ejes
     axes = TRUE)             # Mostrar los ejes
# Agregar líneas de densidad con color personalizado
lines(density(datos), col = "#D35400", lwd = 2)

# Agregar un marco al gráfico con color personalizado
box(col = "#A569BD", lwd = 2)

Nota: Los histogramas en R no muestran directamente la frecuencia de cada número, sino que agrupan los datos en intervalos o clases (llamados bins).

  • lines(density(datos)) representan la distribución suavizada de los datos. En lugar de mostrar solo las barras del histograma, la línea de densidad permite ver una aproximación continua de la distribución de los datos.

    • Se genera con density(datos), que estima la densidad de probabilidad de los datos.
    • Se dibuja con lines(), usando un color (col) y grosor (lwd). Es útil para comparar la forma del histograma con una curva suavizada.
    • Es útil para comparar la forma del histograma con una curva suavizada.
  • axes = TRUE controla si se deben dibujar los ejes X e Y.

Si lo quitas y no cambia nada, es porque en algunos entornos gráficos los ejes pueden seguir apareciendo automáticamente, dependiendo de la configuración de par() o del entorno donde ejecutas el código.

✔️ Cuándo usarlo: Para datos continuos o grandes cantidades de datos discretos.

No usarlo si: Quieres contar valores individuales.

3.5.2 Graficos de barras/barplot()

Se usa para visualizar datos discretos o categóricos, representando frecuencias o valores asociados a cada categoría.

datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
barplot(datos, pch = 16,              # Tipo de punto sólido
     col = "#3498DB",       # Color de los puntos
     main = "Gráfico de barras", 
     col.main = "#E74C3C",  # Color del título
     xlab = "Eje X", col.lab = "#28B463",
     ylab = "Eje Y", col.axis = "#f20")

Nota: Se usa más para datos categóricos, pero aquí se aplica a una variable numérica.

✔️ Cuándo usarlo: Cuando cada valor debe ser tratado individualmente (categorías o números discretos).

❌ No usarlo si: Tienes datos continuos que deben agruparse.

3.5.3 Barras apiladas

ventas <- matrix(c(10, 15, 20, 8, 12, 18), nrow = 2, byrow = TRUE)
colnames(ventas) <- c("Ene", "Feb", "Mar")
rownames(ventas) <- c("Producto A", "Producto B")
barplot(ventas,
        beside = FALSE,
        main = "Ventas mensuales por producto",
        col = c("blue", "red"),
        legend = rownames(ventas))

3.5.4 Barras lado a lado

ventas <- matrix(c(10, 15, 20, 8, 12, 18), nrow = 2, byrow = TRUE)
colnames(ventas) <- c("Ene", "Feb", "Mar")
rownames(ventas) <- c("Producto A", "Producto B")
barplot(ventas,
        beside = TRUE,
        main = "Ventas mensuales por producto",
        col = c("darkgreen", "lightpink"),
        legend = rownames(ventas))

3.5.5 Gráficos de paste/pie()

Muestra proporciones de categorías en un conjunto de datos. Se usa para mostrar la relación de las partes con el todo y no es recomendable para comparar muchas categorías, ya que se vuelve difícil de leer. Trabaja con datos categóricos mostrando proporciones relativas dentro de un conjunto.

categorias <- c("Aprobados", "Reprobados", "Retirados")
valores <- c(50, 30, 20)
pie(valores, labels = categorias,
    main = "Resultados de los estudiantes",
    col = c("lightblue", "lightyellow", "#34495E"), borde="brown")

Nota:No es recomendable para comparar muchas categorías, ya que se vuelve difícil de leer.

✔️ Cuándo usarlo: Para comparar proporciones cuando hay pocas categorías.

No usarlo si: Hay muchas categorías (usa un diagrama de barras en su lugar).

3.5.6 Diagrama de dispersión/plot()

Se usa para visualizar la relación entre dos variables numéricas continuas.

datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
plot(datos, pch=20,col = "#E79", 
     main = "Diagrama de dispersión", 
     col.main = "#E74C3C",
     xlab = "Tiempo", col.lab = "#28B463",
     ylab = "Valor", col.axis = "#F1C40F")

✔️ Cuándo usarlo: Para ver relaciones entre dos variables numéricas.

No usarlo si:Solo tienes una variable (usa histograma o diagrama de barras).

####Gráfico de Líneas Representa datos numéricos conectando puntos con líneas. Es útil para mostrar tendencias a lo largo del tiempo o continuidad entre valores.

dias <- 1:7
ventas <- c(200, 250, 300, 280, 310, 400, 380)

plot(dias, ventas, type = "o",        
     pch = 16,                        
     col = "#2ECC71",               
     main = "Gráfico de Líneas",     
     col.main = "#E67E22",           
     xlab = "Día", col.lab = "#2980B9", 
     ylab = "Ventas", col.axis = "#8E44AD") 

✔️ Cuándo usarlo: Cuando deseas observar la tendencia o comportamiento de una variable continua en el tiempo (series temporales) o en un orden lógico. Es útil para identificar patrones, subidas, bajadas o ciclos.

No usarlo si:Si tienes datos categóricos, o si los puntos no están relacionados de forma secuencial o temporal. En ese caso, usa gráficos de barras o diagramas de dispersión.

3.5.7 Diagrama de caja y bigotes/boxplot()

datos<-c(1,2,5,1,1,2,1,1,1,1,3,4,6)
boxplot(datos, col = c("#1F618D", "#154360", "#D35400"),
        main = "Boxplot Personalizado", 
        col.main = "#E74C3C",
        xlab = "Grupos", col.lab = "#28B463",
        ylab = "Valores", col.axis = "#F1C40F")

✔️ Cuándo usarlo: Para ver la distribución y detectar valores atípicos en los datos.

No usarlo : si solo necesitas contar frecuencias (usa histograma).

3.5.8 Visualización basica de un dataframe

data("mtcars")
hist(mtcars$mpg, main="Distribución de MPG", xlab="MPG", col="brown")

plot(mtcars$hp, mtcars$mpg, main="MPG vs HP", xlab="Caballos de fuerza (HP)", ylab="Millas por galón (MPG)", col="pink", pch=16)

  • data() carga el conjunto de datos que tiene R, que contiene información sobre automóviles.

  • Cuando estamos trabajando con una data y queremos tener una visualizacion grafica de ciertas variables utilizamos mtcars$mpg, donde mtcars es la data $mpg es para escoger la variable de la data que queremos estudiar, donde $ nos permite escogerla.

3.6 Gráficos con GGPLOT2

ggplot2 es un sistema de gráficos más avanzado y personalizable en R.

¿Como cargar el paquete?

#install.packages("ggplot2")  # Descomenta si es la primera vez
library(ggplot2)

Tipos de graficos

3.6.1 Gráfico de Dispersión (Scatter Plot)

library(ggplot2)
datos <- data.frame(
  altura = c(160, 165, 170, 175, 180),
  peso = c(55, 60, 65, 72, 80)
)

ggplot(datos, aes(x = altura, y = peso)) +
  geom_point(color = "blue") +
  ggtitle("Altura vs Peso") +
  xlab("Altura (cm)") +
  ylab("Peso (kg)")

3.6.2 Histograma

df <- data.frame(valor = rnorm(100))

ggplot(df, aes(x = valor)) +
  geom_histogram(fill = "#9B59B6", color = "black", bins = 20) +
  ggtitle("Histograma") +
  theme(plot.title = element_text(color = "#8E44AD"))

3.6.3 Gráfico de Líneas

datos <- data.frame(
  altura = c(160, 165, 170, 175, 180),
  peso = c(55, 60, 65, 72, 80)
)

ggplot(datos, aes(x = altura, y = peso)) +
  geom_line(color = "#27AE60") +
  geom_point(color = "blue") +
  ggtitle("Altura vs Peso") +
  xlab("Altura (cm)") +
  ylab("Peso (kg)")

3.6.4 Gráfico de Barras

datos_fruta <- data.frame(
  fruta = c("Manzana", "Banana", "Pera", "Uva"),
  ventas = c(30, 45, 25, 50)
)

ggplot(datos_fruta, aes(x = fruta, y = ventas, fill = fruta)) +
  geom_bar(stat = "identity") +
  ggtitle("Ventas por tipo de fruta")

3.6.5 Boxplot

df <- data.frame(grupo = rep(c("G1", "G2"), each = 20),
                 valores = c(rnorm(20, 10, 2), rnorm(20, 15, 3)))

ggplot(df, aes(x = grupo, y = valores, fill = grupo)) +
  geom_boxplot() +
  ggtitle("Boxplot por Grupo") +
  xlab("Grupo") + ylab("Valores")

El propósito de comparar dos boxplots (diagramas de caja) es visualizar y analizar diferencias entre distribuciones de dos grupos o conjuntos de datos.

¿Para que sirve comparar dos boxplot?

  • Comparar medianas (líneas internas de la caja)
    → Muestra si un grupo tiene valores centrales más altos o más bajos.
  • Comparar la dispersión (longitud de las cajas y bigotes)
    → Te dice cuál grupo es más variable o más consistente.
  • Detectar valores atípicos (puntos fuera de los bigotes)
    → Identificar si un grupo tiene datos extremos.
  • Evaluar simetría o sesgo
    → Si la caja o los bigotes están desbalanceados, puede haber sesgo en los datos.
  • Visualizar superposición o separación entre grupos
    → Te ayuda a decidir si las diferencias son claras o si los grupos se parecen mucho.

3.6.6 Gráfico de Pastel (Pie Chart)

df <- data.frame(categoria = c("A", "B", "C"), valor = c(30, 45, 25))

ggplot(df, aes(x = "", y = valor, fill = categoria)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y")

3.7 Estadística descriptiva con dplyr

Se mostrará como usar el paquete dplyr de R para hacer un análisis descriptivo usando una base de datos real.

Las variables de la base de datos que vamos a utilizar en el ejemplo de este capítulo se muestran a continuación.

  • bwt:Peso del bebé al nacer, redondeado a la onza más cercana.
  • gestacion:Duración del embarazo en días, calculado a partir del primer día del último período menstrual normal.
  • paridad:Indicador de si el bebé es el primogénito o desconocido.
  • Altura:Altura de la madre, en pulgadas.
  • Edad:Edad de la madre en el momento de la concepción, en años.
  • Peso:Peso de la madre antes del embarazo, en libras.
  • Fumar:Estado de tabaquismo Indicador de si la madre fuma o no.
url<-'https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt'
dt_web <- read.table(url, header=TRUE, sep='\t') #Para que no me borre el nombre de la variable 
dt_web<- dt_web[!is.na(dt_web$gestation),] #Limpiar la data de los valores NA
dt_web<- dt_web[!is.na(dt_web$height),]
dt_web<- dt_web[!is.na(dt_web$weight),]
print(dt_web)
##      bwt gestation     parity age height weight smoke
## 1    120       284 First born  27     62    100   Not
## 2    113       282 First born  33     64    135   Not
## 3    128       279 First born  28     64    115   Yes
## 5    108       282 First born  23     67    125   Yes
## 6    136       286 First born  25     62     93   Not
## 7    138       244 First born  33     62    178   Not
## 8    132       245 First born  23     65    140   Not
## 9    120       289 First born  25     62    125   Not
## 10   143       299 First born  30     66    136   Yes
## 11   140       351 First born  27     68    120   Not
## 12   144       282 First born  32     64    124   Yes
## 13   141       279 First born  23     63    128   Yes
## 14   110       281 First born  36     61     99   Yes
## 15   114       273 First born  30     63    154   Not
## 16   115       285 First born  38     63    130   Not
## 17    92       255 First born  25     65    125   Yes
## 18   115       261 First born  33     60    125   Yes
## 19   144       261 First born  33     68    170   Not
## 20   119       288 First born  43     66    142   Yes
## 21   105       270 First born  22     56     93   Not
## 22   115       274 First born  27     67    175   Yes
## 23   137       287 First born  25     66    145   Not
## 24   122       276 First born  30     68    182   Not
## 25   131       294 First born  23     65    122   Not
## 26   103       261 First born  27     65    112   Yes
## 27   146       280 First born  26     58    106   Not
## 28   114       266 First born  20     65    175   Yes
## 29   125       292 First born  32     65    125   Not
## 30   114       274 First born  28     66    132   Yes
## 31   122       270 First born  26     61    105   Not
## 32    93       278 First born  34     61    146   Not
## 33   130       268 First born  30     66    123   Not
## 34   119       275 First born  23     60    105   Not
## 35   113       281 First born  24     65    120   Not
## 36   134       283 First born  22     67    130   Not
## 37   107       279 First born  24     63    115   Not
## 38   134       288 First born  23     63     92   Yes
## 39   122       267 First born  27     65    101   Yes
## 41   129       293 First born  30     61    160   Not
## 42   110       278 First born  23     63    177   Not
## 44   111       270 First born  27     61    119   Not
## 45    87       248 First born  37     65    130   Yes
## 46   143       274 First born  27     63    110   Yes
## 47   155       294 First born  32     66    150   Not
## 48   110       272 First born  25     60     90   Not
## 49   122       275 First born  26     66    147   Not
## 50   145       291 First born  26     63    119   Yes
## 51   115       258 First born  26     62    130   Not
## 52   108       283 First born  31     65    148   Yes
## 53   102       282 First born  28     61    110   Not
## 54   143       286 First born  31     64    126   Not
## 55   146       267 First born  30     67    132   Not
## 56   124       275 First born  22     60    130   Not
## 57   124       278 First born  26     70    145   Yes
## 58   145       257 First born  33     65    140   Not
## 59   106       273 First born  28     60    116   Not
## 60    75       232 First born  33     61    110   Not
## 61   107       273 First born  24     61     96   Not
## 62   124       288 First born  22     67    118   Not
## 63   122       280 First born  23     65    125   Yes
## 64   101       245 First born  23     63    130   Yes
## 65   128       283 First born  28     63    125   Yes
## 66   104       282 First born  36     65    115   Yes
## 67    97       246 First born  37     63    150   Not
## 68   137       274 First born  26     69    137   Yes
## 69   103       273 First born  31     63    170   Yes
## 70   142       276 First born  38     63    170   Not
## 71   130       289 First born  27     66    130   Not
## 72   156       292 First born  26     63    118   Not
## 73   133       284 First born  25     66    125   Yes
## 74   120       274 First born  24     62    120   Not
## 75    91       270 First born  24     60    149   Yes
## 76   127       274 First born  21     62    110   Not
## 77   153       286 First born  26     63    107   Yes
## 78   121       276 First born  39     63    130   Not
## 79   120       277 First born  27     63    126   Not
## 80    99       272 First born  27     62    103   Yes
## 81   149       293 First born  35     65    116   Not
## 82   129       280 First born  23     64    104   Not
## 83   139       292 First born  25     68    135   Not
## 84   114       274 First born  33     67    148   Yes
## 85   138       287 First born  30     66    145   Not
## 87   138       294 First born  32     65    117   Not
## 88   131       296 First born  37     63    143   Not
## 89   125       305 First born  22     70    196   Yes
## 91   128       281 First born  33     59    117   Not
## 92   134       268 First born  28     62    112   Not
## 93   114       271 First born  27     60    104   Not
## 95    85       278 First born  23     61    103   Yes
## 96   135       282 First born  22     64    100   Not
## 97    87       255 First born  28     61    100   Yes
## 98   125       302 First born  37     62    162   Not
## 100  105       254 First born  29     64    137   Not
## 101  120       279 First born  27     60    121   Yes
## 102  119       274 First born  33     64    120   Not
## 104  107       280 First born  36     65    117   Yes
## 105  119       273 First born  24     61    108   Yes
## 106  133       279 First born  37     66    140   Not
## 107  155       287 First born  33     66    143   Not
## 108  126       273 First born  22     65    150   Not
## 109  129       303 First born  27     64    125   Not
## 110  137       274 First born  29     65    154   Not
## 112  125       302 First born  28     65    125   Not
## 113   91       255 First born  19     67    136   Yes
## 115   95       279 First born  22     66    145   Yes
## 116  118       276 First born  29     64    114   Not
## 117  141       278 First born  33     66    109   Yes
## 118  131       283 First born  25     67    215   Not
## 119  121       264 First born  32     66    145   Not
## 120  100       243 First born  39     65    170   Yes
## 121  131       288 First born  24     61    103   Not
## 122  118       284 First born  26     66    133   Not
## 123  152       288 First born  35     67    130   Not
## 124  121       284 First born  34     69    155   Not
## 125  117       276 First born  31     69    150   Not
## 126  115       283 First born  25     61    150   Yes
## 127  112       277 First born  23     65    110   Not
## 128   94       267 First born  30     62    120   Yes
## 129  109       272 First born  35     66    154   Not
## 130  132       225 First born  28     67    148   Not
## 131  117       278 First born  25     62    103   Not
## 132  101       266 First born  20     67    110   Yes
## 133  112       294 First born  25     64    125   Yes
## 134  128       283 First born  24     60    100   Not
## 135  128       279 First born  25     66    147   Yes
## 136  117       258 First born  31     64    120   Not
## 137  134       278 First born  24     69    135   Not
## 138  127       284 First born  28     65    145   Not
## 139   93       269 First born  21     65    104   Yes
## 140  122       275 First born  27     65    165   Not
## 141  100       265 First born  39     62    107   Yes
## 142  147       293 First born  32     65    123   Not
## 143  120       299 First born  25     65    110   Not
## 144  144       277 First born  30     63    127   Not
## 145  105       268 First born  32     61    115   Yes
## 146  136       276 First born  23     66    155   Not
## 147  102       262 First born  24     63    125   Not
## 148  160       300 First born  29     71    175   Yes
## 149  113       275 First born  24     68    140   Yes
## 150  126       282 First born  38     66    250   Not
## 151  126       271 First born  29     68    148   Not
## 152  115       278 First born  29     61    128   Not
## 154  119       284 First born  20     66    132   Not
## 156  123       318 First born  21     64    152   Not
## 157  118       282 First born  22     68    135   Yes
## 158  133       287 First born  24     60    104   Yes
## 160  134       290 First born  22     60    121   Not
## 161  144       288 First born  21     67    111   Not
## 162  111       273 First born  43     62    138   Not
## 163  125       262 First born  36     66    190   Not
## 164  135       296 First born  30     63    123   Not
## 165  134       289 First born  22     63    125   Not
## 166  116       289 First born  22     65    160   Yes
## 167  129       291 First born  29     69    123   Not
## 168  113       301 First born  26     67    105   Yes
## 169  131       295 First born  23     65    123   Yes
## 170  126       293 First born  29     59    110  <NA>
## 171  121       272 First born  22     62    109   Not
## 172  121       271 First born  25     68    118   Yes
## 173  138       287 First born  24     65    115   Not
## 174  136       278 First born  23     61    105   Not
## 175  120       279 First born  30     66    131   Not
## 176  122       278 First born  31     72    155   Yes
## 177  134       267 First born  30     66    170   Not
## 178  101       280 First born  25     65    123   Yes
## 179  112       288 First born  32     62    125   Not
## 180  132       290 First born  25     64    120   Not
## 181  136       285 First born  23     62    175   Not
## 182  113       277 First born  23     65    192   Yes
## 183   96       271 First born  23     64    116   Not
## 184  124       277 First born  29     63    220   Not
## 185  113       306 First born  21     62    150   Not
## 187  137       258 First born  25     63    117   Not
## 188  133       268 First born  24     61     93   Not
## 189  107       244 First born  20     58     97   Not
## 190   96       265 First born  28     59    135   Yes
## 191  142       278 First born  35     66    136   Yes
## 192  136       275 First born  22     63    110   Not
## 193   75       239 First born  26     63    124   Yes
## 195  104       295 First born  26     65    155   Yes
## 196  130       274 First born  30     63    150   Not
## 197   90       290 First born  22     63    168   Not
## 198  118       276 First born  22     66    147   Yes
## 199  123       320 First born  22     66    117   Not
## 200  137       291 First born  34     61    110   Not
## 201  101       268 First born  19     63    140   Not
## 202  142       275 First born  25     64    132   Not
## 203   98       282 First born  20     63     97   Yes
## 204  124       283 First born  23     63    112   Not
## 206  109       281 First born  23     61    105   Not
## 207  150       285 First born  22     61    110   Yes
## 208  119       282 First born  26     68    150   Yes
## 209  131       280 First born  38     65    125   Not
## 210  101       272 First born  29     63    150   Yes
## 211  113       246 First born  19     62    138   Yes
## 212  127       270 First born  25     62    150   Not
## 213   97       260 First born  23     61     99   Yes
## 214  117       282 First born  28     64    115   Not
## 215  150       290 First born  21     65    125   Not
## 216   85       234 First born  33     67    130   Not
## 217  128       288 First born  27     70    145   Not
## 218  105       233 First born  34     61    130   Not
## 219   90       269 First born  26     67    125  <NA>
## 220  115       274 First born  22     65    130   Yes
## 221  107       290 First born  28     62    135   Not
## 222  121       275 First born  24     63    121   Yes
## 223  119       286 First born  20     64    180   Not
## 224  117       275 First born  20     64    145   Yes
## 225  134       264 First born  26     68    136   Not
## 226  117       288 First born  35     65    142   Not
## 227  115       268 First born  28     66    128   Not
## 228  110       254 First born  23     63    120   Yes
## 229  130       282 First born  21     62    106   Yes
## 230  140       274 First born  23     63    106   Yes
## 232   93       249 First born  33     66    117   Not
## 233  154       292 First born  42     65    116   Yes
## 234  125       290 First born  19     64    127   Not
## 235   93       318 First born  31     66    135   Not
## 236  122       277 First born  33     63    135   Yes
## 237  129       267 First born  22     63    160   Not
## 238  126       276 First born  23     63    120   Not
## 239   85       274 First born  24     68    155   Not
## 240  173       293 First born  30     63    110   Not
## 241  144       329 First born  22     65    190   Yes
## 242  114       278 First born  25     65    140   Yes
## 244  154       287 First born  27     65    125   Yes
## 245  150       274 First born  25     67    117   Yes
## 246  111       278 First born  21     62    125   Not
## 247  126       277 First born  32     66    128   Not
## 248  122       261 First born  28     65    124   Not
## 249  141       282 First born  24     68    169   Not
## 250  142       274 First born  24     63    125   Not
## 251   99       262 First born  38     59    110   Yes
## 252  113       286 First born  23     63    105   Not
## 253  149       282 First born  21     61    110   Not
## 254  117       328 First born  29     65    125   Yes
## 255  130       274 First born  26     64    185  <NA>
## 256  106       275 First born  31     65    142  <NA>
## 257  128       290 First born  22     64    118   Not
## 258  125       286 First born  21     64    139   Not
## 259  114       290 First born  30     66    160   Not
## 260  130       285 First born  23     63    128   Yes
## 261  116       148 First born  28     66    135   Not
## 262   81       256 First born  30     64    148   Yes
## 263  124       287 First born  27     62    105   Yes
## 264  125       292 First born  22     65    122   Not
## 265  110       262 First born  25     66    140   Not
## 266  125       279 First born  23     63    104   Yes
## 267  138       294 First born  40     64    125   Not
## 268  142       284 First born  39     66    132   Not
## 269  115       278 First born  23     60    102   Yes
## 270  102       280 First born  38     67    140   Not
## 271  140       294 First born  25     61    103   Not
## 272  133       276    Unknown  22     63    119   Not
## 273  127       290 First born  35     66    165   Not
## 274  104       274    Unknown  20     62    115   Yes
## 275  119       275 First born  42     67    156   Yes
## 276  152       301 First born  29     65    150   Not
## 277  123       284    Unknown  20     65    120   Yes
## 278  143       273 First born  19     66    135   Not
## 279  131       308 First born  40     65    160   Not
## 280  141       319    Unknown  20     67    140   Yes
## 281  129       277 First born  30     66    142   Yes
## 282  113       282    Unknown  36     59    140   Not
## 283  119       292 First born  33     62    118   Yes
## 284  109       295    Unknown  23     63    103   Yes
## 285  104       280    Unknown  27     68    146   Yes
## 286  131       282    Unknown  21     66    126   Not
## 287  110       293    Unknown  28     64    135   Yes
## 288  148       279 First born  27     71    189   Not
## 289  137       283    Unknown  20     65    157   Not
## 290  117       283 First born  27     63    108   Not
## 291  115       302    Unknown  22     67    135   Not
## 292   98       280 First born  35     64    122   Yes
## 293  136       303    Unknown  20     68    148   Yes
## 294  121       276    Unknown  23     71    152   Yes
## 295  132       285    Unknown  25     63    140   Not
## 296   91       264 First born  36     60    100   Yes
## 297  119       294 First born  34     59    105   Not
## 298   85       273 First born  26     60    105   Yes
## 299  106       271    Unknown  26     61    110   Yes
## 300  132       284 First born  29     64    122   Not
## 301   80       266    Unknown  25     62    125   Not
## 302  109       286 First born  24     64    125   Yes
## 303  111       306 First born  27     61    102   Not
## 304  143       292    Unknown  21     65    125   Not
## 305  136       290 First born  26     66    135   Not
## 306  110       285    Unknown  19     64    130   Not
## 307   98       257 First born  29     66    130   Yes
## 308  108       305    Unknown  24     65    112   Not
## 309  101       295 First born  18     62    145   Yes
## 310   71       281 First born  32     60    117   Yes
## 311  124       292 First born  29     68    176   Yes
## 313  106       276 First born  30     66    130   Not
## 314  101       278 First born  25     62    112   Yes
## 315  100       277 First born  31     62    100   Yes
## 316  104       269 First born  35     63    110   Yes
## 317  117       270 First born  24     67    135   Yes
## 318  117       267 First born  29     65    120   Yes
## 319  149       279 First born  25     67    135   Not
## 320  135       284 First born  25     66    123   Not
## 321  110       283    Unknown  21     66    129   Not
## 322  121       276 First born  31     67    130   Not
## 323  142       285    Unknown  24     66    136   Not
## 324  104       260 First born  33     64    145   Not
## 325  138       296 First born  34     66    120   Not
## 326  112       278    Unknown  21     63    120   Not
## 327  117       293 First born  39     60    120   Yes
## 328  109       282 First born  25     62    106   Yes
## 329  131       266    Unknown  28     67    135   Not
## 330  120       273 First born  29     64    130   Yes
## 331  116       270 First born  29     63    132   Not
## 332  140       290 First born  23     65    110   Not
## 333  103       273    Unknown  22     64    110   Yes
## 334  120       279    Unknown  23     67    135   Not
## 335  139       260    Unknown  32     64    127   Not
## 336  123       254 First born  26     62    130   Yes
## 337  104       280    Unknown  23     64    107   Yes
## 339  111       270 First born  22     59    103   Not
## 340  122       277 First born  32     63    157   Yes
## 341  116       271    Unknown  30     67    144   Yes
## 342  129       277 First born  27     68    130   Yes
## 343  133       292 First born  30     65    112   Yes
## 344  110       277 First born  25     61    130   Not
## 345  105       276 First born  22     67    130   Not
## 346   93       246 First born  37     65    130   Not
## 347  122       281 First born  42     63    103   Yes
## 348  133       293 First born  23     64    110   Yes
## 349  130       296    Unknown  22     66    117   Yes
## 350  104       307 First born  24     59    122   Not
## 351  106       278 First born  31     65    110   Yes
## 352  120       281 First born  33     63    113   Not
## 354  118       276    Unknown  18     63    128   Not
## 355  140       290    Unknown  19     67    132   Yes
## 356  114       268 First born  22     64    104   Not
## 357  116       280 First born  40     62    159   Not
## 358  129       284 First born  24     64    115   Not
## 359  120       286 First born  22     62    115   Yes
## 360  127       281 First born  24     63    112   Yes
## 362   71       234 First born  32     64    110   Yes
## 363   88       274 First born  30     66    130   Not
## 365  122       286 First born  23     64    145   Not
## 366  106       302    Unknown  19     66    147   Not
## 367  135       285 First born  30     66    130   Not
## 368  107       290 First born  26     63    112   Not
## 369  129       294 First born  32     62    170   Yes
## 370  126       274 First born  39     62    122   Not
## 371  116       293    Unknown  26     64    125   Not
## 372  124       294 First born  26     62    122   Not
## 373  123       281 First born  23     68    136   Not
## 374  145       315 First born  39     67    143   Yes
## 375  102       278 First born  27     67    135   Yes
## 376  129       293 First born  30     65    130   Yes
## 377   98       276    Unknown  22     61    121   Not
## 378  110       272 First born  28     60    108   Not
## 379  135       282 First born  24     67    128   Yes
## 380  101       278    Unknown  20     62    105   Not
## 381   96       266 First born  26     65    125   Not
## 382  104       276    Unknown  18     60    109   Yes
## 383  100       249 First born  24     67    100   Not
## 384  154       292 First born  40     66    145   Not
## 385  127       293 First born  31     67    137   Not
## 386  126       288 First born  31     62    150   Not
## 387  126       282    Unknown  23     66    115   Yes
## 388  127       279 First born  26     67    155   Yes
## 389   98       275 First born  25     65    112   Yes
## 390  127       288    Unknown  21     66    130   Not
## 391  129       299 First born  22     68    145   Not
## 392  131       292    Unknown  22     64    124   Yes
## 393  132       289    Unknown  19     66    145   Not
## 394  127       280 First born  27     62    118   Not
## 395   99       313    Unknown  34     59    100   Yes
## 396  115       290 First born  30     64    140   Yes
## 397  145       290    Unknown  24     67    125   Not
## 398  102       249    Unknown  23     67    134   Yes
## 399  136       299 First born  29     64    115   Not
## 401  121       282 First born  22     66    133   Not
## 402  120       286 First born  25     62    105   Not
## 403  118       261 First born  26     60    104   Not
## 404  127       304    Unknown  26     62    105   Not
## 405  132       281    Unknown  24     63    117   Not
## 406  102       258    Unknown  22     65    135   Not
## 407  143       279 First born  39     65    129   Yes
## 408  118       277 First born  25     62    120   Not
## 409  102       286    Unknown  22     64    140   Not
## 410  163       280 First born  35     69    139   Not
## 411  132       294 First born  32     64    116   Not
## 412  116       276 First born  33     61    180   Not
## 413  138       288    Unknown  19     66    124   Not
## 414  139       279 First born  20     64    143   Not
## 415  132       298    Unknown  23     61    137   Not
## 416   87       282 First born  27     63    104   Yes
## 417  131       297 First born  30     67    132   Not
## 418  130       282 First born  26     67    147   Yes
## 419  123       290 First born  28     66    107   Yes
## 420  115       276    Unknown  18     63    110   Not
## 421  116       272 First born  27     64    130   Yes
## 422  119       286    Unknown  20     67    130   Not
## 423  125       279    Unknown  19     67    135   Not
## 424  144       282 First born  33     66    155   Yes
## 425  123       269 First born  26     67    132   Not
## 426  120       276 First born  23     66    114   Not
## 427  140       251 First born  28     63    210   Not
## 428  120       271    Unknown  17     64    142   Yes
## 429  116       272 First born  NA     63    138   Yes
## 430  120       289    Unknown  31     59    102   Not
## 431  146       280 First born  23     61    145   Not
## 432  112       283    Unknown  21     62    102   Yes
## 433  115       269 First born  30     62    115  <NA>
## 434  132       278 First born  20     64    150   Yes
## 435  146       263 First born  39     53    110   Yes
## 436  122       275 First born  30     68    140   Not
## 437  128       292 First born  32     66    130   Not
## 438  119       277 First born  24     63    120   Yes
## 439  135       278 First born  27     66    148   Not
## 441  129       235 First born  24     66    135   Not
## 442  116       293    Unknown  28     62    108   Not
## 443  100       275 First born  27     64    111   Yes
## 445  138       257 First born  38     67    138   Not
## 446  123       282 First born  22     65    130   Not
## 447  113       288    Unknown  21     61    120   Not
## 448  129       280    Unknown  24     65    140   Yes
## 449  122       280 First born  24     67    127   Yes
## 450  132       281    Unknown  21     67    140   Not
## 451  120       269    Unknown  40     63    130   Not
## 452  114       283    Unknown  20     65    115   Not
## 453  130       280 First born  29     66    135   Not
## 454  117       286 First born  32     66    127   Yes
## 455  142       285 First born  33     63    124   Not
## 456  144       273 First born  27     62    118   Yes
## 457  127       262    Unknown  32     64    125   Not
## 458  115       270 First born  25     67    165   Yes
## 459   85       258 First born  41     67    137   Not
## 460   99       274 First born  28     66    118   Yes
## 461  123       323    Unknown  17     64    140   Not
## 462  112       281    Unknown  23     61    150   Not
## 463   68       223 First born  32     66    149   Yes
## 464  102       283    Unknown  19     65    127   Yes
## 465  109       273 First born  37     65    138   Yes
## 466  102       267    Unknown  25     60     93   Yes
## 467   99       275 First born  23     61    125   Yes
## 468   78       256    Unknown  29     65    123   Not
## 469  128       284    Unknown  19     66    111   Yes
## 470  107       303    Unknown  25     67    133   Not
## 471  136       295 First born  23     64    147   Not
## 472  101       278 First born  27     61     99   Yes
## 473  100       275    Unknown  25     64    125   Not
## 474  109       272 First born  41     66    154   Yes
## 475  117       281    Unknown  21     70    141   Yes
## 476   88       252    Unknown  21     60    115   Yes
## 477   95       270 First born  35     65    135   Yes
## 480  127       291    Unknown  24     66    135   Yes
## 481  107       293 First born  20     65    155   Yes
## 483  126       262 First born  37     66    135   Yes
## 484   98       278 First born  27     63    110   Yes
## 485   96       241 First born  23     64    130   Yes
## 486  104       282 First born  24     63    144   Not
## 487  133       273    Unknown  33     63    135   Not
## 488   93       267 First born  25     63    135   Yes
## 489  101       280    Unknown  24     65    123   Yes
## 490  118       277 First born  21     64    155   Not
## 491  130       289 First born  21     61    130   Yes
## 492  125       288 First born  22     63    128   Yes
## 493  140       291    Unknown  19     65    122   Not
## 494  115       290    Unknown  19     65    118   Not
## 495  130       293 First born  26     63    123   Not
## 496  114       277    Unknown  31     64    125   Not
## 497  105       278 First born  21     64    120   Not
## 498  101       289    Unknown  31     60    125   Not
## 499  132       286 First born  26     67    122   Yes
## 500  112       252 First born  37     64    162   Not
## 501   69       232 First born  31     59    103   Yes
## 502  114       264 First born  26     63    110   Yes
## 503  123       267 First born  29     63    111   Yes
## 504  129       284    Unknown  20     66    130   Yes
## 505  114       283    Unknown  15     64    117   Yes
## 506  115       290 First born  31     62     95   Not
## 507   98       272    Unknown  35     64    129   Not
## 508  128       283 First born  27     67    126   Not
## 510  119       271 First born  28     64    175   Yes
## 511  154       288 First born  25     65    147   Not
## 512  127       247    Unknown  21     63    140   Not
## 513  131       263 First born  29     64    180   Yes
## 514  129       288 First born  28     59    102   Not
## 515  114       286    Unknown  22     64    116   Yes
## 516  110       280 First born  29     62    110   Yes
## 517  103       268 First born  31     64    150   Yes
## 518  117       287 First born  20     65    115   Yes
## 519  138       282 First born  25     64    120   Not
## 520  126       280 First born  24     66    147   Yes
## 521  124       271 First born  23     66    145   Not
## 522  111       284 First born  34     62    110   Not
## 523  132       282 First born  28     67    200   Yes
## 524  103       240 First born  26     65    140   Not
## 525  158       285 First born  28     62    130   Not
## 527  101       286    Unknown  21     64    117   Yes
## 528  132       290 First born  26     66    125   Not
## 529  114       293    Unknown  20     66    180   Yes
## 530   71       277 First born  40     69    135   Not
## 531  116       282 First born  19     64    120   Not
## 532  108       271 First born  19     60    109   Yes
## 533  123       298 First born  25     64    113   Yes
## 534  129       289 First born  37     63    132   Not
## 535  134       282 First born  24     62    110   Not
## 536  113       298 First born  30     60    124   Yes
## 537  123       277    Unknown  20     65    160   Not
## 538  147       277 First born  30     68    160   Not
## 539  121       270    Unknown  20     62    103   Not
## 540  125       284    Unknown  19     67    130   Not
## 541  115       277    Unknown  25     66    128   Not
## 542  101       289 First born  27     59     96   Not
## 543   93       271 First born  30     65    127   Yes
## 544  109       275 First born  33     66    120   Not
## 545  115       276    Unknown  23     60    106   Not
## 546  130       293    Unknown  23     65    122   Yes
## 547  123       278 First born  21     61     89   Not
## 548  111       300 First born  20     64    108   Yes
## 549   97       279    Unknown  24     64    138   Yes
## 550  122       292    Unknown  25     65    125   Not
## 551  124       300 First born  28     63     95   Not
## 552  129       276 First born  26     66    145   Not
## 553  124       290 First born  26     59    140   Not
## 554  107       280 First born  20     60    107   Yes
## 555  142       273    Unknown  22     62    125   Not
## 556  129       287    Unknown  29     66    135   Not
## 557  174       281 First born  37     67    155   Not
## 558  105       264 First born  30     65    105   Yes
## 559  103       291    Unknown  26     63    102   Not
## 560  124       285    Unknown  27     63    114   Not
## 561  105       265 First born  43     65    124   Not
## 562  133       275 First born  36     65    137   Yes
## 563  161       302    Unknown  22     70    170   Yes
## 564  105       260 First born  23     64    197   Not
## 565  108       281 First born  41     66    171   Not
## 566  153       297 First born  27     66    145   Not
## 567  133       280    Unknown  25     61    130   Not
## 568  115       269 First born  41     63    165   Yes
## 569  127       254 First born  27     67    146   Yes
## 570  128       271 First born  41     65    135   Yes
## 571  117       265 First born  40     68    134   Yes
## 572  123       274 First born  23     66    135   Not
## 573  119       288    Unknown  22     64    132   Yes
## 574  141       284    Unknown  17     64    105   Not
## 575   91       260 First born  26     62    110   Yes
## 576  116       291 First born  29     65    133   Yes
## 577  116       255 First born  24     65    132   Not
## 578  121       273 First born  32     64    112   Not
## 579  111       274 First born  36     67    159   Not
## 580  102       257 First born  25     66    135   Not
## 581  118       283 First born  24     65    150   Not
## 582  126       294    Unknown  22     65    125   Yes
## 583   98       286 First born  31     62    105   Yes
## 584  131       288    Unknown  28     65    125   Not
## 585  115       278 First born  21     60    113   Not
## 586  103       281    Unknown  22     59     98   Yes
## 587  147       301 First born  26     65    130   Not
## 588  123       308    Unknown  19     65    135   Not
## 589  125       283 First born  22     65    119   Not
## 590  117       270 First born  30     67    130   Yes
## 591   99       268 First born  29     71    150   Not
## 592  115       283 First born  31     66    127   Yes
## 593  116       265 First born  36     63    120   Not
## 594  118       297 First born  35     68    140   Yes
## 595  170       303    Unknown  21     64    129   Not
## 596  104       270 First born  25     61    110   Not
## 597  108       269    Unknown  20     62    114   Not
## 598  144       289    Unknown  17     69    130   Yes
## 599   99       250    Unknown  26     66    115   Not
## 600   97       263    Unknown  25     63    107   Not
## 601  142       284 First born  37     68    155  <NA>
## 602   85       270    Unknown  19     63    118   Yes
## 603  130       285    Unknown  24     66    126   Yes
## 604  117       275 First born  22     62    115   Yes
## 605  109       302 First born  24     64    110   Not
## 606  147       285 First born  24     64    137   Not
## 607  105       281    Unknown  23     64    115   Not
## 608  135       278    Unknown  27     68    139   Yes
## 609  115       273    Unknown  23     67    215   Yes
## 610  123       280 First born  23     65    140   Yes
## 611  105       274    Unknown  26     61    100   Not
## 612  154       271 First born  36     69    160   Yes
## 613  110       276 First born  25     63    107   Yes
## 614  119       285    Unknown  26     62    108   Not
## 615  103       292    Unknown  28     62    132   Not
## 616  117       272 First born  25     64    116   Not
## 617  120       289 First born  23     69    165   Not
## 618  145       278 First born  24     62    109   Not
## 619  104       271 First born  20     62     98   Yes
## 620  123       268    Unknown  18     62    110   Yes
## 621  124       272 First born  27     62    110   Not
## 622  129       275 First born  26     64    115   Yes
## 623   91       248 First born  33     63    202   Not
## 624  109       295 First born  32     61    135   Not
## 625  108       268 First born  22     58    112   Yes
## 626   79       268 First born  36     61    108   Not
## 627  133       301 First born  23     62    108   Not
## 628  114       309    Unknown  27     62    118   Not
## 629  128       273 First born  34     61    125   Not
## 630  129       280    Unknown  24     65    126   Not
## 631   97       234    Unknown  26     65    112   Not
## 632  103       276    Unknown  21     62    130   Yes
## 633  176       293    Unknown  19     68    180   Not
## 634  143       294 First born  44     65    145   Not
## 635  127       292    Unknown  21     68    130   Yes
## 636  107       256 First born  28     59     90   Yes
## 637  113       268 First born  31     62    100   Not
## 638  106       279    Unknown  21     62    118   Yes
## 639  152       285 First born  24     61    120   Yes
## 640  150       275 First born  29     65    145   Not
## 641  136       278 First born  35     64    118   Yes
## 642  151       298 First born  37     64    135  <NA>
## 643  124       279 First born  35     66    129   Not
## 644  123       284    Unknown  18     64    112   Yes
## 645  119       288 First born  37     62    128   Not
## 646  122       291 First born  40     64    155   Not
## 647  112       250 First born  34     67    124   Not
## 648   93       270 First born  25     64    125   Yes
## 650  136       274    Unknown  20     63    165   Not
## 652  150       292 First born  26     64    124   Not
## 653   94       264    Unknown  26     64    135   Not
## 655  146       306 First born  38     63    112   Not
## 656  129       274 First born  19     65    101   Yes
## 657  125       292 First born  27     65    117   Yes
## 658  124       273 First born  21     63    115   Not
## 659  141       282 First born  27     63    115   Not
## 660   96       266 First born  33     67    135   Yes
## 661  138       297 First born  30     66    133   Yes
## 662  127       282 First born  28     67    134   Not
## 663  114       251 First born  26     64    119   Yes
## 664  103       297 First born  31     64    125   Not
## 665  127       288    Unknown  20     65    115   Yes
## 666  141       292 First born  29     62    110  <NA>
## 667  113       274 First born  23     63    108   Yes
## 668   99       249    Unknown  31     57     98   Yes
## 669   97       279 First born  33     61    105   Yes
## 670  116       275    Unknown  20     68    145   Not
## 671  126       297 First born  26     66    120   Yes
## 672  158       296 First born  28     66    140  <NA>
## 673  119       277 First born  28     66    130   Yes
## 674  123       283 First born  27     62    110   Not
## 675  129       287 First born  24     60    107   Not
## 676  117       256 First born  37     65    132   Yes
## 677  100       275 First born  26     60    115   Not
## 678  131       274 First born  28     64    118   Yes
## 679  146       279 First born  27     64    124   Not
## 680   84       267 First born  29     60     95   Not
## 681  115       302 First born  28     64    116   Not
## 682  115       281 First born  25     60     94   Not
## 683  118       284 First born  28     70    145   Yes
## 684   91       292    Unknown  19     61    125   Not
## 685  112       255 First born  39     60    115   Not
## 686  115       316    Unknown  29     64    110   Not
## 687  110       269 First born  38     61    102   Not
## 688  117       277 First born  34     66    140   Not
## 689  109       268    Unknown  29     65    120   Yes
## 690   99       267 First born  22     62     94   Not
## 691  131       274 First born  27     62    160   Yes
## 692  136       291    Unknown  25     61    105   Not
## 693  130       298 First born  20     62    120   Not
## 694  134       296 First born  35     60    117   Yes
## 695  128       271 First born  29     65    126   Yes
## 696  150       286 First born  38     67    175   Not
## 697   86       284 First born  39     65    174   Yes
## 698  115       278 First born  26     63    112   Yes
## 700   78       237    Unknown  23     63    144   Not
## 701  100       295    Unknown  21     68    125   Yes
## 702  116       270 First born  25     68    169   Not
## 703  110       271    Unknown  26     66    135   Not
## 704  109       283 First born  34     64    120   Not
## 705  113       259 First born  38     64    128   Not
## 706  136       297    Unknown  23     66    135   Not
## 708  121       273    Unknown  34     61    125   Not
## 709  117       288    Unknown  28     63    140   Not
## 710  166       299 First born  26     68    140   Not
## 711   87       229 First born  27     62    138   Not
## 712  120       294    Unknown  23     66    128   Yes
## 713   95       286 First born  26     66    118   Yes
## 714  132       273 First born  28     62    113   Not
## 715   90       286 First born  32     63    105   Yes
## 716  131       308 First born  30     58    150   Yes
## 717  103       279    Unknown  22     65    145   Yes
## 718  144       287    Unknown  33     71    153   Yes
## 719  137       299 First born  24     62    115   Not
## 720  124       270 First born  20     64    122   Not
## 721  136       281    Unknown  27     64    127   Not
## 722  117       298    Unknown  22     64    160   Not
## 723  121       269 First born  23     62    130   Not
## 724  116       280 First born  34     68    198   Not
## 725  139       275 First born  33     62    118   Not
## 726  110       280 First born  39     67    125   Not
## 727   86       242 First born  20     64    110   Yes
## 728  133       287 First born  20     65    165   Not
## 729   81       254 First born  23     62    157   Not
## 730  133       281 First born  33     63    120   Not
## 731  132       284    Unknown  20     66    140   Not
## 732  132       287 First born  29     64    148   Not
## 733  137       274 First born  27     64    126   Not
## 734   84       279 First born  34     63    190   Not
## 735  136       279 First born  30     69    130   Yes
## 736   92       270 First born  34     62    100   Yes
## 737  114       298    Unknown  28     67    114   Not
## 738  129       274 First born  33     69    136   Yes
## 739  167       288    Unknown  19     63    117   Not
## 741  124       282    Unknown  22     65    118   Not
## 742  105       269 First born  27     62    100   Yes
## 743  155       283    Unknown  19     70    137   Not
## 744  125       279    Unknown  21     66    126   Not
## 745  125       266 First born  21     62    120   Yes
## 746  125       283    Unknown  22     59     96   Not
## 747  115       315    Unknown  22     62    110   Not
## 748  174       288 First born  25     61    182   Not
## 749  127       290 First born  35     66    122   Not
## 750  113       262 First born  24     60    105   Not
## 751  115       273 First born  22     66    130   Yes
## 752  139       277 First born  35     63    140   Not
## 753  127       275 First born  26     62    125   Not
## 755  112       272 First born  26     60     98   Not
## 756  143       285 First born  30     64    135   Yes
## 757  116       286    Unknown  22     58    105   Yes
## 758  155       279 First born  33     61    125   Not
## 759  121       290 First born  31     64    127   Not
## 760  110       282    Unknown  21     66    125   Yes
## 761   87       277 First born  31     62    120   Yes
## 762  132       330 First born  34     64    130   Yes
## 764  129       277 First born  24     68    142   Not
## 765  123       280 First born  20     62    105   Yes
## 766   91       279    Unknown  27     62    118   Not
## 767  147       286 First born  30     68    147   Not
## 768  144       289 First born  20     62    106   Not
## 769  128       292 First born  30     64    127   Not
## 770  137       318    Unknown  19     64    110   Not
## 771  104       289 First born  24     60    104   Yes
## 772  120       271 First born  32     63    130   Not
## 773  112       277    Unknown  23     64    118   Not
## 774  138       286 First born  26     63    111   Not
## 775   96       280 First born  27     63    105   Yes
## 776  134       285 First born  35     62    134   Not
## 777  126       285 First born  24     64    140   Not
## 778  112       300 First born  29     62    121   Not
## 779  138       313    Unknown  27     65    111   Not
## 780  110       275 First born  25     63    120   Not
## 781   83       253 First born  29     63    110   Yes
## 782  112       288    Unknown  20     62    110   Not
## 783  148       286 First born  38     68    160   Not
## 784  119       300    Unknown  34     63    124   Not
## 785   86       246 First born  25     64    113   Yes
## 786  110       269 First born  38     63    145   Yes
## 787  126       282 First born  23     61    120   Not
## 788  125       272 First born  30     60     96   Not
## 789  136       252 First born  27     63    130   Not
## 790  127       283    Unknown  29     64    119   Not
## 791   84       272 First born  25     64    150   Yes
## 792  131       278 First born  22     66    124   Not
## 793  123       286    Unknown  21     67    130   Yes
## 794   96       282    Unknown  30     68    127   Yes
## 795  110       286 First born  26     62    100   Not
## 796  123       282 First born  29     68    164   Not
## 797  152       286    Unknown  19     67    135   Not
## 798  127       288 First born  28     65    155   Not
## 799  117       269    Unknown  21     64    149   Yes
## 800  125       277 First born  29     66    139   Yes
## 801  139       273 First born  29     68    130   Not
## 802  114       280 First born  31     66    134   Yes
## 803   96       280    Unknown  34     62    127   Yes
## 804  124       289 First born  29     63    110   Not
## 805  107       272 First born  30     64    140   Yes
## 806  113       277 First born  38     64    108   Not
## 807   98       292    Unknown  20     65    124   Yes
## 808  119       285    Unknown  28     65    127   Not
## 809  107       268 First born  37     58    112   Yes
## 810  117       255 First born  26     61    120   Not
## 811  117       305 First born  24     64    155   Not
## 812  144       276 First born  23     67    129   Yes
## 813  136       268 First born  30     63    132   Yes
## 814  121       278 First born  28     69    132   Not
## 815  165       282 First born  29     66    145   Not
## 816  120       279 First born  38     64    124   Not
## 817  125       280 First born  30     65    130   Yes
## 818  137       285 First born  29     65    110   Not
## 819  100       288    Unknown  28     61    108   Yes
## 820  134       284 First born  28     62    112   Not
## 821   88       262 First born  20     65    118   Yes
## 822  108       291 First born  39     65    135   Not
## 823  123       271 First born  41     64    162   Not
## 824  141       277 First born  38     66    162   Not
## 825  130       270    Unknown  19     66    130   Not
## 826  139       299    Unknown  20     67    112   Not
## 827  130       283 First born  32     65    118   Not
## 828  113       289    Unknown  26     59     91   Not
## 829   77       238    Unknown  23     63    103   Yes
## 830   62       228 First born  24     61    107   Not
## 831   93       245 First born  33     61    100   Yes
## 832  109       275    Unknown  37     63    112   Yes
## 833  145       283 First born  27     65    125   Yes
## 834   92       224 First born  19     63    134   Yes
## 835  120       281 First born  26     61    115   Not
## 836  135       284 First born  39     67    141   Not
## 837  113       287 First born  36     63    118   Not
## 838  126       251    Unknown  28     64    123   Not
## 839  143       270    Unknown  27     70    148   Not
## 840  128       282    Unknown  25     64    125   Not
## 841   98       262 First born  22     67    120   Not
## 842  110       306    Unknown  32     61    122   Not
## 843  162       284 First born  27     64    126   Not
## 844  116       292    Unknown  20     65    118   Not
## 845  128       284 First born  23     62    110   Not
## 846  111       275    Unknown  18     61    108   Yes
## 847  137       280 First born  34     60    107   Not
## 849  100       264 First born  29     64    120   Yes
## 850  160       271 First born  32     67    215   Not
## 851  112       267    Unknown  22     62    138   Not
## 852  134       297 First born  27     67    170   Yes
## 853  145       308 First born  35     64    110   Yes
## 854  116       295 First born  32     65    120   Not
## 855  126       278 First born  26     64    150   Yes
## 856  111       285 First born  29     65    130   Not
## 857  126       282 First born  33     62    117   Not
## 858  109       291 First born  39     64    107   Not
## 859  136       291 First born  41     66    191   Not
## 860  119       286 First born  22     63    185   Yes
## 861  103       267    Unknown  21     66    150   Yes
## 862  124       284    Unknown  17     62    112   Not
## 863  155       286 First born  31     66    127   Not
## 864  122       282    Unknown  21     66    110   Not
## 865  113       285 First born  26     66    140   Not
## 866  122       273 First born  26     66    210   Not
## 867  126       293    Unknown  27     62    111   Not
## 868  116       277 First born  41     64    124   Yes
## 869  102       294 First born  21     65    130   Yes
## 870  110       181 First born  27     64    133   Not
## 871  133       285    Unknown  30     64    160   Not
## 872  125       283 First born  29     65    125   Not
## 873  164       286    Unknown  32     66    143   Not
## 874  133       297 First born  36     61    125   Not
## 876  124       293    Unknown  19     65    150   Not
## 877  122       306    Unknown  22     62    100   Not
## 878  121       271    Unknown  34     63    129   Yes
## 879  100       272 First born  30     64    150   Yes
## 881   90       266    Unknown  26     67    135   Not
## 882  128       272    Unknown  18     67    109   Not
## 884   86       276    Unknown  23     65    125   Yes
## 885  123       282 First born  30     63    118   Not
## 886   87       275 First born  28     63    110   Yes
## 887  128       291    Unknown  27     63    132   Not
## 888  120       288 First born  28     63    125   Not
## 889  125       301    Unknown  35     68    181   Not
## 890  118       265 First born  27     61    123   Not
## 891  116       284    Unknown  24     66    117   Not
## 892  131       262 First born  22     67    135   Not
## 893  151       286    Unknown  22     66    130   Not
## 894   88       273 First born  20     66    110   Yes
## 895  137       284 First born  30     67    110   Not
## 896  127       289 First born  23     67    140   Not
## 897   96       278    Unknown  18     60    120   Yes
## 898  129       281 First born  31     67    155   Not
## 899  128       288    Unknown  26     65    114   Not
## 900   85       255 First born  24     68    159   Not
## 901  111       281    Unknown  27     64    112   Not
## 902  124       275 First born  28     61    116   Not
## 903  112       292    Unknown  28     62    110   Yes
## 904  115       281 First born  28     61    128   Yes
## 905   72       271 First born  39     61    136   Not
## 906  122       281    Unknown  24     65    137   Yes
## 907  116       291 First born  26     66    153   Not
## 908  127       272 First born  20     64    130   Yes
## 909   90       266 First born  23     61     99   Yes
## 910   99       273    Unknown  27     59    115   Not
## 911  144       307    Unknown  26     66    125   Not
## 912  138       280    Unknown  30     65    175   Not
## 913   58       245 First born  34     64    156   Yes
## 914  109       265    Unknown  24     63    107   Yes
## 915  110       277    Unknown  19     62    160   Not
## 916  129       278 First born  27     63    128   Not
## 917  150       284 First born  40     67    130   Not
## 918  128       279 First born  27     66    135   Not
## 919  142       284    Unknown  31     66    137   Yes
## 920  115       268    Unknown  31     64    125   Not
## 921  108       274 First born  28     66    175  <NA>
## 922  108       283 First born  35     62    108   Not
## 923  139       281 First born  27     63    137   Not
## 924  115       275 First born  25     61    155   Yes
## 925  136       288 First born  23     62    217   Not
## 926  163       289    Unknown  25     64    126   Yes
## 927  131       285 First born  26     64    130   Not
## 928   77       238 First born  38     67    135   Yes
## 929  124       283    Unknown  33     67    156   Yes
## 930  104       270    Unknown  26     62    115   Not
## 931  102       267    Unknown  24     61    109   Yes
## 932   94       268 First born  30     62    105   Yes
## 933  158       295    Unknown  37     70    137   Not
## 934  112       275    Unknown  21     68    143   Yes
## 935  119       286 First born  26     64    123   Yes
## 936   97       279 First born  29     68    178   Yes
## 937   99       252 First born  21     64    120   Not
## 938  115       264    Unknown  23     67    134   Yes
## 939  139       284 First born  37     61    121   Not
## 940  144       304    Unknown  27     58    102   Yes
## 941   99       270 First born  22     63    115   Yes
## 942  105       280    Unknown  22     63    116   Not
## 943   89       275 First born  34     66    170   Not
## 944  129       270 First born  43     67    160   Not
## 945  119       270    Unknown  20     64    109   Not
## 946  114       291 First born  35     60    112   Not
## 947  106       289 First born  28     67    120   Yes
## 948  122       292    Unknown  34     65    133   Not
## 949  136       261 First born  24     65    110   Not
## 950  121       286    Unknown  22     69    130   Yes
## 951  112       282 First born  26     65    122   Not
## 952  112       266 First born  26     64    122   Not
## 953  123       314 First born  22     61    121   Yes
## 954  139       286 First born  33     65    125   Yes
## 955  125       290 First born  36     59    105   Not
## 956  105       295    Unknown  20     64    112   Yes
## 957  130       276 First born  41     68    130   Not
## 958  146       294 First born  22     66    145   Yes
## 959  133       290 First born  21     64    145   Not
## 960  147       296    Unknown  19     67    124   Not
## 961  109       269 First born  23     63    113   Not
## 962  122       286 First born  23     64    120   Yes
## 963  135       260 First born  43     65    135   Not
## 965  117       272 First born  32     66    118   Not
## 966  138       284 First born  30     66    133   Yes
## 967  120       283 First born  28     64    122   Yes
## 968  119       273 First born  35     65    125   Yes
## 969  118       278    Unknown  19     62    126   Not
## 970  105       330 First born  23     64    112   Yes
## 971  113       306    Unknown  21     65    137   Not
## 973  148       291    Unknown  21     63    115   Not
## 974  140       281    Unknown  22     69    135   Not
## 975  134       287    Unknown  33     67    131   Not
## 976  120       280 First born  31     61    111   Not
## 977  123       296    Unknown  26     64    110   Yes
## 978  102       275 First born  43     64    160   Not
## 979   55       204 First born  35     65    140   Not
## 980  103       276    Unknown  19     63    149   Yes
## 981  123       283 First born  21     65    110   Not
## 982  105       270    Unknown  27     65    134   Yes
## 983  138       289 First born  33     65    155   Not
## 984  128       281 First born  28     63    150   Not
## 985  139       285 First born  30     65    129   Yes
## 986  104       288    Unknown  27     61    122   Yes
## 987  159       296    Unknown  27     64    112   Not
## 988  118       276 First born  29     62    130   Yes
## 989   99       285 First born  25     69    128   Yes
## 990  144       281 First born  20     63    120   Not
## 991  121       270 First born  25     62    108   Yes
## 992  117       265    Unknown  24     66     98   Not
## 993  119       293    Unknown  23     65    127   Not
## 994  105       281    Unknown  19     61    130   Not
## 995  125       283 First born  37     63    145   Yes
## 996  119       259 First born  37     62    130   Not
## 997  101       273 First born  39     60    113   Not
## 998  105       277    Unknown  25     64    156   Not
## 999  110       281 First born  27     60    110   Not
## 1000 100       270    Unknown  21     65    132   Yes
## 1001  98       284 First born  29     68    140   Not
## 1002 127       276 First born  37     64    159   Not
## 1003 117       324 First born  22     62    164   Yes
## 1004 122       278 First born  37     68    114   Not
## 1005 122       273    Unknown  23     64    130   Yes
## 1006 118       281    Unknown  36     66    140   Yes
## 1007 137       303    Unknown  23     66    127   Yes
## 1008 120       275 First born  32     63    115   Yes
## 1009 143       285 First born  27     68    185   Not
## 1010 108       270 First born  29     67    124   Yes
## 1011 131       284    Unknown  19     61    114   Yes
## 1012 110       277 First born  36     61    116   Not
## 1013 105       276 First born  20     62    112   Yes
## 1015 125       255 First born  23     63    133   Not
## 1016  78       258    Unknown  24     66    115   Yes
## 1017 114       289 First born  36     60    115   Not
## 1018 111       278 First born  29     65    145   Yes
## 1019 103       250 First born  40     59    140   Not
## 1020 114       276 First born  26     62    127   Not
## 1021  75       247 First born  36     64    120   Yes
## 1022 169       296 First born  33     67    185   Not
## 1023  94       271 First born  36     61    130   Yes
## 1024 150       287 First born  36     62    135   Not
## 1025 144       248 First born  30     70    145   Not
## 1026 144       291 First born  28     67    130   Not
## 1027 143       313 First born  20     68    150   Not
## 1028 145       304    Unknown  25     63    109   Yes
## 1029 121       285 First born  34     64    110   Not
## 1030 105       256 First born  31     66    142   Not
## 1031 134       286 First born  25     64    125   Not
## 1032 129       294    Unknown  21     65    132   Not
## 1033 114       276 First born  24     63    110   Not
## 1034  97       265 First born  30     61    110   Not
## 1035 160       292 First born  28     64    120   Not
## 1036  65       237 First born  31     67    130   Not
## 1037 145       288 First born  28     64    116   Not
## 1038  95       273 First born  23     60     90   Not
## 1039 139       293    Unknown  21     69    130   Not
## 1040 123       288 First born  27     63    125   Not
## 1041 109       283 First born  23     65    112   Yes
## 1042 110       268 First born  34     64    127   Not
## 1043 122       296    Unknown  24     65    132   Not
## 1044 115       307 First born  34     65    128   Yes
## 1046 108       279    Unknown  19     64    115   Not
## 1047 120       287 First born  23     67    116   Yes
## 1048 131       269 First born  36     68    145   Not
## 1049 136       283    Unknown  24     63    119   Not
## 1050 125       290 First born  32     63    135   Not
## 1051  96       285    Unknown  20     66    117   Yes
## 1052 102       282    Unknown  29     65    125   Yes
## 1053 102       288    Unknown  18     65    117   Not
## 1054 112       277    Unknown  22     67    120   Not
## 1055 135       272 First born  30     65    130   Not
## 1056  91       266 First born  23     60    120   Yes
## 1057 129       276 First born  31     63    125   Not
## 1058 155       290 First born  26     66    129   Yes
## 1059 109       274 First born  33     69    144   Yes
## 1060  80       262    Unknown  31     61    100   Yes
## 1061 125       273 First born  30     64    145   Not
## 1062  94       284 First born  24     63    104   Yes
## 1063 148       281 First born  27     63    110   Yes
## 1064  73       277 First born  29     65    145   Not
## 1065 123       267    Unknown  19     66    132   Yes
## 1066  65       232 First born  24     66    125   Yes
## 1067 118       279    Unknown  21     64    108   Not
## 1068 102       283 First born  39     60    119   Not
## 1069 120       280 First born  24     61    118   Not
## 1070 108       270    Unknown  21     65    130   Yes
## 1071 122       280    Unknown  45     62    128   Not
## 1072 103       268 First born  32     62     97   Yes
## 1073 105       312 First born  41     61    115   Yes
## 1074 126       273    Unknown  25     68    135   Not
## 1075 145       316 First born  22     67    142   Not
## 1076 139       293 First born  34     66    131   Not
## 1077 124       290 First born  26     65    165   Not
## 1078 121       282 First born  30     65    122   Not
## 1079 126       299    Unknown  21     60    114   Not
## 1080 119       286    Unknown  33     67    137   Not
## 1081 114       277    Unknown  19     63    107   Not
## 1082 118       272 First born  23     64    113   Not
## 1083 127       295 First born  36     65    145   Not
## 1084 117       290    Unknown  22     67    110   Not
## 1085 137       277 First born  41     65    126   Not
## 1086 133       292 First born  29     65    135   Not
## 1087 100       264 First born  28     60    111   Yes
## 1088 107       273    Unknown  26     65    135   Not
## 1089 115       276    Unknown  20     62    105   Yes
## 1090  91       292    Unknown  26     61    113   Yes
## 1091 112       287 First born  27     64    110   Yes
## 1092 125       289    Unknown  31     61    120   Not
## 1093 157       291 First born  33     65    121   Not
## 1094 108       256    Unknown  26     67    130   Not
## 1095 130       279 First born  31     62    122   Not
## 1096 135       289 First born  25     64    127   Not
## 1097 123       277 First born  24     66    122   Not
## 1098 100       281 First born  24     61    115   Not
## 1099 124       277    Unknown  23     64    104   Not
## 1100 174       284 First born  39     65    163   Not
## 1101 129       278 First born  26     67    146   Not
## 1102 119       275 First born  27     59    113   Yes
## 1103 126       272    Unknown  35     61    120   Yes
## 1104 128       267 First born  37     61    142   Not
## 1105 116       282    Unknown  19     64    124   Not
## 1106 100       285 First born  18     68    127   Yes
## 1107  96       285 First born  37     66    135   Yes
## 1108 131       279    Unknown  20     68    122   Yes
## 1109 110       292 First born  35     62    127   Not
## 1110 108       278 First born  28     63    125   Yes
## 1111 129       275 First born  24     65    135   Not
## 1112 141       285 First born  23     67    150   Not
## 1113 110       276 First born  31     70    155   Not
## 1114 118       273 First born  21     63    120   Not
## 1115 111       267    Unknown  24     60    115   Not
## 1116 160       297 First born  20     68    136   Not
## 1117 120       280 First born  30     60    115   Not
## 1118 121       281 First born  29     63    108   Not
## 1119 113       282 First born  30     64    118   Yes
## 1120 117       270 First born  23     58    115   Not
## 1121 158       267 First born  35     64    125   Not
## 1122 128       277 First born  39     61    120   Not
## 1123 158       289 First born  30     66    140   Not
## 1124 133       289 First born  22     65    123   Yes
## 1125 163       298 First born  37     61     98   Not
## 1126 128       282    Unknown  19     66    118   Not
## 1127 126       271    Unknown  21     60    105   Not
## 1128 127       283 First born  42     62    154   Yes
## 1129 134       287 First born  40     63    118   Not
## 1130 140       274 First born  41     63    122   Not
## 1131 102       285 First born  29     63    117   Yes
## 1132 100       252 First born  24     61    150   Not
## 1133 120       295 First born  29     59    100   Yes
## 1134  98       279    Unknown  18     65    115   Yes
## 1135 130       246 First born  19     62    118   Not
## 1136 104       280 First born  41     63    118   Yes
## 1137 122       285 First born  31     62    102   Yes
## 1138 137       276    Unknown  25     64    127   Not
## 1139 114       285    Unknown  20     61    104   Not
## 1140  63       236    Unknown  24     58     99   Not
## 1141  98       318 First born  23     63    107   Not
## 1142  99       268 First born  32     63    124   Yes
## 1143  89       238    Unknown  26     64    136   Not
## 1144 117       283 First born  22     65    142   Yes
## 1145 143       281 First born  29     67    132   Not
## 1146 106       279 First born  29     63    125   Yes
## 1147  99       246 First born  35     62    106   Not
## 1148 156       300 First born  27     65    120   Yes
## 1149  72       266    Unknown  25     66    200   Yes
## 1150  75       266 First born  37     61    113   Yes
## 1151  97       285 First born  35     61    112   Yes
## 1152 106       264 First born  41     64    114   Not
## 1153  91       225 First born  18     68    117   Yes
## 1154 117       269    Unknown  28     61     99   Not
## 1155 117       284 First born  25     66    177   Yes
## 1156 112       291 First born  23     66    145   Not
## 1157 112       270 First born  29     61    124   Not
## 1158 141       293 First born  28     61    125   Not
## 1159 131       259 First born  19     63    134   Not
## 1160 130       290 First born  19     65    123   Yes
## 1161 132       270 First born  26     67    140   Not
## 1162 114       265 First born  23     67    130   Yes
## 1163 160       291 First born  34     64    110   Yes
## 1164 106       283 First born  24     63    119   Not
## 1165  84       260    Unknown  20     64    104   Yes
## 1166 112       268    Unknown  25     59    103   Not
## 1167 139       311 First born  37     66    135   Not
## 1168 104       267 First born  30     63    180   Not
## 1169 130       294 First born  32     63    110   Yes
## 1170  71       254 First born  19     61    145   Yes
## 1171  82       270 First born  21     65    150   Yes
## 1172 119       280    Unknown  21     64    128   Not
## 1173 123       353 First born  26     63    115   Not
## 1174 115       278 First born  27     59     95   Not
## 1175 124       289    Unknown  21     67    145   Yes
## 1176 138       292 First born  25     65    130   Yes
## 1177  88       276 First born  25     63    103   Yes
## 1179 128       241    Unknown  17     64    126   Not
## 1180  82       274 First born  31     64    101   Yes
## 1181 100       274 First born  24     63    113   Not
## 1182 114       271 First born  32     61    130   Not
## 1183  97       269 First born  20     65    137   Yes
## 1184 126       298 First born  24     61    112   Not
## 1185 122       275    Unknown  20     65    127   Not
## 1186 152       295 First born  39     62    140   Not
## 1187 116       274 First born  21     62    110   Yes
## 1188 132       302 First born  36     63    145   Yes
## 1189  84       260    Unknown  37     66    140   Not
## 1190 119       277    Unknown  18     61     89   Yes
## 1192 106       312 First born  24     62    135   Yes
## 1194 139       291 First born  24     65    160   Not
## 1195 103       273 First born  36     65    158   Yes
## 1196 112       299 First born  24     67    145   Yes
## 1197  96       276 First born  33     64    127   Yes
## 1198 102       281    Unknown  19     67    135   Yes
## 1199 120       300 First born  34     63    150   Yes
## 1200 102       338 First born  19     64    170   Not
## 1201  97       255    Unknown  22     63    107   Yes
## 1202 113       285 First born  22     70    145   Not
## 1203 130       297 First born  32     58    130   Not
## 1204  97       260    Unknown  25     63    115   Yes
## 1205 116       273 First born  31     61    120   Not
## 1206 114       266 First born  29     64    113   Not
## 1207 127       242 First born  17     61    135   Yes
## 1208  87       247    Unknown  18     66    125   Yes
## 1209 141       281 First born  29     54    156   Yes
## 1210 144       283    Unknown  25     66    140   Not
## 1211 116       273 First born  33     66    130   Yes
## 1212  75       265 First born  21     65    103   Yes
## 1213 138       286    Unknown  28     68    120   Not
## 1214  99       271 First born  39     69    151   Not
## 1215 118       293 First born  21     63    103   Not
## 1217  97       266 First born  24     62    109   Not
## 1218 146       319 First born  28     66    145   Not
## 1219  81       285 First born  19     63    150   Yes
## 1220 110       321 First born  28     66    180   Not
## 1221 135       284    Unknown  19     60     95   Not
## 1222 114       290    Unknown  21     65    120   Yes
## 1223 124       288    Unknown  21     64    116   Yes
## 1224 115       262    Unknown  23     64    136   Yes
## 1225 143       281 First born  28     65    135   Yes
## 1226 113       287    Unknown  29     70    145   Yes
## 1227 109       244    Unknown  21     63    102   Yes
## 1228 103       278 First born  30     60     87   Yes
## 1229 118       276 First born  34     64    116   Not
## 1230 127       290 First born  27     65    121   Not
## 1231 132       270 First born  27     65    126   Not
## 1232 113       275    Unknown  27     60    100   Not
## 1233 128       265 First born  24     67    120   Not
## 1234 130       291 First born  30     65    150   Yes
## 1235 125       281    Unknown  21     65    110   Not
## 1236 117       297 First born  38     65    129   Not

3.7.1 Funciones principales de dpylr

  • Filtrar filas con filter() Selecciona observaciones que cumplen una condición específica.
url<-'https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt'
dt_web <- read.table(url, header=TRUE, sep='\t') #Para que no me borre el nombre de la variable 
dt_web<- dt_web[!is.na(dt_web$gestation),] #Limpiar la data de los valores NA
dt_web<- dt_web[!is.na(dt_web$height),]
dt_web<- dt_web[!is.na(dt_web$weight),]
dt_web %>% filter(age > 35)
##     bwt gestation     parity age height weight smoke
## 1   110       281 First born  36     61     99   Yes
## 2   115       285 First born  38     63    130   Not
## 3   119       288 First born  43     66    142   Yes
## 4    87       248 First born  37     65    130   Yes
## 5   104       282 First born  36     65    115   Yes
## 6    97       246 First born  37     63    150   Not
## 7   142       276 First born  38     63    170   Not
## 8   121       276 First born  39     63    130   Not
## 9   131       296 First born  37     63    143   Not
## 10  125       302 First born  37     62    162   Not
## 11  107       280 First born  36     65    117   Yes
## 12  133       279 First born  37     66    140   Not
## 13  100       243 First born  39     65    170   Yes
## 14  100       265 First born  39     62    107   Yes
## 15  126       282 First born  38     66    250   Not
## 16  111       273 First born  43     62    138   Not
## 17  125       262 First born  36     66    190   Not
## 18  131       280 First born  38     65    125   Not
## 19  154       292 First born  42     65    116   Yes
## 20   99       262 First born  38     59    110   Yes
## 21  138       294 First born  40     64    125   Not
## 22  142       284 First born  39     66    132   Not
## 23  102       280 First born  38     67    140   Not
## 24  119       275 First born  42     67    156   Yes
## 25  131       308 First born  40     65    160   Not
## 26  113       282    Unknown  36     59    140   Not
## 27   91       264 First born  36     60    100   Yes
## 28  117       293 First born  39     60    120   Yes
## 29   93       246 First born  37     65    130   Not
## 30  122       281 First born  42     63    103   Yes
## 31  116       280 First born  40     62    159   Not
## 32  126       274 First born  39     62    122   Not
## 33  145       315 First born  39     67    143   Yes
## 34  154       292 First born  40     66    145   Not
## 35  143       279 First born  39     65    129   Yes
## 36  146       263 First born  39     53    110   Yes
## 37  138       257 First born  38     67    138   Not
## 38  120       269    Unknown  40     63    130   Not
## 39   85       258 First born  41     67    137   Not
## 40  109       273 First born  37     65    138   Yes
## 41  109       272 First born  41     66    154   Yes
## 42  126       262 First born  37     66    135   Yes
## 43  112       252 First born  37     64    162   Not
## 44   71       277 First born  40     69    135   Not
## 45  129       289 First born  37     63    132   Not
## 46  174       281 First born  37     67    155   Not
## 47  105       265 First born  43     65    124   Not
## 48  133       275 First born  36     65    137   Yes
## 49  108       281 First born  41     66    171   Not
## 50  115       269 First born  41     63    165   Yes
## 51  128       271 First born  41     65    135   Yes
## 52  117       265 First born  40     68    134   Yes
## 53  111       274 First born  36     67    159   Not
## 54  116       265 First born  36     63    120   Not
## 55  142       284 First born  37     68    155  <NA>
## 56  154       271 First born  36     69    160   Yes
## 57   79       268 First born  36     61    108   Not
## 58  143       294 First born  44     65    145   Not
## 59  151       298 First born  37     64    135  <NA>
## 60  119       288 First born  37     62    128   Not
## 61  122       291 First born  40     64    155   Not
## 62  146       306 First born  38     63    112   Not
## 63  117       256 First born  37     65    132   Yes
## 64  112       255 First born  39     60    115   Not
## 65  110       269 First born  38     61    102   Not
## 66  150       286 First born  38     67    175   Not
## 67   86       284 First born  39     65    174   Yes
## 68  113       259 First born  38     64    128   Not
## 69  110       280 First born  39     67    125   Not
## 70  148       286 First born  38     68    160   Not
## 71  110       269 First born  38     63    145   Yes
## 72  113       277 First born  38     64    108   Not
## 73  107       268 First born  37     58    112   Yes
## 74  120       279 First born  38     64    124   Not
## 75  108       291 First born  39     65    135   Not
## 76  123       271 First born  41     64    162   Not
## 77  141       277 First born  38     66    162   Not
## 78  109       275    Unknown  37     63    112   Yes
## 79  135       284 First born  39     67    141   Not
## 80  113       287 First born  36     63    118   Not
## 81  109       291 First born  39     64    107   Not
## 82  136       291 First born  41     66    191   Not
## 83  116       277 First born  41     64    124   Yes
## 84  133       297 First born  36     61    125   Not
## 85   72       271 First born  39     61    136   Not
## 86  150       284 First born  40     67    130   Not
## 87   77       238 First born  38     67    135   Yes
## 88  158       295    Unknown  37     70    137   Not
## 89  139       284 First born  37     61    121   Not
## 90  129       270 First born  43     67    160   Not
## 91  125       290 First born  36     59    105   Not
## 92  130       276 First born  41     68    130   Not
## 93  135       260 First born  43     65    135   Not
## 94  102       275 First born  43     64    160   Not
## 95  125       283 First born  37     63    145   Yes
## 96  119       259 First born  37     62    130   Not
## 97  101       273 First born  39     60    113   Not
## 98  127       276 First born  37     64    159   Not
## 99  122       278 First born  37     68    114   Not
## 100 118       281    Unknown  36     66    140   Yes
## 101 110       277 First born  36     61    116   Not
## 102 114       289 First born  36     60    115   Not
## 103 103       250 First born  40     59    140   Not
## 104  75       247 First born  36     64    120   Yes
## 105  94       271 First born  36     61    130   Yes
## 106 150       287 First born  36     62    135   Not
## 107 131       269 First born  36     68    145   Not
## 108 102       283 First born  39     60    119   Not
## 109 122       280    Unknown  45     62    128   Not
## 110 105       312 First born  41     61    115   Yes
## 111 127       295 First born  36     65    145   Not
## 112 137       277 First born  41     65    126   Not
## 113 174       284 First born  39     65    163   Not
## 114 128       267 First born  37     61    142   Not
## 115  96       285 First born  37     66    135   Yes
## 116 128       277 First born  39     61    120   Not
## 117 163       298 First born  37     61     98   Not
## 118 127       283 First born  42     62    154   Yes
## 119 134       287 First born  40     63    118   Not
## 120 140       274 First born  41     63    122   Not
## 121 104       280 First born  41     63    118   Yes
## 122  75       266 First born  37     61    113   Yes
## 123 106       264 First born  41     64    114   Not
## 124 139       311 First born  37     66    135   Not
## 125 152       295 First born  39     62    140   Not
## 126 132       302 First born  36     63    145   Yes
## 127  84       260    Unknown  37     66    140   Not
## 128 103       273 First born  36     65    158   Yes
## 129  99       271 First born  39     69    151   Not
## 130 117       297 First born  38     65    129   Not
  • Funcion glimpse La función glimpse del paquete dplyr nos da un resumen de las variables de la base de datos.
library(dplyr)
url<-'https://raw.githubusercontent.com/fhernanb/datos/master/babies.txt'
dt_web <- read.table(url, header=TRUE, sep='\t') #Para que no me borre el nombre de la variable 
dt_web<- dt_web[!is.na(dt_web$gestation),] #Limpiar la data de los valores NA
dt_web<- dt_web[!is.na(dt_web$height),]
dt_web<- dt_web[!is.na(dt_web$weight),]
glimpse(dt_web)
## Rows: 1,185
## Columns: 7
## $ bwt       <int> 120, 113, 128, 108, 136, 138, 132, 120, 143, 140, 144, 141, …
## $ gestation <int> 284, 282, 279, 282, 286, 244, 245, 289, 299, 351, 282, 279, …
## $ parity    <chr> "First born", "First born", "First born", "First born", "Fir…
## $ age       <int> 27, 33, 28, 23, 25, 33, 23, 25, 30, 27, 32, 23, 36, 30, 38, …
## $ height    <int> 62, 64, 64, 67, 62, 62, 65, 62, 66, 68, 64, 63, 61, 63, 63, …
## $ weight    <int> 100, 135, 115, 125, 93, 178, 140, 125, 136, 120, 124, 128, 9…
## $ smoke     <chr> "Not", "Not", "Yes", "Yes", "Not", "Not", "Not", "Not", "Yes…
  • Extraer una sola variable con pull y calcular la media, varianza y desviación estándar del peso de los bebés.
dt_web |> pull(bwt) |> mean() 
## [1] 119.5207
dt_web |> pull(bwt) |> var()
## [1] 336.8849
dt_web |> pull(bwt) |> sd()
## [1] 18.35443
dt_web |> pull(bwt) |> quantile(probs=c(0.25, 0.40, 0.90))
##   25%   40%   90% 
## 108.0 116.0 142.6
  • Calcular las mismas medidas de resumen anteriores pero con escritura secuencial usando el operador pipe |> y la función summarise.
dt_web |> summarise(media_peso = mean(bwt),
                varianza_peso = var(bwt),
                desvi_peso = sd(bwt),
                Q1 = quantile(bwt, probs=0.25),
                D4 = quantile(bwt, probs=0.40),
                P90 = quantile(bwt, probs=0.90))
##   media_peso varianza_peso desvi_peso  Q1  D4   P90
## 1   119.5207      336.8849   18.35443 108 116 142.6

4 Estadistica inferencial en R

¿Que es la estadistica inferencial?

La estadística inferencial usa los datos de una muestra para hacer estimaciones, comparaciones o predicciones sobre una población completa, con un grado de incertidumbre medido (como los intervalos de confianza o el valor p).

¿Por qué es importante?

Porque casi nunca podemos medir a toda la población, así que tomamos una muestra representativa y:

  • Estimamos parámetros poblacionales (media, proporción, etc.).

  • Probamos hipótesis (por ejemplo: ¿hay diferencia entre dos grupos?).

  • Medimos relaciones entre variables (correlación, regresión).

  • Tomamos decisiones informadas en presencia de incertidumbre (basadas en probabilidad).

Conceptos claves

Población: Conjunto total de elementos o individuos que comparten una característica y sobre los que se desea obtener información.

  • Muestra: Subconjunto representativo de la población que se selecciona para estudiar.

  • Parámetro: Medida numérica que describe una característica de la población.

  • Estadístico: Medida numérica que describe una característica de una muestra.

  • Error de muestreo: Diferencia entre el valor del parámetro poblacional y el estadístico muestral.

Nivel de significancia (α): Probabilidad de rechazar la hipótesis nula cuando esta es verdadera; comúnmente se usa α = 0.05.

Distribución muestral: Distribución de los valores de un estadístico calculado a partir de múltiples muestras de una misma población.

Pruebas de normalidad

  • Shapiro-Wilk: Prueba estadística que evalúa si una muestra proviene de una distribución normal.

  • Kolmogorov-Smirnov: Prueba que compara la distribución de una muestra con una distribución teórica, como la normal.

Correlación

  • Pearson: Mide la relación lineal entre dos variables cuantitativas.

  • Spearman: Mide la relación entre rangos de dos variables; útil para datos no normales.

  • Kendall: Evalúa la concordancia entre rangos de dos variables.

Prueba de hipótesis: Procedimiento estadístico para decidir si aceptar o rechazar una afirmación sobre una población.

  • Hipótesis Nula: Afirmación inicial que se pone a prueba, normalmente indica “no hay efecto”.

  • Hipótesis alterna: Afirmación contraria a la nula; indica la existencia de un efecto o diferencia.

  • Valor-p: Probabilidad de obtener un resultado igual o más extremo que el observado, si la hipótesis nula fuera cierta.

  • Intervalo de confianza: Rango de valores dentro del cual se espera que esté el parámetro poblacional con cierta probabilidad (confianza).

Pruebas para datos paramétricos: Pruebas que suponen que los datos siguen una distribución específica, usualmente normal (como t de Student, ANOVA).

Prueba para datos no paramétricos: Pruebas que no requieren supuestos sobre la distribución de los datos (como U de Mann-Whitney, prueba de Wilcoxon).

4.0.1 Pruebas de hipotesis

  1. Plantear hipótesis nula
  2. Plantear hipótesis alterna
  3. Verificar si los datos tienen una distribución normal
  4. Aplicar prueba de hipótesis (paramétrica o no paramétrica)
  5. Inferir sobre los datos
  6. Conclusiones

4.0.2 Prueba de normalidad

¿Para qué sirve la prueba de normalidad?

  • Para elegir el tipo correcto de prueba estadística:

    • Muchas pruebas paramétricas (como t de Student, ANOVA, correlación de Pearson, regresión lineal) asumen que los datos son normales.
  • Si los datos no son normales, es mejor usar pruebas no paramétricas (como Wilcoxon, Kruskal-Wallis, Spearman).

  • Para interpretar bien el valor p y los resultados de esas pruebas.

En resumen, la prueba de normalidad sirve para evaluar si una variable sigue una distribución normal, lo cual es clave para saber qué tipo de análisis estadístico usar correctamente.

¿Por que es importante?

Porque si aplicas una prueba que asume normalidad y tus datos no son normales, tus resultados pueden ser incorrectos o engañosos.

Pruebas para verificar su normalidad

  • Gráfico Q-Q plot

  • Prueba de Shapiro

  • Prueba de Kolmoworov

4.0.2.1 Gráfico Q-Q plot

Un Q-Q plot es un gráfico que compara cuantiles teóricos de una distribución (normal en este caso) con los cuantiles observados de los datos. Si los puntos en el gráfico se ajustan aproximadamente a una línea diagonal, sugiere que los datos siguen una distribución normal.

Si los puntos del Q-Q plot siguen una línea recta, es indicativo de que los datos pueden considerarse aproximadamente normales.

El Q-Q plot es útil para evaluar visualmente si los datos siguen una distribución normal. Es especialmente útil para identificar desviaciones en las colas de la distribución.

Cómo interpretarlo: Si los puntos del Q-Q plot siguen aproximadamente una línea diagonal, indica que los datos pueden considerarse normalmente distribuidos.

El comando es qqnorm()

Suponer que se tiene un conjunto de datos de las alturas (en centímetros) de una muestra de personas. Quieres verificar si estas alturas siguen una distribución normal.

# Ejemplo de Q-Q Plot en R
# Generar datos de ejemplo (altura de personas)
set.seed(123)
altura_personas <- rnorm(100, mean = 170, sd = 10)

# Q-Q Plot
qqnorm(altura_personas)
qqline(altura_personas, col = 2)

la interpretación del valor p es clave. Si el valor p es mayor que el nivel de significancia elegido (como 0.05), no hay suficiente evidencia para rechazar la hipótesis nula de normalidad. Si el valor p es menor, podrías concluir que los datos no siguen una distribución normal.

Interpretación del valor p:
- p > 0.05 → No se rechaza la normalidad (los datos pueden considerarse normales y se acepta la hipotesis nula).
- p ≤ 0.05 → Se rechaza la normalidad (los datos no son normales y se acepta la hipotesis alterna).

Tener en cuenta: La prueba de normalidad se ve afectada por el tamaño de muestra:
- Con muestras pequeñas, puede no detectar que los datos no son normales.
- Con muestras grandes, detecta hasta pequeñas desviaciones.
Por eso, siempre es buena idea acompañarla con gráficos

4.0.2.2 Prueba de Shapiro-Wilk

La prueba de Shapiro-Wilk es una prueba estadística que evalúa la hipótesis nula de que una muestra proviene de una población con una distribución normal.

Interpretación: Un valor p alto (p > nivel de significancia, comúnmente 0.05) sugiere que no hay evidencia suficiente para rechazar la hipótesis nula de normalidad.

Es adecuada para tamaños de muestra moderados a pequeños (generalmente hasta alrededor de 2,000 observaciones)

Se calcula con el comandoshapiro.test()

# Generar un conjunto de datos de ejemplo no normal
set.seed(123)
datos <- rpois(100, lambda = 5)

# Histograma
hist(datos, main = "Histograma de Datos", col = "lightblue", border = "black")

# Gráfico de probabilidad normal (Q-Q plot)
qqnorm(datos)
qqline(datos, col = 2)

# Prueba de Shapiro-Wilk
shapiro.test(datos)
## 
##  Shapiro-Wilk normality test
## 
## data:  datos
## W = 0.97077, p-value = 0.02531

El resultado de la prueba de Shapiro-Wilk incluirá un valor p (p-value). Si el valor p es mayor que el nivel de significancia (comúnmente establecido en 0.05), los datos provienen de una distribución normal. Si el valor p es menor que 0.05, se puede considerar que los datos no siguen una distribución normal.

Suponer que tienes un conjunto de datos que representa el tiempo que los estudiantes universitarios tardan en completar un examen. Quieres comprobar si este tiempo sigue una distribución normal.

# Generar datos de ejemplo (tiempo de examen en minutos)
set.seed(456)
tiempo_examen <- rexp(80, rate = 0.1)  # Distribución exponencial

# Prueba de Shapiro-Wilk
shapiro.test(tiempo_examen)
## 
##  Shapiro-Wilk normality test
## 
## data:  tiempo_examen
## W = 0.79214, p-value = 2.875e-09
4.0.2.3 Prueba Kolmogorov-Smirnov

La prueba de Kolmogorov-Smirnov compara la distribución empírica acumulativa de los datos con la distribución acumulativa esperada para una distribución normal. Interpretación: Un valor p alto indica que no hay suficiente evidencia para rechazar la hipótesis nula de normalidad.

Es útil para tamaños de muestra grandes. Es menos sensible a colas pesadas y es no paramétrica, lo que significa que no asume una media y una desviación estándar específicas.

# Ejemplo de prueba de Kolmogorov-Smirnov en R
ks.test(datos, "pnorm", mean = mean(datos), sd = sd(datos))
## Warning in ks.test.default(datos, "pnorm", mean = mean(datos), sd = sd(datos)):
## ties should not be present for the one-sample Kolmogorov-Smirnov test
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  datos
## D = 0.1316, p-value = 0.06264
## alternative hypothesis: two-sided

Supongamos que tienes un conjunto de datos que representa las calificaciones de los estudiantes en un examen. Quieres evaluar si estas calificaciones siguen una distribución normal.

4.0.3 Pruebas de hipotesis

Tabla comparativa de pruebas paramétricas y no paramétricas
Tipo Prueba_Paramétrica Aplicación_Paramétrica Prueba_No_Paramétrica Aplicación_No_Paramétrica
Comparación de Medias Prueba t de dos muestras Comparar las medias de dos grupos independientes. Prueba de Wilcoxon-Mann-Whitney Comparar las medianas de dos grupos independientes.
Prueba t de una muestra Comparar la media de una muestra con un valor conocido. Prueba de Wilcoxon Comparar las medianas de una muestra con un valor conocido.
ANOVA Comparar las medias de más de dos grupos independientes. Prueba de Kruskal-Wallis Comparar las medianas de más de dos grupos independientes.
Correlación y regresión Prueba de correlación de Pearson Evaluar la relación lineal entre dos variables cuantitativas. Prueba de correlación de Spearman Evaluar la relación de rango entre dos variables.
Regresión lineal Modelar la relación lineal entre una variable dependiente y una o más independientes. Regresión de Theil-Sen Alternativa no paramétrica para la regresión lineal.
Comparación de Proporciones Prueba de proporciones (z) Comparar las proporciones de dos grupos independientes. Prueba de McNemar Comparar las proporciones de dos grupos dependientes.
Pruebas de Independencia Prueba de chi-cuadrado Evaluar la asociación entre dos variables categóricas. Prueba exacta de Fisher Alternativa no paramétrica para la prueba de chi-cuadrado.
Prueba de Fisher Comparar las varianzas de dos grupos independientes. Prueba de Levene Alternativa no paramétrica para comparar las varianzas.
  • Las pruebas paramétricas a menudo requieren supuestos sobre la distribución de los datos (normalidad), mientras que las pruebas no paramétricas son más flexibles y robustas frente a ciertos tipos de distribuciones.

  • La elección entre pruebas paramétricas y no paramétricas depende de la naturaleza de los datos y si se cumplen los supuestos de las pruebas paramétricas.

4.0.3.1 Pruebas parametricas

Los datos se distribuyen normalmente:

Prueba t de Student:
También conocida como la prueba t, es una prueba estadística utilizada para comparar las medias de dos grupos de datos y determinar si hay una diferencia significativa entre ellas. Fue desarrollada por William Sealy Gosset y publicada bajo el seudónimo “Student” en 1908. La prueba t es una herramienta fundamental en estadística y se utiliza comúnmente en diversas disciplinas científicas.

Comandos: rnorm se utiliza para generar datos aleatorios con una distribución normal y t.testrealiza la prueba t de Student en los dos grupos.

La prueba t de Student se utiliza cuando tienes dos grupos de datos y deseas determinar si las medias de estos grupos son estadísticamente diferentes. La hipótesis nula \((H_0)\) es que no hay diferencia significativa entre las medias de los dos grupos, mientras que la hipótesis alternativa \((H_1)\) es que hay una diferencia significativa.

fórmula: \[t=\frac{\bar{X}_1 - \bar{X}_2}{s \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}}\]

Donde: - \(\bar{X}_1\) y \(\bar{X}_2\) son las medias de los dos grupos. - \(s\) es la desviación estándar combinada de los dos grupos. - \(n_1\) y \(n_2\) son los tamaños de las muestras de los dos grupos.

Ejemplo 1: Supongamos que tenemos dos conjuntos de datos:

Se desea comparar la velocidad de dos métodos de producción en una fábrica, uno nuevo (grupo de tratamiento) y el método actual (grupo de control).

# Generar datos ficticios
set.seed(987)  # Para reproducibilidad
velocidades_tratamiento <- rnorm(30, mean = 120, sd = 15)
velocidades_control <- rnorm(30, mean = 110, sd = 12)

# Realizar la prueba t de Student
resultado_prueba_velocidades <- t.test(velocidades_tratamiento, velocidades_control)

# Mostrar el resultado
print(resultado_prueba_velocidades)
## 
##  Welch Two Sample t-test
## 
## data:  velocidades_tratamiento and velocidades_control
## t = 0.42659, df = 56.716, p-value = 0.6713
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -5.197339  8.010824
## sample estimates:
## mean of x mean of y 
##  117.0305  115.6238

¿Cuándo se aplica la prueba t de Student? se aplica cuando se cumplen ciertos supuestos, tales como:

  • Normalidad de los datos: Los datos en cada grupo deben seguir una distribución normal. En casos de muestras grandes, la prueba t es robusta ante desviaciones de la normalidad.

  • Homogeneidad de varianzas: Se asume que las varianzas de los dos grupos son iguales. Si esta suposición no se cumple, se puede usar la versión corregida de Welch de la prueba t, que es más apropiada cuando las varianzas no son iguales.

  • Datos independientes: Las observaciones en un grupo no deben influir en las observaciones del otro grupo.

Ejemplo 2:

Problema: Se desea investigar si hay diferencias significativas en los tiempos de reacción entre dos grupos de personas que participaron en dos métodos diferentes de entrenamiento cognitivo. Nuestra hipótesis nula (H0) es que no hay diferencia en los tiempos de reacción promedio entre los dos métodos, mientras que la hipótesis alternativa (Ha) es que hay una diferencia significativa.

Planteamiento de hipótesis \[ H_0: \text{La media del tiempo de reacción para el Método 1 } (\mu_1) \text{ es igual a la media del tiempo de reacción para el Método 2 } (\mu_2). \]

\[ H_a: \text{La media del tiempo de reacción para el Método 1 } (\mu_1) \text{ es diferente de la media del tiempo de reacción para el Método 2 } (\mu_2). \]

Recopilación de Datos:

Se registraron los tiempos de reacción de 30 participantes que siguieron el Método 1 y 30 participantes que siguieron el Método 2.

Verificación de Normalidad:

Se utiliza un gráfico de probabilidad normal (Q-Q plot) y la prueba de normalidad de Shapiro-Wilk para evaluar la normalidad de los tiempos de reacción en cada grupo.

Prueba Paramétrica:

Realizaremos una prueba t de dos muestras para comparar las medias de los tiempos de reacción entre los dos grupos.

# Generar datos ficticios
set.seed(123)
tiempos_metodo_1 <- rnorm(30, mean = 150, sd = 20)
tiempos_metodo_2 <- rnorm(30, mean = 160, sd = 20)

# Verificación de normalidad
par(mfrow = c(1, 2))
qqnorm(tiempos_metodo_1); qqline(tiempos_metodo_1)
qqnorm(tiempos_metodo_2); qqline(tiempos_metodo_2)

shapiro.test(tiempos_metodo_1)
## 
##  Shapiro-Wilk normality test
## 
## data:  tiempos_metodo_1
## W = 0.97894, p-value = 0.7966
shapiro.test(tiempos_metodo_2)
## 
##  Shapiro-Wilk normality test
## 
## data:  tiempos_metodo_2
## W = 0.98662, p-value = 0.9614
# Prueba t de dos muestras
t.test(tiempos_metodo_1, tiempos_metodo_2)
## 
##  Welch Two Sample t-test
## 
## data:  tiempos_metodo_1 and tiempos_metodo_2
## t = -3.0841, df = 56.559, p-value = 0.003156
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -23.930852  -5.086831
## sample estimates:
## mean of x mean of y 
##  149.0579  163.5668

Si los Q-Q plots muestran una línea cercana a la diagonal y las pruebas de Shapiro-Wilk no rechazan la normalidad (p > 0.05), podemos asumir normalidad.

La prueba t de dos muestras evaluará si hay una diferencia significativa en las medias de los tiempos de reacción entre los dos métodos. Si el valor p es menor que el nivel de significancia elegido (por ejemplo, 0.05), rechazamos la hipótesis nula y concluimos que hay una diferencia significativa en los tiempos de reacción entre los dos métodos.

# Generar datos ficticios
set.seed(123)
tiempos_metodo_1 <- rnorm(30, mean = 150, sd = 20)
tiempos_metodo_2 <- rnorm(30, mean = 160, sd = 20)

# Verificación de normalidad
par(mfrow = c(1, 2))
qqnorm(tiempos_metodo_1); qqline(tiempos_metodo_1)
qqnorm(tiempos_metodo_2); qqline(tiempos_metodo_2)

shapiro.test(tiempos_metodo_1)
## 
##  Shapiro-Wilk normality test
## 
## data:  tiempos_metodo_1
## W = 0.97894, p-value = 0.7966
shapiro.test(tiempos_metodo_2)
## 
##  Shapiro-Wilk normality test
## 
## data:  tiempos_metodo_2
## W = 0.98662, p-value = 0.9614
# Prueba t de dos muestras
t.test(tiempos_metodo_1, tiempos_metodo_2)
## 
##  Welch Two Sample t-test
## 
## data:  tiempos_metodo_1 and tiempos_metodo_2
## t = -3.0841, df = 56.559, p-value = 0.003156
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -23.930852  -5.086831
## sample estimates:
## mean of x mean of y 
##  149.0579  163.5668

Prueba ANOVA

El Análisis de Varianza (ANOVA) es una técnica estadística utilizada para comparar las medias de tres o más grupos independientes. La idea principal es analizar si hay diferencias significativas en las medias de los grupos, considerando tanto las variaciones dentro de cada grupo como las variaciones entre los grupos.

La fórmula general del modelo ANOVA se expresa como: \[Y_{ij}=μ+\alpha_i+\varepsilon_{ij}\] Donde:

  • \(Y_{ij}\) es la observación \(j\) en el grupo \(i\).
  • \(μ\) es la media global
  • \(\alpha_i\) es el efecto del grupo \(i\).
  • \(\varepsilon_{ij}\) es el error aleatorio asociado con la observación \(ij\).

La hipótesis nula \((H_0)\) en ANOVA es que no hay diferencias significativas entre las medias de los grupos \((\alpha_1=\alpha_2=...=\alpha_k, \text{donde k es el número de grupos).}\) La hipótesis alternativa \((H_1)\) es que al menos dos medias son diferentes.

La prueba estadística ANOVA utiliza el estadístico \(F\), que se calcula dividiendo la variabilidad entre grupos por la variabilidad dentro de los grupos. Un valor \(F\) grande comparado con la distribución \(F\) indica que hay diferencias significativas entre las medias.

Ejemplo:

Evaluar el rendimiento de tres diferentes métodos de enseñanza (A, B y C) en términos de los puntajes promedio obtenidos por los estudiantes en un examen. Queremos determinar si hay alguna diferencia significativa en los puntajes promedio entre los métodos de enseñanza.

# Generar datos ficticios
set.seed(123)  # Para reproducibilidad
grupo_A <- rnorm(30, mean = 75, sd = 10)
grupo_B <- rnorm(30, mean = 80, sd = 12)
grupo_C <- rnorm(30, mean = 78, sd = 11)

# Crear un data frame
datos <- data.frame(
  Metodo = rep(c("A", "B", "C"), each = 30),
  Puntajes = c(grupo_A, grupo_B, grupo_C)
)

# Realizar el ANOVA
resultado_anova <- aov(Puntajes ~ Metodo, data = datos)

# Mostrar el resultado
summary(resultado_anova)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Metodo       2    869   434.5   4.523 0.0135 *
## Residuals   87   8358    96.1                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Df (Degrees of Freedom):

Para “Metodo” (Between Groups): 2 grados de libertad. Para “Residuals” (Within Groups): 87 grados de libertad. Sum Sq (Suma de Cuadrados):

Para “Metodo” (Between Groups): 781.1. Para “Residuals” (Within Groups): 4601.6. Mean Sq (Media de Cuadrados):

Para “Metodo” (Between Groups): 390.6 (781.1 / 2). Para “Residuals” (Within Groups): 52.8 (4601.6 / 87). \(F\) Value (Valor \(F\)):

El valor \(F\) es 4.331. Pr(>\(F\)): El valor p asociado con “Metodo” es 0.0183.

La hipótesis nula \((H_0)\) sería que no hay diferencias significativas entre las medias de los grupos.

El valor p asociado con “Metodo” (0.0183) es menor que el nivel de significancia típico de 0.05.

Por lo tanto, rechazaríamos la hipótesis nula y concluiríamos que hay diferencias significativas entre al menos dos de las medias de los grupos.

Prueba Chi - Cuadrado

Es una prueba estadística utilizada para evaluar la independencia entre dos variables categóricas en una tabla de contingencia. Se compara la frecuencia observada de ocurrencias en cada celda de la tabla con la frecuencia que se esperaría si las dos variables fueran independientes.

Fórmula:

La estadística de prueba \(χ^2\) se calcula utilizando la fórmula: \[x^2 = \sum \frac{(O_{ij} - E_{ij})^2}{E_{ij}}\]

Donde: - \(O_{ij}\) es la frecuencia observada en la celda \(ij\). - \(E_{ij}\) es la frecuencia esperada en la celda \(ij\).

Esta fórmula se utiliza para evaluar la independencia entre dos variables categóricas en una tabla de contingencia. La prueba de chi-cuadrado compara las frecuencias observadas con las frecuencias esperadas bajo la hipótesis nula de independencia entre las variables.

Ejemplo:

Se desea evaluar si hay una relación entre el nivel de educación (secundaria, universidad, posgrado) y la preferencia por tres tipos de películas (acción, drama, comedia) en una muestra de personas. A continuación con datos supuestos:

# Generar datos ficticios
set.seed(123)
educacion <- rep(c("Secundaria", "Universidad", "Posgrado"), each = 50)
peliculas <- rep(c("Accion", "Drama", "Comedia"), times = 50)

# Crear una tabla de contingencia
tabla_contingencia <- table(educacion, peliculas)
print(tabla_contingencia)
##              peliculas
## educacion     Accion Comedia Drama
##   Posgrado        16      17    17
##   Secundaria      17      16    17
##   Universidad     17      17    16
# Realizar la prueba de chi-cuadrado
resultado_chi2 <- chisq.test(tabla_contingencia)
print(resultado_chi2)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia
## X-squared = 0.12, df = 4, p-value = 0.9983

El análisis de la prueba de chi-cuadrado se basa en la comparación entre las frecuencias observadas y las frecuencias esperadas en una tabla de contingencia.

Estadística de Prueba: El valor de la estadística de prueba chi-cuadrado es 0.12.

Grados de Libertad (df): Hay 4 grados de libertad en este caso.

Valor p (p-value): El valor p asociado con la prueba de chi-cuadrado es 0.9983.

La hipótesis nula H0 en la prueba de chi-cuadrado es que no hay relación entre las variables (son independientes).

El valor p es 0.9983, lo cual es mucho mayor que un nivel de significancia común de 0.05. Por lo tanto, no hay evidencia suficiente para rechazar la hipótesis nula.

En este contexto, la conclusión sería que no hay suficiente evidencia para afirmar que hay una relación significativa entre las variables examinadas (nivel de educación y preferencia por ciertos tipos de películas en tu muestra).

Prueba de Fisher

La prueba de Fisher, también conocida como la prueba exacta de Fisher, se utiliza para evaluar la asociación entre dos variables categóricas en una tabla de contingencia. Es una prueba no paramétrica que determina si la distribución marginal de una variable es independiente de la otra.

La fórmula para la prueba de Fisher es: \[P(X \leq a, Y \leq b) = \frac{\binom{a + b}{a} \cdot \binom{n - a}{m - b}}{\binom{n}{m}}\]

Donde: - \(n\) es el total de las observaciones.
- \(m\) es el total de observaciones en una categoría de una variable.
- \(a\) es la frecuencia observada en una celda.
- \(b\) es la frecuencia observada en la misma columna.

Ejemplo: Supongamos que tenemos los siguientes datos de preferencias por películas y géneros en una muestra:

# Crear una tabla de contingencia
tabla_contingencia <- matrix(c(10, 15, 20, 5), nrow = 2)
colnames(tabla_contingencia) <- c("Accion", "Drama")
rownames(tabla_contingencia) <- c("Hombres", "Mujeres")
print(tabla_contingencia)
##         Accion Drama
## Hombres     10    20
## Mujeres     15     5

Problema:Determinar si hay una asociación significativa entre el género y la preferencia por géneros de películas en esta muestra:

tabla_contingencia <- matrix(c(10, 15, 20, 5), nrow = 2)
colnames(tabla_contingencia) <- c("Accion", "Drama")
rownames(tabla_contingencia) <- c("Hombres", "Mujeres")
# Realizar la prueba de Fisher
resultado_fisher <- fisher.test(tabla_contingencia)
print(resultado_fisher)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  tabla_contingencia
## p-value = 0.008579
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.03759768 0.68195287
## sample estimates:
## odds ratio 
##  0.1734609
#Analisis de los resultados
if (resultado_fisher$p.value < 0.05) {
  cat("Hay una asociación significativa entre el género y la preferencia por géneros de películas.")
} else {
  cat("No hay suficiente evidencia para afirmar una asociación significativa.")
}
## Hay una asociación significativa entre el género y la preferencia por géneros de películas.

Prueba de correlación de Pearson

La prueba de correlación de Pearson se utiliza para evaluar la fuerza y dirección de la relación lineal entre dos variables continuas. La correlación de Pearson \((r)\) varía entre \(-1\) y \(1\), donde \(-1\) indica una relación negativa perfecta, \(1\) indica una relación positiva perfecta y \(0\) indica ninguna correlación.

La fórmula para la correlación de Pearson es: \[r = \frac{\sum (X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum (X_i - \bar{X})^2 \cdot \sum (Y_i - \bar{Y})^2}}\]

Donde:
- \(X_i\) e \(Y_i\) son los valores individuales de las dos variables.
- \(\bar{X}\) y \(\bar{Y}\) son las medias de las dos variables.

Ejemplo:

Supongamos que tenemos datos de la cantidad de horas de estudio y las calificaciones de un grupo de estudiantes y queremos evaluar la relación entre estas dos variables.

# Crear datos ficticios
set.seed(123)
horas_estudio <- rnorm(50, mean = 20, sd = 5)
calificaciones <- 0.8 * horas_estudio + rnorm(50, mean = 0, sd = 2)

# Crear un data frame
datos <- data.frame(HorasEstudio = horas_estudio, Calificaciones = calificaciones)
print(head(datos))
##   HorasEstudio Calificaciones
## 1     17.19762       14.26473
## 2     18.84911       15.02220
## 3     27.79354       22.14909
## 4     20.35254       19.01924
## 5     20.64644       16.06561
## 6     28.57532       25.89320

Problema: Determinar si hay una correlación significativa entre la cantidad de horas de estudio y las calificaciones de los estudiantes.

# Crear datos ficticios
set.seed(123)
horas_estudio <- rnorm(50, mean = 20, sd = 5)
calificaciones <- 0.8 * horas_estudio + rnorm(50, mean = 0, sd = 2)

# Crear un data frame
datos <- data.frame(HorasEstudio = horas_estudio, Calificaciones = calificaciones)
print(head(datos))
##   HorasEstudio Calificaciones
## 1     17.19762       14.26473
## 2     18.84911       15.02220
## 3     27.79354       22.14909
## 4     20.35254       19.01924
## 5     20.64644       16.06561
## 6     28.57532       25.89320
# Realizar la prueba de correlación de Pearson
resultado_correlacion <- cor.test(datos$HorasEstudio, datos$Calificaciones, method = "pearson")
print(resultado_correlacion)
## 
##  Pearson's product-moment correlation
## 
## data:  datos$HorasEstudio and datos$Calificaciones
## t = 13.929, df = 48, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8218357 0.9395535
## sample estimates:
##       cor 
## 0.8953635

Inferencia:

# Análisis de resultados
if (resultado_correlacion$p.value < 0.05) {
  cat("Hay una correlación significativa entre la cantidad de horas de estudio y las calificaciones.")
} else {
  cat("No hay suficiente evidencia para afirmar una correlación significativa.")
}
## Hay una correlación significativa entre la cantidad de horas de estudio y las calificaciones.

Regresión lineal
La regresión lineal es una técnica estadística que modela la relación lineal entre una variable dependiente (respuesta) y una o más variables independientes (predictoras). La formula de la regresión lineal es de la forma \[Y = \beta_0 + \beta_1 \mathbf{X} + \varepsilon\]

Donde:
- \(Y\) es la variable dependiente.
- \(X\) es la variable independiente.
- \(\beta_0\) es la ordenada al origen.
- \(\beta_1\) es la pendiente de la línea de regresión.
- \(\varepsilon\) es el término de error.

Ejemplo

Supongamos que tenemos datos de la cantidad de horas de estudio y las calificaciones de un grupo de estudiantes y queremos ajustar una regresión lineal para predecir las calificaciones en función de las horas de estudio.

# Crear datos ficticios
set.seed(123)
horas_estudio <- rnorm(50, mean = 20, sd = 5)
calificaciones <- 0.8 * horas_estudio + rnorm(50, mean = 0, sd = 2)

# Crear un data frame
datos <- data.frame(HorasEstudio = horas_estudio, Calificaciones = calificaciones)
print(head(datos))
##   HorasEstudio Calificaciones
## 1     17.19762       14.26473
## 2     18.84911       15.02220
## 3     27.79354       22.14909
## 4     20.35254       19.01924
## 5     20.64644       16.06561
## 6     28.57532       25.89320

Ejercicio
Ajustar una línea de regresión para predecir las calificaciones en función de las horas de estudio.

# Ajustar un modelo de regresión lineal
modelo_regresion <- lm(Calificaciones ~ HorasEstudio, data = datos)
summary(modelo_regresion)
## 
## Call:
## lm(formula = Calificaciones ~ HorasEstudio, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.9289 -0.9725 -0.0541  0.9881  4.0512 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.57586    1.16721   0.493    0.624    
## HorasEstudio  0.78597    0.05643  13.929   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.828 on 48 degrees of freedom
## Multiple R-squared:  0.8017, Adjusted R-squared:  0.7975 
## F-statistic:   194 on 1 and 48 DF,  p-value: < 2.2e-16

Inferencia:

# Análisis de resultados
cat("Coeficientes del modelo:")
## Coeficientes del modelo:
print(coef(modelo_regresion))
##  (Intercept) HorasEstudio 
##    0.5758591    0.7859686
# Graficar la línea de regresión
plot(datos$HorasEstudio, datos$Calificaciones, main = "Regresión Lineal", xlab = "Horas de Estudio", ylab = "Calificaciones")
abline(modelo_regresion, col = "red")

Prueba de la Suma de Rangos de Wilcoxon (Mann-Whitney U)

La prueba de la suma de rangos de Wilcoxon, también conocida como la prueba de Mann-Whitney U, se utiliza para evaluar si hay diferencias significativas entre dos grupos independientes en una variable ordinal o continua. Es una alternativa no paramétrica a la prueba t de Student para muestras independientes.
La formula es de la forma (usando la suma de rangos de una muestra):
La estadística de prueba U se calcula sumando los rangos de una de las muestras y comparándola con la distribución de U bajo la hipótesis nula. \[U_1 = n_1 n_2 + \frac{n_1(n_1 + 1)}{2} - R_1\]

Donde:

  • \(R_1\) es la suma de los rangos asignados a los valores de la muestra 1 tras combinar ambas muestras y ordenarlas.

  • \(n_1,n_2\) son los tamaños de las muestras 1 y 2 respectivamente.

Ejemplo

Supongamos que tenemos datos de dos grupos de estudiantes (Grupo A y Grupo B) y queremos evaluar si hay diferencias significativas en las calificaciones finales entre los dos grupos.

# Crear datos ficticios
set.seed(123)
calificaciones_grupo_a <- rnorm(30, mean = 75, sd = 10)
calificaciones_grupo_b <- rnorm(30, mean = 80, sd = 12)

# Crear un data frame
datos <- data.frame(
  Grupo = rep(c("A", "B"), each = 30),
  Calificaciones = c(calificaciones_grupo_a, calificaciones_grupo_b)
)
print(head(datos))
##   Grupo Calificaciones
## 1     A       69.39524
## 2     A       72.69823
## 3     A       90.58708
## 4     A       75.70508
## 5     A       76.29288
## 6     A       92.15065

Problema: Determinar si hay diferencias significativas en las calificaciones finales entre los dos grupos.

# Realizar la prueba de la suma de rangos de Wilcoxon (Mann-Whitney U)
resultado_wilcoxon <- wilcox.test(Calificaciones ~ Grupo, data = datos)
print(resultado_wilcoxon)
## 
##  Wilcoxon rank sum exact test
## 
## data:  Calificaciones by Grupo
## W = 268, p-value = 0.00665
## alternative hypothesis: true location shift is not equal to 0

inferencia de datos:

# Crear datos ficticios
set.seed(123)
calificaciones_grupo_a <- rnorm(30, mean = 75, sd = 10)
calificaciones_grupo_b <- rnorm(30, mean = 80, sd = 12)

# Crear un data frame
datos <- data.frame(
  Grupo = rep(c("A", "B"), each = 30),
  Calificaciones = c(calificaciones_grupo_a, calificaciones_grupo_b)
)
# Realizar la prueba de la suma de rangos de Wilcoxon (Mann-Whitney U)
resultado_wilcoxon <- wilcox.test(Calificaciones ~ Grupo, data = datos)
print(resultado_wilcoxon)
## 
##  Wilcoxon rank sum exact test
## 
## data:  Calificaciones by Grupo
## W = 268, p-value = 0.00665
## alternative hypothesis: true location shift is not equal to 0
# Análisis de resultados
if (resultado_wilcoxon$p.value < 0.05) {
  cat("Hay diferencias significativas en las calificaciones entre los dos grupos.")
} else {
  cat("No hay suficiente evidencia para afirmar diferencias significativas.")
}
## Hay diferencias significativas en las calificaciones entre los dos grupos.

Prueba de Kruskal-Wallis

La prueba de Kruskal-Wallis se utiliza para evaluar si hay diferencias significativas entre tres o más grupos independientes en una variable ordinal o continua. Es una alternativa no paramétrica al análisis de varianza (ANOVA) para muestras independientes.
La estadística de prueba H se calcula a partir de los rangos sumados de las muestras y se compara con la distribución de H bajo la hipótesis nula.
Ejemplo Supongamos que tenemos datos de calificaciones finales de estudiantes en tres grupos diferentes (Grupo A, Grupo B y Grupo C) y queremos evaluar si hay diferencias significativas entre los grupos.

# Crear datos ficticios
set.seed(123)
calificaciones_grupo_a <- rnorm(30, mean = 75, sd = 10)
calificaciones_grupo_b <- rnorm(30, mean = 80, sd = 12)
calificaciones_grupo_c <- rnorm(30, mean = 78, sd = 11)

# Crear un data frame
datos <- data.frame(
  Grupo = rep(c("A", "B", "C"), each = 30),
  Calificaciones = c(calificaciones_grupo_a, calificaciones_grupo_b, calificaciones_grupo_c)
)
print(head(datos))
##   Grupo Calificaciones
## 1     A       69.39524
## 2     A       72.69823
## 3     A       90.58708
## 4     A       75.70508
## 5     A       76.29288
## 6     A       92.15065

Problema:Determinar si hay diferencias significativas en las calificaciones finales entre los tres grupos.

# Realizar la prueba de Kruskal-Wallis
resultado_kruskal <- kruskal.test(Calificaciones ~ Grupo, data = datos)
print(resultado_kruskal)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Calificaciones by Grupo
## Kruskal-Wallis chi-squared = 7.8788, df = 2, p-value = 0.01946

Prueba de hipotesis

# Análisis de resultados
if (resultado_kruskal$p.value < 0.05) {
  cat("Hay diferencias significativas en las calificaciones entre los grupos.")
} else {
  cat("No hay suficiente evidencia para afirmar diferencias significativas.")
}
## Hay diferencias significativas en las calificaciones entre los grupos.

Prueba de correlación de Spearman
La prueba de correlación de Spearman se utiliza para evaluar la relación monotónica entre dos variables, especialmente cuando las relaciones no son lineales. Esta prueba utiliza los rangos de las observaciones y es una alternativa no paramétrica a la correlación de Pearson.
La estadística de prueba \(rho\) se calcula a partir de los rangos de las observaciones y se compara con la distribución de \(rho\) bajo la hipótesis nula.

Ejemplo
Supongamos que tenemos datos de la cantidad de horas de estudio y las calificaciones de un grupo de estudiantes y queremos evaluar la relación de rango entre estas dos variables.

# Crear datos ficticios
set.seed(123)
horas_estudio <- rnorm(50, mean = 20, sd = 5)
calificaciones <- 0.8 * horas_estudio + rnorm(50, mean = 0, sd = 2)

# Crear un data frame
datos <- data.frame(HorasEstudio = horas_estudio, Calificaciones = calificaciones)
print(head(datos))
##   HorasEstudio Calificaciones
## 1     17.19762       14.26473
## 2     18.84911       15.02220
## 3     27.79354       22.14909
## 4     20.35254       19.01924
## 5     20.64644       16.06561
## 6     28.57532       25.89320

Problema: determinar si hay una relación monotónica entre la cantidad de horas de estudio y las calificaciones de los estudiantes.

# Realizar la prueba de correlación de Spearman
resultado_spearman <- cor.test(datos$HorasEstudio, datos$Calificaciones, method = "spearman")
print(resultado_spearman)
## 
##  Spearman's rank correlation rho
## 
## data:  datos$HorasEstudio and datos$Calificaciones
## S = 2676, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8715006

Analisis:

# Análisis de resultados
if (resultado_spearman$p.value < 0.05) {
  cat("Hay una relación significativa entre la cantidad de horas de estudio y las calificaciones.")
} else {
  cat("No hay suficiente evidencia para afirmar una relación significativa.")
}
## Hay una relación significativa entre la cantidad de horas de estudio y las calificaciones.

4.0.4 Correlacion

¿Por qué importa la normalidad en correlación?

Porque hay tres tipos comunes de correlación, y cada una se usa en contextos distintos:

tabla <- data.frame(
  Método = c("Pearson", "Spearman", "Kendall"),
  Normalidad = c("Si", "No", "No"),
  Tipo_de_Variable = c("Cuantitativa continua", "Cuantitativa/ordinal", "Cuantitativa/ordinal"),
  Sensible_a_Valores_Extremos=c("si","No","No")
)
print(tabla)
##     Método Normalidad      Tipo_de_Variable Sensible_a_Valores_Extremos
## 1  Pearson         Si Cuantitativa continua                          si
## 2 Spearman         No  Cuantitativa/ordinal                          No
## 3  Kendall         No  Cuantitativa/ordinal                          No

Ejercicio

data("airquality")
str(airquality)
## 'data.frame':    153 obs. of  6 variables:
##  $ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
##  $ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ...
##  $ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
##  $ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
##  $ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ Day    : int  1 2 3 4 5 6 7 8 9 10 ...
airquality$Solar.R[is.na(airquality$Solar.R)] <- mean(airquality$Solar.R, na.rm = TRUE)
airquality$Ozone[is.na(airquality$Ozone)] <- mean(airquality$Ozone, na.rm = TRUE)
head(airquality)
##      Ozone  Solar.R Wind Temp Month Day
## 1 41.00000 190.0000  7.4   67     5   1
## 2 36.00000 118.0000  8.0   72     5   2
## 3 12.00000 149.0000 12.6   74     5   3
## 4 18.00000 313.0000 11.5   62     5   4
## 5 42.12931 185.9315 14.3   56     5   5
## 6 28.00000 185.9315 14.9   66     5   6
str(airquality)
## 'data.frame':    153 obs. of  6 variables:
##  $ Ozone  : num  41 36 12 18 42.1 ...
##  $ Solar.R: num  190 118 149 313 186 ...
##  $ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
##  $ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
##  $ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ Day    : int  1 2 3 4 5 6 7 8 9 10 ...

Ahora, escogemos dos variables para realizar el respectivo analísis \(H_0=\) La radiación solar no afecta la capa de ozono. \(H_1=\) La radiación solar afecta la capa de ozono.

data("airquality")
airquality$Solar.R[is.na(airquality$Solar.R)] <- mean(airquality$Solar.R, na.rm = TRUE)
airquality$Ozone[is.na(airquality$Ozone)] <- mean(airquality$Ozone, na.rm = TRUE)
plot(airquality$Ozone)

plot(airquality$Solar.R)

shapiro.test(airquality$Ozone)
## 
##  Shapiro-Wilk normality test
## 
## data:  airquality$Ozone
## W = 0.87953, p-value = 8.174e-10
shapiro.test(airquality$Solar.R)
## 
##  Shapiro-Wilk normality test
## 
## data:  airquality$Solar.R
## W = 0.94809, p-value = 1.895e-05

Nuestro p<0.05 en ambos casos, entonces existe evidencia significativa por tanto se rechaza la hipotesis nula.

Analisis de correlación

cor.test(airquality$Solar.R, airquality$Ozone, method= "kendall")
## 
##  Kendall's rank correlation tau
## 
## data:  airquality$Solar.R and airquality$Ozone
## z = 3.4859, p-value = 0.0004904
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
##       tau 
## 0.1954773

En base a nuestro p valor que es menor que 0.05 se rechaza la hipotesis nula y se acepta la alterna, por tanto la radiación solar influye muy poco sobre la capa de ozono.