Ingreso de datos y uso de librerias
library(readxl)
library(devtools)
## Loading required package: usethis
library(agricolae)
datos=read.csv("heart_failure_clinical_records_dataset.csv", sep=";")
1. Estadística descríptiva univariante
1.1.Variables Cuantitativas
1.1.1. Edad
Tabla de frecuencias
x=datos$age
l=range(x)
amplitud=(l[2]-l[1])/5 #amplitud de la clase
tabla=table.freq(hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F, plot = F))
names(tabla)=c("Límite inferior de clase","Límite superior de clase","Marca de clase",
"Frecuencia absoluta","Frecuencia relativa absoluta en %","Frecuencia acumulada",
"Frecuencia acumulada relativa en %")
tabla
## Límite inferior de clase Límite superior de clase Marca de clase
## 1 40 51 45.5
## 2 51 62 56.5
## 3 62 73 67.5
## 4 73 84 78.5
## 5 84 95 89.5
## Frecuencia absoluta Frecuencia relativa absoluta en % Frecuencia acumulada
## 1 74 24.7 74
## 2 94 31.4 168
## 3 86 28.8 254
## 4 31 10.4 285
## 5 14 4.7 299
## Frecuencia acumulada relativa en %
## 1 24.7
## 2 56.2
## 3 84.9
## 4 95.3
## 5 100.0
Medidas estadísticas
media=mean(x)
mediana=median(x)
desviacion=sd(x)
q1=quantile(x,c(0.25))[1]
q2=quantile(x,c(0.50))[1]
q3=quantile(x,c(0.75))[1]
curtosis=kurtosis(x)
sesgo=skewness(x)
medidas=data.frame(media,mediana,q1,q2,q3,curtosis,sesgo,desviacion,row.names = c("Medidas"))
names(medidas)=c("Media","Mediana","Cuartil 1","Cuartil 2","Cuartil 3",
"Curtosis","Sesgo","Desviación Estándar")
medidas
## Media Mediana Cuartil 1 Cuartil 2 Cuartil 3 Curtosis Sesgo
## Medidas 60.83389 60 51 60 70 -0.1848705 0.4230619
## Desviación Estándar
## Medidas 11.89481
Histograma de frecuencias absolutas
hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F,
main="Histograma de frecuencias de Edad",ylab="Frecuencia absoluta",xlab="Edad")
Diagrama de Cajas
boxplot(x,main="Diagrama de cajas de Edad",ylab="Edad")
1.1.2. nivel de la enzima CPK en sangre (mcg / l)
Tabla de frecuencias
x=datos$creatinine_phosphokinase
l=range(x) #rango de los datos
amplitud=(l[2]-l[1])/5 #amplitud de la clase
tabla=table.freq(hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F, plot = F))
names(tabla)=c("Límite inferior de clase","Límite superior de clase","Marca de clase",
"Frecuencia absoluta","Frecuencia relativa absoluta en %","Frecuencia acumulada",
"Frecuencia acumulada relativa en %")
tabla
## Límite inferior de clase Límite superior de clase Marca de clase
## 1 23.0 1590.6 806.8
## 2 1590.6 3158.2 2374.4
## 3 3158.2 4725.8 3942.0
## 4 4725.8 6293.4 5509.6
## 5 6293.4 7861.0 7077.2
## Frecuencia absoluta Frecuencia relativa absoluta en % Frecuencia acumulada
## 1 273 91.3 273
## 2 19 6.4 292
## 3 3 1.0 295
## 4 2 0.7 297
## 5 2 0.7 299
## Frecuencia acumulada relativa en %
## 1 91.3
## 2 97.7
## 3 98.7
## 4 99.3
## 5 100.0
Medidas estadísticas
media=mean(x)
mediana=median(x)
desviacion=sd(x)
q1=quantile(x,c(0.25))[1]
q2=quantile(x,c(0.50))[1]
q3=quantile(x,c(0.75))[1]
curtosis=kurtosis(x)
sesgo=skewness(x)
medidas=data.frame(media,mediana,q1,q2,q3,curtosis,sesgo,desviacion,row.names = c("Medidas"))
names(medidas)=c("Media","Mediana","Cuartil 1","Cuartil 2","Cuartil 3",
"Curtosis","Sesgo","Desviación Estándar")
medidas
## Media Mediana Cuartil 1 Cuartil 2 Cuartil 3 Curtosis Sesgo
## Medidas 581.8395 250 116.5 250 582 25.14905 4.46311
## Desviación Estándar
## Medidas 970.2879
Histograma de frecuencias absolutas
hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F,
main="Histograma de frecuencias de Nivel de enzima CPK en sangre",ylab="Frecuencia absoluta",xlab="mcg / l")
Diagrama de Cajas
boxplot(x,main="Diagrama de cajas de Nivel de enzima CPK en sangre",ylab="mcg / l")
1.1.3. Plaquetas en la sangre (kiloplaquetas / mL))
Tabla de frecuencias
x=datos$platelets
l=range(x) #rango de los datos
amplitud=(l[2]-l[1])/5 #amplitud de la clase
tabla=table.freq(hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F, plot = F))
names(tabla)=c("Límite inferior de clase","Límite superior de clase","Marca de clase",
"Frecuencia absoluta","Frecuencia relativa absoluta en %","Frecuencia acumulada",
"Frecuencia acumulada relativa en %")
tabla
## Límite inferior de clase Límite superior de clase Marca de clase
## 1 25100 190080 107590
## 2 190080 355060 272570
## 3 355060 520040 437550
## 4 520040 685020 602530
## 5 685020 850000 767510
## Frecuencia absoluta Frecuencia relativa absoluta en % Frecuencia acumulada
## 1 55 18.4 55
## 2 203 67.9 258
## 3 36 12.0 294
## 4 3 1.0 297
## 5 2 0.7 299
## Frecuencia acumulada relativa en %
## 1 18.4
## 2 86.3
## 3 98.3
## 4 99.3
## 5 100.0
Medidas estadísticas
media=mean(x)
mediana=median(x)
desviacion=sd(x)
q1=quantile(x,c(0.25))[1]
q2=quantile(x,c(0.50))[1]
q3=quantile(x,c(0.75))[1]
curtosis=kurtosis(x)
sesgo=skewness(x)
medidas=data.frame(media,mediana,q1,q2,q3,curtosis,sesgo,desviacion,row.names = c("Medidas"))
names(medidas)=c("Media","Mediana","Cuartil 1","Cuartil 2","Cuartil 3",
"Curtosis","Sesgo","Desviación Estándar")
medidas
## Media Mediana Cuartil 1 Cuartil 2 Cuartil 3 Curtosis Sesgo
## Medidas 263358 262000 212500 262000 303500 6.209255 1.462321
## Desviación Estándar
## Medidas 97804.24
Histograma de frecuencias absolutas
hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F,
main="Histograma de frecuencias de Plaquetas en la sangre",ylab="Frecuencia absoluta",xlab="kiloplaquetas / mL")
Diagrama de Cajas
boxplot(x,main="Diagrama de cajas de Plaquetas en la sangre",ylab="kiloplaquetas / mL")
1.1.4. Nivel de sodio sérico en sangre (mEq / L)
Tabla de frecuencias
x=datos$serum_sodium
l=range(x) #rango de los datos
amplitud=(l[2]-l[1])/5 #amplitud de la clase
tabla=table.freq(hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F, plot = F))
names(tabla)=c("Límite inferior de clase","Límite superior de clase","Marca de clase",
"Frecuencia absoluta","Frecuencia relativa absoluta en %","Frecuencia acumulada",
"Frecuencia acumulada relativa en %")
tabla
## Límite inferior de clase Límite superior de clase Marca de clase
## 1 113 120 116.5
## 2 120 127 123.5
## 3 127 134 130.5
## 4 134 141 137.5
## 5 141 148 144.5
## Frecuencia absoluta Frecuencia relativa absoluta en % Frecuencia acumulada
## 1 2 0.7 2
## 2 4 1.3 6
## 3 45 15.1 51
## 4 206 68.9 257
## 5 42 14.0 299
## Frecuencia acumulada relativa en %
## 1 0.7
## 2 2.0
## 3 17.1
## 4 86.0
## 5 100.0
Medidas estadísticas
media=mean(x)
mediana=median(x)
desviacion=sd(x)
q1=quantile(x,c(0.25))[1]
q2=quantile(x,c(0.50))[1]
q3=quantile(x,c(0.75))[1]
curtosis=kurtosis(x)
sesgo=skewness(x)
medidas=data.frame(media,mediana,q1,q2,q3,curtosis,sesgo,desviacion,row.names = c("Medidas"))
names(medidas)=c("Media","Mediana","Cuartil 1","Cuartil 2","Cuartil 3",
"Curtosis","Sesgo","Desviación Estándar")
medidas
## Media Mediana Cuartil 1 Cuartil 2 Cuartil 3 Curtosis Sesgo
## Medidas 136.6254 137 134 137 140 4.119712 -1.048136
## Desviación Estándar
## Medidas 4.412477
Histograma de frecuencias absolutas
hist(x, breaks = seq(from=l[1],to=l[2],by=amplitud), include.lowest = T, right = F,
main="Histograma de frecuencias de Nivel de sodio sérico en sangre",ylab="Frecuencia absoluta",xlab="mEq / L")
Diagrama de Cajas
boxplot(x,main="Diagrama de cajas de Nivel de sodio sérico en sangre",ylab="mEq / L")
1.2.Variables Cualitativas
1.2.1. Presencia de Diabetes
Diagrama de Barras
y=datos$diabetes
y=ifelse(y==1,"Si","No")
barplot(table(y),main = "Diagrama de barras de Presencia de Diabetes")
Diagrama Circular
pie(table(y),main = "Diagrama circular de Presencia de Diabetes")
1.2.2. Sexo
Diagrama de Barras
y=datos$sex
y=ifelse(y==1,"Hombre","Mujer")
barplot(table(y),main = "Diagrama de barras Sexo",col = c(4,7))
Diagrama Circular
pie(table(y),main = "Diagrama circular de Sexo",col = c(4,7))
1.2.3. Evento de Muerte
Diagrama de Barras
y=datos$sex
y=ifelse(y==1,"Si","No")
barplot(table(y),main = "Diagrama de barras Evento de muerte")
Diagrama Circular
pie(table(y),main = "Diagrama circular de Evento de muerte")
2. Estadística descríptiva Multivariante
2.1.Variables Cualitativas
2.1.1. Presencia de Diabetes
Diagrama de cajas de Edad separado por Presencia de diabetes
y=datos$diabetes
y=ifelse(y==1,"Si","No")
x=datos$age
boxplot(x~y,main="Diagrama de cajas de Edad por Presencia de Diabetes",ylab="Edad")
2.1.2. Sexo
Diagrama de cajas de Plaquetas en la sangre (kiloplaquetas / mL)) por Sexo
y=datos$sex
x=datos$platelets
boxplot(x~y,main="Diagrama de cajas de Plaquetas en la sangre por Sexo",ylab="kiloplaquetas / mL",xlab = c("Mujer","Hombre"))
2.1.3. Evento de Muerte
Diagrama de cajas de Edad separado por Evento de muerte
y=datos$DEATH_EVENT
y=ifelse(y==1,"Si","No")
x=datos$age
boxplot(x~y,main="Diagrama de cajas de Edad separado por Evento de muerte",ylab="Edad")
2.2.Variables Cuantitativas
2.2.1. Matriz de varianzas y covarianzas
matriz=cbind(datos$age,datos$creatinine_phosphokinase,datos$platelets,datos$serum_creatinine)
names(matriz)=c("Edad","nivel de la enzima CPK","Plaquetas en la sangre","Nivel de sodio sérico")
cov(matriz)
## [,1] [,2] [,3] [,4]
## [1,] 141.486483 -941.59153 -6.090712e+04 1.958845
## [2,] -941.591531 941458.57146 2.321533e+06 -16.470382
## [3,] -60907.118586 2321533.14404 9.565669e+09 -4168.399498
## [4,] 1.958845 -16.47038 -4.168399e+03 1.070211
2.2.2. Matriz de correlaciones
cor(matriz)
## [,1] [,2] [,3] [,4]
## [1,] 1.00000000 -0.08158390 -0.05235437 0.15918713
## [2,] -0.08158390 1.00000000 0.02446339 -0.01640848
## [3,] -0.05235437 0.02446339 1.00000000 -0.04119808
## [4,] 0.15918713 -0.01640848 -0.04119808 1.00000000
2.2.3. Matriz gráfica de correlaciones
library('corrplot')
## corrplot 0.84 loaded
corrplot.mixed(cor(matriz))
<font size="4"> 2.2.1. Matriz gráfica de dispersión
```r
edad=datos$age
Nivel_CPK=datos$creatinine_phosphokinase
Plaquetas=datos$platelets
sodio_serico=datos$serum_creatinine
pairs(~edad+Nivel_CPK+Plaquetas+sodio_serico)
3. Investigación sobre el tema del conjunto de datos seleccionado
Antecedentes
Las enfermedades cardiovasculares son responsables de la muerte de 17 millones de personas en el mundo cada año, sinedo las principales causas: infartos miocardio e insuficiencia cardíaca.La insuficiencia cardíaca (HF) se presenta en el momento en el corazón no puede bombear suficiente sangre para cumplir las necesidades del cuerpo y generalmente es causada por diabetes, presión arterial alta u otras afecciones o enfermedades cardíacas. Los registros médicos electrónicos disponibles de los pacientes cuantifican los síntomas, las características corporales y los valores de las pruebas de laboratorio clínico, que se pueden utilizar para realizar análisis bioestadísticos destinados a resaltar patrones y correlaciones que de otro modo no serían detectables por los médicos. El aprendizaje automático, en particular, puede predecir la supervivencia de los pacientes a partir de sus datos y puede identificar las características más importantes entre las incluidas en sus registros médicos.
Datos
Se tiene un conjunto de datos que contenía los registros médicos de 299 pacientes con insuficiencia cardíaca recopilados en el Instituto de Cardiología Faisalabad y en el Hospital Allied en Faisalabad (Punjab, Pakistán), durante abril-diciembre de 2015. Los pacientes fueron 105 mujeres y 194 hombres, con edades comprendidas entre los 40 y los 95 años. Los 299 pacientes tenían disfunción sistólica del ventrículo izquierdo y tenían insuficiencia cardíaca previa que los coloca en las clases III o IV de la clasificación de la New York Heart Association (NYHA) de las etapas de la insuficiencia cardíaca.
4. Redactar al menos 2 descubrimientos
Descubrimiento 1
Se puede observar en la seccion 2.1.1 en el gráfico de cajas de Edad separado por presencia diabetes, que la mediana, la cual ubica la edad límite por donde están debajo 50% de los pacientes, es menor el de los pacientes que si padecieron de diabetes a comparación de los que no. Otra comparación más clara es si se observa el tercer cuartil, en donde se concentra por debajo el 75% de los pacientes. Se aprecia claramente como el tercer cuartil de los que padecieron diabetes es menor a los que no. Entonces, de manera general las personas con problemas cardiovasculares que sufren de diabetes son menores que las que no sufren.
Descubrimiento 2
Se puede observar en la seccion 2.1.3 en el gráfico de cajas de Edad separado por Evento de muerte que tanto el primer cuartil, la mediana y el tercer cuartil de la Edad de los pacientes que no fallecieron es menor que los que si. Esto puede ser debido a que las personas con más años son más vulnerables en su salud. Entonces, esto no indicaría a que a mayor edad, mayor probabilidad de fallecer por alguna enfermedad cardiovascular.