EJERCICIO INTEGRADOR El archivo de la base de datos “endocrino.xlsx”, se muestran parte de las variables medidas en un estudio transversal realizado, diseñado originalmente con el objetivo de estimar las prevalencias de diabetes mellitus (DM) en la población de Telde (Gran Canaria), así como para identificar los factores asociados con aquella. En el estudio se incluyeron 1030 sujetos con edades comprendidas entre los 30 y 82 años, que respondieron a un cuestionario diseñado para obtener información sobre la edad, sexo, historia personal y familiar de diabetes mellitus y estilos de vida. Se realizaron mediciones antropométricas y de presión arterial. Se tomaron muestras de sangre sobre las que se obtuvieron diversas mediciones (glucemia, lípidos, marcadores de inflamación, hemostasia, etc). Página para descargar datos https://estadistica-dma.ulpgc.es/doctoMed Aclaración: TAS: Presión arterial Sistólica; TAD: Presión arterial Diastólica; HTA_conocida: Padece de Hipertensión arterial; A_DIAB: Padece Diabetes tipo A; STATIN: Consume Estanina (medicamento para bajar colesterol y triglicéridos); OBCENT_ATP: Obesidad Central. CINTURA Y CADERA: perímetro en cm.

rm(list=ls(all=TRUE))
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
telde<-read_excel("C:/Users/HP/OneDrive/Escritorio/Maestria/endocrino(1).xlsx")
telde
## # A tibble: 1,030 × 50
##       ID  EDAD  SEXO  PESO TALLA SEDENTARIO INSTRUCCION   TAS   TAD HTA_conocida
##    <dbl> <dbl> <dbl> <dbl> <dbl>      <dbl> <chr>       <dbl> <dbl>        <dbl>
##  1    22    51     1  86.3   174          0 Primer gra…   125    80            1
##  2    65    33     1  81.8   175          0 Segundo gr…   120    80            0
##  3   116    40     1 105     173          1 Segundo gr…   150   100            0
##  4   144    62     1  98     172          0 Primer gra…   155   100            0
##  5   204    33     1 124     181          0 Segundo gr…   130    90            0
##  6   337    33     1  93     177          1 Segundo gr…   110    70            0
##  7   458    68     1  81     174          0 Primer gra…   120    70            0
##  8   541    56     1  99     174          1 Tercer gra…   110    70            0
##  9   551    55     1  92     179          1 Primer gra…   130    80            0
## 10   557    46     1  94.3   169          0 Primer gra…   120    80            0
## # ℹ 1,020 more rows
## # ℹ 40 more variables: HTA_OMS <dbl>, A_DIAB <dbl>, ECV_B <dbl>, TABACO <dbl>,
## #   ALCOHOL <dbl>, STATIN <dbl>, CINTURA <dbl>, CADERA <dbl>, OBCENT_ATP <dbl>,
## #   COLESTEROL <dbl>, HDL <dbl>, LDL <dbl>, LDL_C <chr>, TG <dbl>,
## #   CnoHDL <dbl>, ApoA <dbl>, ApoB <dbl>, LPA <dbl>, A1C <dbl>, hba1 <dbl>,
## #   CREATININA <dbl>, GLUCB <dbl>, SOG <dbl>, Tol_Glucosa <chr>, DM <dbl>,
## #   conocida <chr>, SM <dbl>, PCR <dbl>, INSULINEMIA <dbl>, PAI_1 <dbl>, …
  1. Realizar un resumen numérico de las variables, indicando de que tipo son. ##Las variables a utilizar en el trabajo son: #TAS: Presión arterial Sistólica;Variable Cuantitativa continua #TAD:Presión arterial Diastólica;Variable Cuantitativa continua #HTA_conocida:Padecimiento de Hipertensión;Variable cualitativa nominal #A_DIAB:Padecimiento diabetes tipo I;Variable cualitativa nominal #STATIN:Consume Estanina, medicamento para bajar colesterol y triglicéridos:Variable cualitativa nominal #OBCENT_ATP:Presenta obesidad Central;Variable cualitativa nominal #CINTURA:Perimetro de la cintura en cm:Variable Cuantitativa continua #CADERA: Perimetro de la cadera en cm:Variable Cuantitat
telde <-telde[,c("TAS","TAD","HTA_conocida","A_DIAB","STATIN","OBCENT_ATP","CINTURA","CADERA")]
str(telde)
## tibble [1,030 × 8] (S3: tbl_df/tbl/data.frame)
##  $ TAS         : num [1:1030] 125 120 150 155 130 110 120 110 130 120 ...
##  $ TAD         : num [1:1030] 80 80 100 100 90 70 70 70 80 80 ...
##  $ HTA_conocida: num [1:1030] 1 0 0 0 0 0 0 0 0 0 ...
##  $ A_DIAB      : num [1:1030] 1 0 1 0 1 1 1 0 0 1 ...
##  $ STATIN      : num [1:1030] 1 0 0 0 0 0 0 1 0 0 ...
##  $ OBCENT_ATP  : num [1:1030] 1 0 1 1 1 1 0 1 1 1 ...
##  $ CINTURA     : num [1:1030] 104 86 116 104 130 108 100 114 105 109 ...
##  $ CADERA      : num [1:1030] 102 89 107 103 122 ...
summary(telde)
##       TAS             TAD          HTA_conocida        A_DIAB      
##  Min.   : 70.0   Min.   : 50.00   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:110.0   1st Qu.: 70.00   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :120.0   Median : 70.00   Median :0.0000   Median :0.0000  
##  Mean   :118.7   Mean   : 73.34   Mean   :0.2029   Mean   :0.4019  
##  3rd Qu.:130.0   3rd Qu.: 80.00   3rd Qu.:0.0000   3rd Qu.:1.0000  
##  Max.   :190.0   Max.   :120.00   Max.   :1.0000   Max.   :1.0000  
##                                                                    
##      STATIN         OBCENT_ATP        CINTURA           CADERA     
##  Min.   :0.0000   Min.   :0.0000   Min.   : 61.00   Min.   : 75.0  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.: 88.00   1st Qu.: 97.0  
##  Median :0.0000   Median :1.0000   Median : 97.00   Median :103.0  
##  Mean   :0.1476   Mean   :0.5738   Mean   : 96.81   Mean   :104.3  
##  3rd Qu.:0.0000   3rd Qu.:1.0000   3rd Qu.:105.00   3rd Qu.:110.0  
##  Max.   :1.0000   Max.   :1.0000   Max.   :145.00   Max.   :150.0  
##                                    NA's   :1        NA's   :1

Conforme a los resultados obtenidos a través de “str” y “summary” a la base telde, se verifican que existen variables cualitativas declaras como numérica, por lo que requieren ser declaradas como factor a fin de subsanarlas

Declararemos como factor algunas de las variables cualitativas y que figuran como numéricas y que serían de interés para la parte b):

telde$HTA_conocida <- factor(telde$HTA_conocida,labels=c("No padece","Sí padece"))
telde$A_DIAB <- factor(telde$A_DIAB,labels=c("No padece","Sí padece"))
telde$STATIN <- factor(telde$STATIN,labels=c("No consume","Sí consume"))
telde$OBCENT_ATP <- factor(telde$OBCENT_ATP,labels=c("No","Sí"))
summary(telde)
##       TAS             TAD            HTA_conocida       A_DIAB   
##  Min.   : 70.0   Min.   : 50.00   No padece:821   No padece:616  
##  1st Qu.:110.0   1st Qu.: 70.00   Sí padece:209   Sí padece:414  
##  Median :120.0   Median : 70.00                                  
##  Mean   :118.7   Mean   : 73.34                                  
##  3rd Qu.:130.0   3rd Qu.: 80.00                                  
##  Max.   :190.0   Max.   :120.00                                  
##                                                                  
##         STATIN    OBCENT_ATP    CINTURA           CADERA     
##  No consume:878   No:439     Min.   : 61.00   Min.   : 75.0  
##  Sí consume:152   Sí:591     1st Qu.: 88.00   1st Qu.: 97.0  
##                              Median : 97.00   Median :103.0  
##                              Mean   : 96.81   Mean   :104.3  
##                              3rd Qu.:105.00   3rd Qu.:110.0  
##                              Max.   :145.00   Max.   :150.0  
##                              NA's   :1        NA's   :1

#b) Seleccionar algunas variables de distinto tipo y realizar tablas y Gráficos, #para cada variable (Análisis Univariado) ##Las variables a utilizar en el trabajo son: #TAS: Presión arterial Sistólica;Variable Cuantitativa continua #TAD:Presión arterial Diastólica;Variable Cuantitativa continua #HTA_conocida:Padecimiento de Hipertensión;Variable cualitativa nominal #A_DIAB:Padecimiento diabetes tipo I;Variable cualitativa nominal #STATIN:Consume Estanina, medicamento para bajar colesterol y triglicéridos:Variable cualitativa nominal #OBCENT_ATP:Presenta obesidad Central;Variable cualitativa nominal #CINTURA:Perimetro de la cintura en cm:Variable Cuantitativa continua #CADERA: Perimetro de la cadera en cm:Variable Cuantitativa continua ## VARIABLES CUALITATIVAS #Variable Hipertensión Arterial

tabla_HTA<-xtabs(~ HTA_conocida, data = telde);tabla_HTA
## HTA_conocida
## No padece Sí padece 
##       821       209
prop.table(tabla_HTA)*100
## HTA_conocida
## No padece Sí padece 
##  79.70874  20.29126
barplot(tabla_HTA,
        xlab = "Hipertensión arterial",
        ylab = "Frecuencia",
        main = "Distribución de pacientes según padecimiento o no de hipertensión",
        col = "blueviolet")

#Variable Diabetes Tipo I

tabla_A_DIAB<-xtabs(~ A_DIAB, data = telde);tabla_A_DIAB
## A_DIAB
## No padece Sí padece 
##       616       414
prop.table(tabla_A_DIAB)*100
## A_DIAB
## No padece Sí padece 
##  59.80583  40.19417
barplot(tabla_A_DIAB,
        xlab = "Diabetes Tipo I",
        ylab = "Frecuencia",
        main = "Distribución de pacientes según padecimiento o no de Diabetes Tipo I",
        col = "blue")

#Variable Consume EStatina

tabla_STATIN<-xtabs(~ STATIN, data = telde);tabla_STATIN
## STATIN
## No consume Sí consume 
##        878        152
prop.table(tabla_STATIN)*100
## STATIN
## No consume Sí consume 
##   85.24272   14.75728
barplot(tabla_STATIN,
        xlab = "Consume Estanina",
        ylab = "Frecuencia",
        main = "Distribución de pacientes según consume o no Estanina",
        col = "pink")

#Variable Obesidad Central

tabla_OBCENT_ATP<-xtabs(~OBCENT_ATP, data = telde);tabla_OBCENT_ATP
## OBCENT_ATP
##  No  Sí 
## 439 591
prop.table(tabla_OBCENT_ATP)*100
## OBCENT_ATP
##       No       Sí 
## 42.62136 57.37864
barplot(tabla_OBCENT_ATP,
        xlab = "Obesidad Central",
        ylab = "Frecuencia",
        main = "Distribución de pacientes según padecimiento o no de Obesidad Central",
        col = "red")

#VARIABLES CUANTITATIVAS

#Variable:TAS: PresiÓn arterial Sistólica

boxplot(telde$TAS,las=1,
        ylab="Presion arterial SistÓlica",
        main="Distribucion de la Presion Arterial Sistolica",
        col = "green",
        pch = 18)

#Variable:TAD:PresiÓn arterial DiastÓlica

summary(telde$TAD)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   50.00   70.00   70.00   73.34   80.00  120.00
boxplot(telde$TAD,las=1,
        ylab="Presion arterial Diastolica",
        main="Distribucion de la Presion Arterial Diastólica",
        col = "violet",
        pch = 16)

#Variable:Perímetro de la cintura en cm

summary(telde$CINTURA)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   61.00   88.00   97.00   96.81  105.00  145.00       1
boxplot(telde$CINTURA,las=1,
        ylab="Perimetro de cintura",
        main="Distribucion del perimetro de cintura en cm",
        col = "navyblue",
        pch = 16)

#Variable:Perímetro de la cadera en cm

summary(telde$CADERA)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    75.0    97.0   103.0   104.3   110.0   150.0       1
boxplot(telde$CADERA,las=1,
        ylab="Perimetro de cadera",
        main="Distribucion del perimetro de cadera en cm",
        col = "orange",
        pch = 16)

#c) Realizar un análisis descriptivo Bivariado, con variables del mismo tipo y de distinto tipo. #Variables:Padece obesidad y Perimetro de cintura y cadera

boxplot(telde$CINTURA ~telde$OBCENT_ATP,las=1,
        ylab="Perimetro de cintura",
        xlab = "Presenta obesidad central",
        main="Distribucion del perimetro de cintura segun\npadecimiento de obesidad",
        col = "aquamarine2",
        pch = 16)

boxplot(telde$CADERA ~telde$OBCENT_ATP,las=1,
        ylab="Perimetro de cadera en cm",
        xlab = "Presenta Obesidad Central",
        main="Distribucion del perimetro de cadera segun\npadecimiento de obesidad",
        col = "red3",
        pch = 16)

#Variables:Padece HTA y Padece Diabetes

tabla_hta_diab<-xtabs(~HTA_conocida+A_DIAB,data = telde)
tabla_hta_diab
##             A_DIAB
## HTA_conocida No padece Sí padece
##    No padece       487       334
##    Sí padece       129        80

#Variables:Padece obesidad y consume Estanina

tabla_obe_sta<-xtabs(~OBCENT_ATP+STATIN,data = telde)
tabla_obe_sta
##           STATIN
## OBCENT_ATP No consume Sí consume
##         No        402         37
##         Sí        476        115
plot_obe_sta<-barplot(tabla_obe_sta,xlab = "Padece obesidad",
                      beside = T,col=c("pink","yellow"),ylim = c(0,600),
                      main="Distribucion del consumo de Estanina segun\npadecimiento de obesidad") 
legend(4.5,500,legend=c("No padece","si padece"),fill=c("pink","yellow"),
       title="Padece obesidad",title.adj=0.5)
text(plot_obe_sta,tabla_obe_sta+30,tabla_obe_sta)

#Variables:Padece obesidad y padece diabetes

tabla_obe_dia<-xtabs(~OBCENT_ATP+A_DIAB,data=telde)
tabla_obe_dia
##           A_DIAB
## OBCENT_ATP No padece Sí padece
##         No       270       169
##         Sí       346       245
plot_obe_dia<-barplot(tabla_obe_dia,xlab = "Padece obesidad",
                      beside = T,col=c("blue","yellow"),ylim = c(0,500),
                      main="Padecimiento de Obesidad y\ndiabetes") 
legend(3,470,legend=c("Sí","No"),fill=c("blue","yellow"),
       title="Padece obesidad",title.adj=0.5)
text(tabla_obe_dia,tabla_obe_dia+0.5,tabla_obe_dia)

#Variables:Padece obesidad y Presión arterial Diastólica y Presion Arterial Sistolica

boxplot(telde$TAD ~telde$OBCENT_ATP,las=1,
        ylab="Presion arterial Diastolica",
        xlab = "Presenta obesidad central",
        main="Distribucion de la Presion arterial Diastolica segun\npadecimiento de obesidad",
        col = "red",
        pch = 16)

boxplot(telde$TAS~telde$OBCENT_ATP,las=1,
        ylab="Presion arterial Sistolica",
        xlab = "Presenta Obesidad Central",
        main="Distribucion de la Presion arterial Sistolica segun\npadecimiento de obesidad",
        col = "blue",
        pch = 16)

#d) Seleccionar el análisis Inferencial que corresponda para una variable cuantitativa y una cualitativa.

#El analisis inferencial se realiza con las variables CADERA en centimetro como variable cuantitativa y #la variable obesidad(padece o no obesidad) pare ver si existe diferencia significativa entre el promedio #en cm de la variable CADERA segun padece o no obesidad

#Primero analizamos la normalidad de las variables #\(H_0\)> El perimetro de la CADERA tiene distribucion normal segun padecimiento de obesidad #\(H_1\)> El perimetro de la CADERA no tiene distribucion normal segun padecimiento de obesidad #Para demostrar la normalidad utilizamos la prueba K-S

si_obesidad<-telde[telde$OBCENT_ATP=="Sí","CADERA"]
si_obesidad
## # A tibble: 591 × 1
##    CADERA
##     <dbl>
##  1   102.
##  2   107 
##  3   103 
##  4   122 
##  5   106 
##  6   109 
##  7   105 
##  8   111 
##  9   105 
## 10   116 
## # ℹ 581 more rows
no_obesidad<-telde[telde$OBCENT_ATP=="No","CADERA"]
no_obesidad
## # A tibble: 439 × 1
##    CADERA
##     <dbl>
##  1     89
##  2    106
##  3    105
##  4    104
##  5    100
##  6     95
##  7     97
##  8    102
##  9    102
## 10    100
## # ℹ 429 more rows
ks.test(si_obesidad$CADERA,"pnorm",mean(si_obesidad$CADERA),sd(si_obesidad$CADERA))
## Warning in ks.test.default(si_obesidad$CADERA, "pnorm",
## mean(si_obesidad$CADERA), : ties should not be present for the
## Kolmogorov-Smirnov test
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  si_obesidad$CADERA
## D = 0.11989, p-value = 8.372e-08
## alternative hypothesis: two-sided
ks.test(no_obesidad$CADERA,"pnorm",mean(no_obesidad$CADERA,na.rm = T),sd(no_obesidad$CADERA,na.rm = T))
## Warning in ks.test.default(no_obesidad$CADERA, "pnorm",
## mean(no_obesidad$CADERA, : ties should not be present for the
## Kolmogorov-Smirnov test
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  no_obesidad$CADERA
## D = 0.056948, p-value = 0.1167
## alternative hypothesis: two-sided

#En la prueba k-s los p-valores son menores a 0.05, por lo que rechazamos la hipotesis de normalidad, #es decir el perimetro de la cadera no tiene distribucion normal segun padecimiento de obesidad #Teniendo en cuenta este resultado, comparar los gurpos mediante sus valores promedios puede ser muy #poco adecuado y como no sigue una distribución normal, el test de la t de Student puede no ser válido.

#En este caso resulta conveniente realizar la comparación mediante un test no parametrico, en este caso #podemos utilizar el test de Wilcoxon-Man Whitney para muestras independientes, pero antes es necesario #probar la homocedasticidad de Varianzas #Para ello utilizaremos el test de levene

#Establecimiento de la hipótesis

#\(H_0\): La varianza del perimetro de la cadera entre los pacientes que padecen y no padecen obesidad son iguales #\(H_1\):La varianza del perimetro de la cadera entre los pacientes que padecen y no padecen obesidad no son iguales.

#Se observa que el p-valor(0.1167)es mayor a 0.05, no podemos rechazar la Ho, por lo que existe evidencia de que las varianzas #del perimetro de cadera de los grupos son homocedasticos

#Procedemos a realizar el test de Wilcoxon-Man Whitney para muestras independientes

#Segun el gráfico de cajas, donde se observa que perimetro de cadera es mayor en personas obesas, se establece la siguiente #hipotesis siguiente:

#\(H_0\)> La mediana del perimetro de la cadera es igual para el grupo que padece y no padece obesidad #\(H_1\)> La mediana del perimetro de la cadera es diferente para el grupo que padece y no padece obesidad

wilcox.test(CADERA~OBCENT_ATP,data = telde)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  CADERA by OBCENT_ATP
## W = 20985, p-value < 2.2e-16
## alternative hypothesis: true location shift is not equal to 0

#Como el p-valor es menor que el nivel de significancia, podemos decir que existe evidencia significativa para concluir que la #mediana del perimetro de cadera entre los pacientes que padecen y no padecen obesidad son diferentes.

#e) Seleccionar con R, una submuestra de tamaño n=100, con algunas de las variables del archivo original.

set.seed(1234)
telde$ID<-1:nrow(telde)
muestra<-sample(1:nrow(telde),100,replace = F)
muestra
##   [1] 1018 1004  623  905  645  934  400  900   98  103  726  602  326   79  974
##  [16]  884  270  382  184  574    4 1023  661  552  212  952  195  996  511  479
##  [31]  605  634  901  578  510  687  424  379  980  816  108  131  343   41  627
##  [46]  740  840  928  298  811  258  629 1017  182  305  358  696  307  902  976
##  [61]  221  736  561  313  136  794  145  959  123  776  234  608  495  534  803
##  [76]  297  208  989  854  569  522  918  248  365  665  643  595  434  757  760
##  [91]  218  727  838  508  276  169   71  573  864 1030
telde_m100<-subset(telde,ID%in%muestra,select=c("CADERA","OBCENT_ATP"))
telde_m100
## # A tibble: 100 × 2
##    CADERA OBCENT_ATP
##     <dbl> <fct>     
##  1    103 Sí        
##  2    102 No        
##  3    112 Sí        
##  4    104 Sí        
##  5    100 Sí        
##  6     96 Sí        
##  7    111 Sí        
##  8    103 No        
##  9    100 Sí        
## 10     80 No        
## # ℹ 90 more rows