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"
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
print(nombre_completo)
## [1] "Karen Sanchez"
cat(nombre_completo)
## Karen Sanchez
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste0(nombre,apellido)
print(nombre_completo)
## [1] "KarenSanchez"
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"
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
nchar(nombre)
## [1] 5
nchar(apellido)
## [1] 7
nchar(nombre_completo)
## [1] 13
substr(variable,posicion inicial,posicion final)
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
substr(nombre_completo,3,9)
## [1] "ren San"
nombre<- 'Karen'
apellido<- 'Sanchez'
nombre_completo<-paste(nombre,apellido)
tolower(nombre_completo)
## [1] "karen sanchez"
toupper(nombre_completo)
## [1] "KAREN SANCHEZ"
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.
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"
numero1=20
numero2=12
numero1+19
## [1] 39
numero1+numero2
## [1] 32
numero1=20
numero2=12
numero2-numero1
## [1] -8
numero1-numero2
## [1] 8
numero1=20
numero2=12
numero1*numero2
## [1] 240
numero1=20
numero2=12
numero1/numero2
## [1] 1.666667
#Modulo o residuo que deja la division
numero1%%numero2
## [1] 8
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
numero1=20.64851
floor(numero1)
## [1] 20
numero1=20.64851
trunc(numero1)
## [1] 20
numero1=20.64851
round(numero1,2) #Redondea a 2 decimales
## [1] 20.65
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:
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
#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
#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
usuario= 'Vaneldris'
grepl('ane',usuario)
## [1] TRUE
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
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 + z2
## [1] 1+9i
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 - z2
## [1] 5-1i
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 * z2
## [1] -26+7i
z1 <- 3 + 4i
z2 <- -2 + 5i
z1 / z2
## [1] 0.4827586-0.7931034i
z1 <- 3 + 4i
z2 <- -2 + 5i
z1^3
## [1] -117+44i
z2**2
## [1] -21-20i
z1=3 + 4i
Mod(z1)
## [1] 5
z1=3 + 4i
Arg(z1)
## [1] 0.9272952
z1=3 + 4i
Re(z1)
## [1] 3
z1=3 + 4i
Im(z1)
## [1] 4
z1=3 + 4i
Conj(z1)
## [1] 3-4i
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
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.
un vector es la estructura de datos más básica. Es una secuencia ordenada de elementos del mismo tipo.
Tipos de vectores
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"
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
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1+vector2
## [1] 32 106 54 86
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1-vector2
## [1] -2 -70 -30 -40
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1*vector2
## [1] 255 1584 504 1449
vector1<- c(15,18,12,23)
vector2<- c(17,88,42,63)
vector1/vector2
## [1] 0.8823529 0.2045455 0.2857143 0.3650794
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
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
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
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.
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.
{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.
x <- c(10, 20, 30, 40, 50)
length(x)
## [1] 5
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).
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).
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.
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
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
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:
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
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
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
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
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
Los factores sirven para representar datos categoricos.
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.
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
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
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
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
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
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
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
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
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
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
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
Las funciones son tambien objetos de R que pueden almacenarse en el espacio de trabajo, lo que permite extender las capacidades de R facilmente.
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.
vector_aleatorio <- runif(5, min = 0, max = 100)
print(vector_aleatorio)
## [1] 83.79814 75.78706 65.38453 74.50979 82.25283
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
Suma todos los valores y los divide por la cantidad total.
datos <- c(10, 20, 30, 40, 50)
mean(datos)
## [1] 30
Es el valor central del conjunto de datos cuando están ordenados.
datos <- c(10, 20, 30, 40, 50)
median(datos)
## [1] 30
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
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.
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
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
##
## 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.
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
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.
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.
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.
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))
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))
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).
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.
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).
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.
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
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)")
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"))
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)")
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")
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?
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")
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.
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
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
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…
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
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
¿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).
¿Para qué sirve la prueba de normalidad?
Para elegir el tipo correcto de prueba estadística:
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
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
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
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.
| 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.
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:
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.
¿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.