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.