Análisis exploratorio de datos (EDA)

Como parte del plan de análisis, en primer lugar se realizó un análisis exploratorio de todas las variable, obteniendose conteos y frecuencias de las variables. Con el objetivo de hacer un análisis descriptivo.

Se trabajo con la siguiente base de datos:

library(readxl)
DBDRAEDNAr <- read_excel("C:/Users/fidel/OneDrive - CINVESTAV/PROYECTO MDatos/TRABAJOS/Dra Edna Sanchez Noguez Entrega 12-08/DBDRAEDNA2.xlsx")
View(DBDRAEDNAr)

names(DBDRAEDNAr)
##  [1] "nombre"          "casubtipo"       "camasociado"     "grado"          
##  [5] "metodo"          "Hallazgomast"    "formamast"       "margenmast"     
##  [9] "densidadmast"    "formault"        "margenult"       "ecogenicidad"   
## [13] "fenomno"         "calcificaciones" "BIRADS"
str(DBDRAEDNAr)
## tibble [80 × 15] (S3: tbl_df/tbl/data.frame)
##  $ nombre         : chr [1:80] "ANA LAURA CANO RAMIREZ" "MARIA ELENA GONZALEZ GUTIERREZ" "LUZ MARIA RAMIREZ CADENA" "SANGRA ANGELICA LIMON MOMERO" ...
##  $ casubtipo      : chr [1:80] "CARCINOMA DUCTAL INFILTRANTE" "CARCINOMA DUCTAL INFILTRANTE SPE" "CARCINOMA DUCTAL INFILTRANTE SPE" "CARCINOMA DUCTAL INFILTRANTE" ...
##  $ camasociado    : chr [1:80] NA "CARCINOMA DUCTAL IN SITU, DE BAJO GRADO, DE TIPO CRIBIFORME Y PAPILAR" NA "CARCINOMA LOBULILLAR" ...
##  $ grado          : chr [1:80] "III" "I" "III" "I" ...
##  $ metodo         : chr [1:80] "Ultrasonido" "Masto / Ultra" "Masto / Ultra" "Ultrasonido" ...
##  $ Hallazgomast   : chr [1:80] "NÓDULO" "DISTORSIÓN + NÓDULO" "DISTORSIÓN POSQX + CALCIFICACIONES / NODULO  MASTO Y ULTRA INTRADUCTAL" "NÓDULO" ...
##  $ formamast      : chr [1:80] NA "IRREGULAR" "IRREGULAR" NA ...
##  $ margenmast     : chr [1:80] NA "OSCURECIDO" "ESPICULADO" NA ...
##  $ densidadmast   : chr [1:80] NA "ISODENSO" "ALTA" NA ...
##  $ formault       : chr [1:80] "IRREGULAR" "IRREGULAR" "IRREGULAR" "IRREGULAR" ...
##  $ margenult      : chr [1:80] "ANGULADO" "ANGULADO" "LOBULADO" "ANGULADO" ...
##  $ ecogenicidad   : chr [1:80] "HETEROGÉNEO" "HIPOECOICO" "HETEROGÉNEO" "HIPOECOICO" ...
##  $ fenomno        : chr [1:80] "NO" "SOMBRA" "NO" "SOMBRA" ...
##  $ calcificaciones: chr [1:80] NA NA "PLEOMORFICAS" NA ...
##  $ BIRADS         : chr [1:80] "4" "4B" NA "4C" ...
#Trabajamos con estos paquetes 

library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.7     ✔ dplyr   1.0.9
## ✔ tidyr   1.2.0     ✔ stringr 1.4.0
## ✔ readr   2.1.2     ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(magrittr)
## 
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
## 
##     set_names
## The following object is masked from 'package:tidyr':
## 
##     extract
library(gtsummary)
## #BlackLivesMatter
library(dlookr)
## 
## Attaching package: 'dlookr'
## The following object is masked from 'package:magrittr':
## 
##     extract
## The following object is masked from 'package:tidyr':
## 
##     extract
## The following object is masked from 'package:base':
## 
##     transform
library(gtable)
library(gt)



dbedna<-DBDRAEDNAr %>%  select(casubtipo,camasociado, grado, metodo, Hallazgomast, formamast,       
                  margenmast, densidadmast, formault, margenult, ecogenicidad,   
                  fenomno,calcificaciones,BIRADS)

dbedna %>% gt()
casubtipo camasociado grado metodo Hallazgomast formamast margenmast densidadmast formault margenult ecogenicidad fenomno calcificaciones BIRADS
CARCINOMA DUCTAL INFILTRANTE NA III Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HETEROGÉNEO NO NA 4
CARCINOMA DUCTAL INFILTRANTE SPE CARCINOMA DUCTAL IN SITU, DE BAJO GRADO, DE TIPO CRIBIFORME Y PAPILAR I Masto / Ultra DISTORSIÓN + NÓDULO IRREGULAR OSCURECIDO ISODENSO IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra DISTORSIÓN POSQX + CALCIFICACIONES / NODULO MASTO Y ULTRA INTRADUCTAL IRREGULAR ESPICULADO ALTA IRREGULAR LOBULADO HETEROGÉNEO NO PLEOMORFICAS NA
CARCINOMA DUCTAL INFILTRANTE CARCINOMA LOBULILLAR I Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 4C
CARCINOMA DUCTAL INFILTRANTE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Mastografia DISTORSIÓN NA NA NA IRREGULAR NA NA SOMBRA NA 4C
CARCINOMA DUCTAL INFILTRANTE DUCTAL IN SITU II Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HETEROGÉNEO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA III Ultrasonido NÓDULO NA NA NA IRREGULAR ESPICULADO COMPLEJA SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA I Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO COMPLEJA SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE CARCINOMA IN SITU: DE ALTO GRADO CON NECROSIS TIPO "COMEDO" EN 10%. III Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 4c
CARCINOMA DUCTAL INFILTRANTE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA III Ultrasonido NÓDULO NA NA NA IRREGULAR INDEFINIDO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR INDEFINIDO HIPOECOICO SOMBRA NA 4C
CARCINOMA DUCTAL INFILTRANTE NA III Masto / Ultra NÓDULO NA NA NA IRREGULAR INDEFINIDO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra DISTORSIÓN + NÓDULO NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra DISTORSIÓN + NÓDULO + CALCIFICACIONES NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA LINEALES FINAS 5
CARCINOMA DUCTAL INFILTRANTE NA II Masto / Ultra NÓDULO OVOIDEO CIRCUNSCRITO ISODENSO OVOIDEO MICROLOBULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO + CALCIFICACIONES OVOIDEO OSCURECIDO ISODENSO IRREGULAR ANGULADO HIPOECOICO SOMBRA PALOMITA EN MAIZ 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA I Mastografia ASIMETRIA FOCAL + CALCIFICACIONES NA NA NA NA NA NA NA AMORFAS 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO NO NA 5
CARCINOMA DUCTAL INFILTRANTE NA II Ultrasonido NÓDULO NA NA NA OVOIDEO MICROLOBULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE CARCINOMA IN SITU DE BAJO GRADO III Masto / Ultra NÓDULO CIRCUNSCRITO OVOIDEO HIPERDENSO OVALADO CIRCUNSCRITO HIPOECOICO SOMBRA NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA III Ultrasonido NÓDULO NA NA NA OVOIDEO MICROLOBULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA I Masto / Ultra DISTORSIÓN + NÓDULO + CALCIFICACIONES NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA LINEALES FINAS 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Mastografia CALCIFICACIONES NA NA NA NA NA NA NA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE SPE NA I Ultrasonido NÓDULO NA NA NA OVALADO MICROLOBULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO+ CALCIFICACIONES OVOIDEO OSCURECIDO HIPERDENSO OVALADO MICROLOBULADO HIPOECOICO NO PLEOMORFICAS 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA I Masto / Ultra NÓDULO+ CALCIFICACIONES IRREGULAR ESPICULADO HIPERDENSO IRREGULAR ESPICULADO HIPOECOICO SOMBRA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra ASIMETRIA FOCAL+ NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE NA II Masto / Ultra ASIMETRIA FOCAL+ NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA II Mastografia CALCIFICACIONES NA NA NA NA NA NA NA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE NA II Ultrasonido NÓDULO NA NA NA OVALADO MICROLOBULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra NÓDULO IRREGULAR OSCURECIDO HIPERDENSO IRREGULAR ANGULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE CARCINOMA DUCTAL IN SITU, COMEDOCARCINOMA Y SOLIDO III Ultrasonido NÓDULO NA NA NA OVALADO MICROLOBULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA I Ultrasonido NÓDULO NA NA NA OVALADO ANGULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE CARCINOMA DUCTAL IN SITU, COMEDOCARCINOMA Y SOLIDO I Ultrasonido NÓDULO NA NA NA OVALADO ANGULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA III Ultrasonido NÓDULO NA NA NA OVALADO MICROLOBULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO OVOIDEO OSCURECIDO HIPERDENSO IRREGULAR ANGULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE CARCINOMA DUCTAL IN SITU CON PATRÓN SÓLIDO II Masto / Ultra NÓDULO OVOIDEO IRREGULAR ISODENSO IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO + CALCIFICACIONES OVOIDEO OSCURECIDO HIPERDENSO IRREGULAR ANGULADO HIPOECOICO SOMBRA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra NÓDULO + CALCIFICACIONES OVOIDEO ESPICULADO HIPERDENSO IRREGULAR ANGULADO HIPOECOICO SOMBRA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE NA I Masto / Ultra DISTORSIÓN + NÓDULO IRREGULAR ESPICULADO HIPERDENSO irregular ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO OVOIDEO IRREGULAR ISODENSO IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA I Ultrasonido NÓDULO NA NA NA OVALADO MICROLOBULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA OVALADO ANGULADO HIPOECOICO NO NA 4C
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra DISTORSIÓN + NÓDULO IRREGULAR ESPICULADO HIPERDENSO IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Mastografia CALCIFICACIONES NA NA NA NA NA NA NA PLEOMORFICAS 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA I Ultrasonido NÓDULO NA NA NA OVALADO CIRCUNSCRITO ISOECOICO NO NA 4A
CARCINOMA DUCTAL INFILTRANTE SPE NA I Masto / Ultra DISTORSIÓN + NÓDULO IRREGULAR ESPICULADO HIPERDENSO IRREGULAR ANGULADO HIPOECOICO SOMBRA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE SPE CARCINOMA DUCTAL IN SITU TIPO COMEDO II Ultrasonido NÓDULO NA NA NA IRREGULAR ESPICULADO HIPOECOICO NO NA 5
CARCINOMA DUCTAL INFILTRANTE SPE CARCINAMO DUCTAL IN SITU DE BAJO GRADO I Masto / Ultra DISTORSIÓN + NÓDULO IRREGULAR ESPICULADO HIPERDENSO IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE CARCINAMO DUCTAL IN SITU DE ALTO GRADO III Masto / Ultra NÓDULO OVOIDEO MICROLOBULADOS HIPERDENSO IRREGULAR MICROLOBULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR MICROLOBULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA II Mastografia CALCIFICACIONES NA NA NA NA NA NA NA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE SPE NA I Ultrasonido NÓDULO NA NA INTRADUCTAL OVOIDEO MICROLOBULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra DISTORSIÓN + NÓDULO IRREGULAR ESPICULADO HIPERDENSO IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA I Masto / Ultra NÓDULO OVOIDEO ESPICULADO HIPERDENSO OVOIDEO ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO OVOIDEO OSCURECIDO HIPERDENSO IRREGULAR MICROLOBULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA III Ultrasonido NÓDULO NA NA NA IRREGULAR MICROLOBULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO OVOIDEO CIRCUNSCRITO HIPERDENSO OVOIDEO ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA III Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO NO NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra ASIMETRIA FOCAL + CALCIFICACIONES NA NA NA IRREGULAR ANGULADO HIPOECOICO SOMBRA PLEOMORFICAS 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR MICROLOBULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA I Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO NO NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra NÓDULO OVOIDEO OSCURECIDO ISODENSO OVOIDEO MICROLOBULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO OVOIDEO CIRCUNSCRITO HIPERDENSO OVOIDEO MICROLOBULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE CARCINOMA DUCTAL IN SITU TIPO COMEDO III Masto / Ultra NÓDULO OVOIDEO OSCURECIDO ISODENSO OVOIDEO MICROLOBULADO HIPOECOICO SOMBRA NA 4B
CARCINOMA DUCTAL INFILTRANTE SPE NA III Ultrasonido NÓDULO NA NA NA IRREGULAR MICROLOBULADO HIPOECOICO NO NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO NO NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA I Masto / Ultra NÓDULO OVOIDEO OSCURECIDO ISODENSO OVOIDEO ANGULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA I Masto / Ultra ASIMETRIA FOCAL+ NÓDULO NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra NÓDULO OVOIDEO OSCURECIDO ISODENSO OVOIDEO MICROLOBULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Masto / Ultra ASIMETRIA FOCAL+ NÓDULO NA NA NA IRREGULAR ANGULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA III Masto / Ultra NÓDULO OVOIDEO CIRCUNSCRITO HIPERDENSO OVOIDEO MICROLOBULADO HIPOECOICO SOMBRA NA 5
CARCINOMA DUCTAL INFILTRANTE SPE NA II Ultrasonido NÓDULO NA NA NA IRREGULAR ESPICULADO HIPOECOICO SOMBRA NA 5

Figuras

Cada una de las figuras esta representado por la frecuencia, además se muestra una tabla con el conteo.

Figura 1. Tipo de CA de mama

#Paquetes

library(ggplot2)
library(ggpubr)
library(gt)
theme_set(theme_pubr())

###barplo subtipo cancer de mama

dbcasubtipo <- dbedna %>%
  group_by(casubtipo) %>%
  summarise(counts = n()) %>% 
  mutate(prop = round(counts*100/sum(counts), 1))

dbcasubtipo %>% gt()
casubtipo counts prop
CARCINOMA DUCTAL INFILTRANTE 13 16.2
CARCINOMA DUCTAL INFILTRANTE SPE 67 83.8
ggplot(dbcasubtipo, aes(x = casubtipo, y = prop)) +
  geom_bar(fill = "#0099b4", stat = "identity") +
  geom_text(aes(label = prop), vjust = -0.3, fontface=2, size= 6) + 
  theme_pubclean() + ylab("%") + xlab ("")+
  theme(text = element_text(size = 16, face="bold"), axis.text = element_text(size = 16, face="bold"),
        legend.text = element_text(size = 12),) 

Figura 2. Gráfico de circular de los subtipos de CA de mama

#primero se hacen las proporciones
catipo<- dbedna %>% drop_na(camasociado)

df <- catipo %>%
  group_by(camasociado) %>% 
  summarise(counts = n())

df %>% gt
camasociado counts
CARCINAMO DUCTAL IN SITU DE ALTO GRADO 1
CARCINAMO DUCTAL IN SITU DE BAJO GRADO 1
CARCINOMA DUCTAL IN SITU CON PATRÓN SÓLIDO 1
CARCINOMA DUCTAL IN SITU TIPO COMEDO 2
CARCINOMA DUCTAL IN SITU, COMEDOCARCINOMA Y SOLIDO 2
CARCINOMA DUCTAL IN SITU, DE BAJO GRADO, DE TIPO CRIBIFORME Y PAPILAR 1
CARCINOMA IN SITU DE BAJO GRADO 1
CARCINOMA IN SITU: DE ALTO GRADO CON NECROSIS TIPO "COMEDO" EN 10%. 1
CARCINOMA LOBULILLAR 1
DUCTAL IN SITU 1
df <- df %>%
  arrange(desc(camasociado)) %>%
  mutate(prop = round(counts*100/sum(counts), 1),
         lab.ypos = cumsum(prop) - 0.5*prop)
head(df, 4)
## # A tibble: 4 × 4
##   camasociado                                              counts  prop lab.ypos
##   <chr>                                                     <int> <dbl>    <dbl>
## 1 "DUCTAL IN SITU"                                              1   8.3     4.15
## 2 "CARCINOMA LOBULILLAR"                                        1   8.3    12.5 
## 3 "CARCINOMA IN SITU: DE ALTO GRADO CON NECROSIS TIPO \"C…      1   8.3    20.8 
## 4 "CARCINOMA IN SITU DE BAJO GRADO"                             1   8.3    29.1
ggplot(df , aes(x = "", y = prop, fill = camasociado )) +
  geom_bar(width = 1, stat = "identity", color = "white") +
  geom_text(aes(y = lab.ypos, label = prop), color = "white",
            fontface=2, size= 6)+
  coord_polar("y", start = 0)+
  ggpubr::fill_palette("jco")+
  theme_void() + labs(fill = "Tipos de CA mama asociados") + 
  theme(text = element_text(size = 12, face="bold"))

Figura 3. Grado Histológico

### grado

dbgrado <- dbedna %>%
  group_by(grado) %>%
  summarise(counts = n()) %>% 
  mutate(prop = round(counts*100/sum(counts), 1))


dbgrado %>% gt
grado counts prop
I 19 23.8
II 36 45.0
III 25 31.2
ggplot(dbgrado, aes(x = grado, y = prop)) +
  geom_bar(fill = "#EFC000FF", stat = "identity") +
  geom_text(aes(label = prop), vjust = -0.3, fontface=2, size= 6) + 
  theme_pubclean() + ylab("%") + xlab ("Grado histológico")+
  theme(text = element_text(size = 16, face="bold"), axis.text = element_text(size = 16, face="bold"),
        legend.text = element_text(size = 12),)

Figura 4.

#fig 4 : Método
dbmetod <- dbedna %>%
  group_by(metodo) %>%
  summarise(counts = n()) %>% 
  mutate(prop = round(counts*100/sum(counts), 1))

dbmetod %>% gt
metodo counts prop
Masto / Ultra 38 47.5
Mastografia 6 7.5
Ultrasonido 36 45.0
ggplot(dbmetod, aes(x = metodo, y = prop)) +
  geom_bar(fill = "#CD534CFF", stat = "identity") +
  geom_text(aes(label = prop), vjust = -0.3, fontface=2, size= 6) + 
  theme_pubclean() + ylab("%") + xlab ("Método")+
  theme(text = element_text(size = 16, face="bold"), axis.text = element_text(size = 16, face="bold"),
        legend.text = element_text(size = 12),)

Figura 5. Hallazgo tipo histológico

#figura 5 : Hallazgomast y grado histologico
str(dbedna)
## tibble [80 × 14] (S3: tbl_df/tbl/data.frame)
##  $ casubtipo      : chr [1:80] "CARCINOMA DUCTAL INFILTRANTE" "CARCINOMA DUCTAL INFILTRANTE SPE" "CARCINOMA DUCTAL INFILTRANTE SPE" "CARCINOMA DUCTAL INFILTRANTE" ...
##  $ camasociado    : chr [1:80] NA "CARCINOMA DUCTAL IN SITU, DE BAJO GRADO, DE TIPO CRIBIFORME Y PAPILAR" NA "CARCINOMA LOBULILLAR" ...
##  $ grado          : chr [1:80] "III" "I" "III" "I" ...
##  $ metodo         : chr [1:80] "Ultrasonido" "Masto / Ultra" "Masto / Ultra" "Ultrasonido" ...
##  $ Hallazgomast   : chr [1:80] "NÓDULO" "DISTORSIÓN + NÓDULO" "DISTORSIÓN POSQX + CALCIFICACIONES / NODULO  MASTO Y ULTRA INTRADUCTAL" "NÓDULO" ...
##  $ formamast      : chr [1:80] NA "IRREGULAR" "IRREGULAR" NA ...
##  $ margenmast     : chr [1:80] NA "OSCURECIDO" "ESPICULADO" NA ...
##  $ densidadmast   : chr [1:80] NA "ISODENSO" "ALTA" NA ...
##  $ formault       : chr [1:80] "IRREGULAR" "IRREGULAR" "IRREGULAR" "IRREGULAR" ...
##  $ margenult      : chr [1:80] "ANGULADO" "ANGULADO" "LOBULADO" "ANGULADO" ...
##  $ ecogenicidad   : chr [1:80] "HETEROGÉNEO" "HIPOECOICO" "HETEROGÉNEO" "HIPOECOICO" ...
##  $ fenomno        : chr [1:80] "NO" "SOMBRA" "NO" "SOMBRA" ...
##  $ calcificaciones: chr [1:80] NA NA "PLEOMORFICAS" NA ...
##  $ BIRADS         : chr [1:80] "4" "4B" NA "4C" ...
#piechart2

df2 <- dbedna %>%
  group_by(Hallazgomast) %>% 
  summarise(counts = n())
df2
## # A tibble: 10 × 2
##    Hallazgomast                                                           counts
##    <chr>                                                                   <int>
##  1 ASIMETRIA FOCAL + CALCIFICACIONES                                           2
##  2 ASIMETRIA FOCAL+ NÓDULO                                                     4
##  3 CALCIFICACIONES                                                             4
##  4 DISTORSIÓN                                                                  1
##  5 DISTORSIÓN + NÓDULO                                                         7
##  6 DISTORSIÓN + NÓDULO + CALCIFICACIONES                                       2
##  7 DISTORSIÓN POSQX + CALCIFICACIONES / NODULO  MASTO Y ULTRA INTRADUCTAL      1
##  8 NÓDULO                                                                     54
##  9 NÓDULO + CALCIFICACIONES                                                    3
## 10 NÓDULO+ CALCIFICACIONES                                                     2
df2 <- df2 %>%
  arrange(desc(Hallazgomast)) %>%
  mutate(prop = round(counts*100/sum(counts), 1),
         lab.ypos = cumsum(prop) - 0.5*prop)
head(df2, 4)
## # A tibble: 4 × 4
##   Hallazgomast                                             counts  prop lab.ypos
##   <chr>                                                     <int> <dbl>    <dbl>
## 1 NÓDULO+ CALCIFICACIONES                                       2   2.5     1.25
## 2 NÓDULO + CALCIFICACIONES                                      3   3.8     4.4 
## 3 NÓDULO                                                       54  67.5    40.0 
## 4 DISTORSIÓN POSQX + CALCIFICACIONES / NODULO  MASTO Y UL…      1   1.2    74.4
ggplot(df2 , aes(x = "", y = prop, fill = Hallazgomast)) +
  geom_bar(width = 1, stat = "identity", color = "white") +
  geom_text(aes(y = lab.ypos, label = prop), color = "white",
            fontface=2, size= 4)+
  coord_polar("y", start = 0)+
  ggpubr::fill_palette("jco")+
  theme_void() + labs(fill = "Tipos de CA mama asociados") + 
  theme(text = element_text(size = 12, face="bold"))

df2 %>% gt()
Hallazgomast counts prop lab.ypos
NÓDULO+ CALCIFICACIONES 2 2.5 1.25
NÓDULO + CALCIFICACIONES 3 3.8 4.40
NÓDULO 54 67.5 40.05
DISTORSIÓN POSQX + CALCIFICACIONES / NODULO MASTO Y ULTRA INTRADUCTAL 1 1.2 74.40
DISTORSIÓN + NÓDULO + CALCIFICACIONES 2 2.5 76.25
DISTORSIÓN + NÓDULO 7 8.8 81.90
DISTORSIÓN 1 1.2 86.90
CALCIFICACIONES 4 5.0 90.00
ASIMETRIA FOCAL+ NÓDULO 4 5.0 95.00
ASIMETRIA FOCAL + CALCIFICACIONES 2 2.5 98.75

Tablas

Las tablas forman parte además del análisis desriptivo de las variables, del análisis estadístico. Para estas tablas, se utilizó la prueba de Chi cuadrada de Pearson o exacta de Fisher, para determinar diferencias entre las variables y los grados histologicos. La tabla 1 es entre variables que se relacionan con estudio de mastografia y la tabla 2 con el ultrasonido

Tabla 1. Variables de la mastografía

masto<-DBDRAEDNAr %>% select(grado, Hallazgomast, formamast,       
                      margenmast, densidadmast,calcificaciones, BIRADS) %>%  tbl_summary (by= grado) %>%
  add_p() %>% add_overall()

masto
## Warning: The `fmt_missing()` function is deprecated and will soon be removed
## * Use the `sub_missing()` function instead
Characteristic Overall, N = 801 I, N = 191 II, N = 361 III, N = 251 p-value2
Hallazgomast 0.056
ASIMETRIA FOCAL + CALCIFICACIONES 2 (2.5%) 1 (5.3%) 0 (0%) 1 (4.0%)
ASIMETRIA FOCAL+ NÓDULO 4 (5.0%) 1 (5.3%) 3 (8.3%) 0 (0%)
CALCIFICACIONES 4 (5.0%) 0 (0%) 4 (11%) 0 (0%)
DISTORSIÓN 1 (1.3%) 0 (0%) 1 (2.8%) 0 (0%)
DISTORSIÓN + NÓDULO 7 (8.8%) 4 (21%) 3 (8.3%) 0 (0%)
DISTORSIÓN + NÓDULO + CALCIFICACIONES 2 (2.5%) 1 (5.3%) 1 (2.8%) 0 (0%)
DISTORSIÓN POSQX + CALCIFICACIONES / NODULO MASTO Y ULTRA INTRADUCTAL 1 (1.3%) 0 (0%) 0 (0%) 1 (4.0%)
NÓDULO 54 (68%) 11 (58%) 23 (64%) 20 (80%)
NÓDULO + CALCIFICACIONES 3 (3.8%) 0 (0%) 1 (2.8%) 2 (8.0%)
NÓDULO+ CALCIFICACIONES 2 (2.5%) 1 (5.3%) 0 (0%) 1 (4.0%)
formamast 0.022
CIRCUNSCRITO 1 (3.6%) 0 (0%) 0 (0%) 1 (7.7%)
IRREGULAR 9 (32%) 5 (71%) 3 (38%) 1 (7.7%)
OVOIDEO 18 (64%) 2 (29%) 5 (62%) 11 (85%)
Unknown 52 12 28 12
margenmast 0.3
CIRCUNSCRITO 4 (14%) 0 (0%) 1 (12%) 3 (23%)
ESPICULADO 9 (32%) 5 (71%) 3 (38%) 1 (7.7%)
IRREGULAR 2 (7.1%) 0 (0%) 1 (12%) 1 (7.7%)
MICROLOBULADOS 1 (3.6%) 0 (0%) 0 (0%) 1 (7.7%)
OSCURECIDO 11 (39%) 2 (29%) 3 (38%) 6 (46%)
OVOIDEO 1 (3.6%) 0 (0%) 0 (0%) 1 (7.7%)
Unknown 52 12 28 12
densidadmast 0.7
ALTA 1 (3.4%) 0 (0%) 0 (0%) 1 (7.7%)
HIPERDENSO 18 (62%) 5 (62%) 4 (50%) 9 (69%)
INTRADUCTAL 1 (3.4%) 1 (12%) 0 (0%) 0 (0%)
ISODENSO 9 (31%) 2 (25%) 4 (50%) 3 (23%)
Unknown 51 11 28 12
calcificaciones 0.5
AMORFAS 1 (6.7%) 1 (25%) 0 (0%) 0 (0%)
LINEALES FINAS 2 (13%) 1 (25%) 1 (17%) 0 (0%)
PALOMITA EN MAIZ 1 (6.7%) 0 (0%) 0 (0%) 1 (20%)
PLEOMORFICAS 11 (73%) 2 (50%) 5 (83%) 4 (80%)
Unknown 65 15 30 20
BIRADS 0.8
4 1 (1.3%) 0 (0%) 0 (0%) 1 (4.2%)
4A 1 (1.3%) 1 (5.3%) 0 (0%) 0 (0%)
4B 14 (18%) 4 (21%) 6 (17%) 4 (17%)
4c 1 (1.3%) 0 (0%) 0 (0%) 1 (4.2%)
4C 19 (24%) 5 (26%) 9 (25%) 5 (21%)
5 43 (54%) 9 (47%) 21 (58%) 13 (54%)
Unknown 1 0 0 1
1 n (%)
2 Fisher's exact test

Tabla 2. Variables del ultrasonido

us<-DBDRAEDNAr %>% select(grado,formault, margenult, ecogenicidad, fenomno) %>%  tbl_summary (by= grado) %>%
  add_p() %>% add_overall()

us
## Warning: The `fmt_missing()` function is deprecated and will soon be removed
## * Use the `sub_missing()` function instead
Characteristic Overall, N = 801 I, N = 191 II, N = 361 III, N = 251 p-value2
formault 0.15
irregular 1 (1.3%) 1 (5.6%) 0 (0%) 0 (0%)
IRREGULAR 51 (68%) 9 (50%) 26 (81%) 16 (64%)
OVALADO 11 (15%) 5 (28%) 2 (6.2%) 4 (16%)
OVOIDEO 12 (16%) 3 (17%) 4 (12%) 5 (20%)
Unknown 5 1 4 0
margenult 0.2
ANGULADO 29 (39%) 9 (50%) 13 (42%) 7 (28%)
CIRCUNSCRITO 2 (2.7%) 1 (5.6%) 0 (0%) 1 (4.0%)
ESPICULADO 18 (24%) 5 (28%) 10 (32%) 3 (12%)
INDEFINIDO 3 (4.1%) 0 (0%) 1 (3.2%) 2 (8.0%)
LOBULADO 1 (1.4%) 0 (0%) 0 (0%) 1 (4.0%)
MICROLOBULADO 21 (28%) 3 (17%) 7 (23%) 11 (44%)
Unknown 6 1 5 0
ecogenicidad 0.3
COMPLEJA 2 (2.7%) 1 (5.6%) 0 (0%) 1 (4.0%)
HETEROGÉNEO 3 (4.1%) 0 (0%) 1 (3.2%) 2 (8.0%)
HIPOECOICO 68 (92%) 16 (89%) 30 (97%) 22 (88%)
ISOECOICO 1 (1.4%) 1 (5.6%) 0 (0%) 0 (0%)
Unknown 6 1 5 0
fenomno >0.9
NO 29 (39%) 7 (39%) 13 (41%) 9 (36%)
SOMBRA 46 (61%) 11 (61%) 19 (59%) 16 (64%)
Unknown 5 1 4 0
1 n (%)
2 Fisher's exact test; Pearson's Chi-squared test

Análisis de regresión logística

Para el análisis de regresión lógistica primero se acomodarón las variables tal y como se muestra en el siguiente código:

Se dicotomizo la variable de grado. Redefiniendose grado I y II, como 0 y grado III como 1, siendo esta última la variable predictora (se creo una nueva columna, denominada:altogrado, la cual será usada como variable dependiente en los posteriores analisisis.

#ANALÍSIS DE REGRESIÓN LÓGISTICA

str(DBDRAEDNAr)
## tibble [80 × 15] (S3: tbl_df/tbl/data.frame)
##  $ nombre         : chr [1:80] "ANA LAURA CANO RAMIREZ" "MARIA ELENA GONZALEZ GUTIERREZ" "LUZ MARIA RAMIREZ CADENA" "SANGRA ANGELICA LIMON MOMERO" ...
##  $ casubtipo      : chr [1:80] "CARCINOMA DUCTAL INFILTRANTE" "CARCINOMA DUCTAL INFILTRANTE SPE" "CARCINOMA DUCTAL INFILTRANTE SPE" "CARCINOMA DUCTAL INFILTRANTE" ...
##  $ camasociado    : chr [1:80] NA "CARCINOMA DUCTAL IN SITU, DE BAJO GRADO, DE TIPO CRIBIFORME Y PAPILAR" NA "CARCINOMA LOBULILLAR" ...
##  $ grado          : chr [1:80] "III" "I" "III" "I" ...
##  $ metodo         : chr [1:80] "Ultrasonido" "Masto / Ultra" "Masto / Ultra" "Ultrasonido" ...
##  $ Hallazgomast   : chr [1:80] "NÓDULO" "DISTORSIÓN + NÓDULO" "DISTORSIÓN POSQX + CALCIFICACIONES / NODULO  MASTO Y ULTRA INTRADUCTAL" "NÓDULO" ...
##  $ formamast      : chr [1:80] NA "IRREGULAR" "IRREGULAR" NA ...
##  $ margenmast     : chr [1:80] NA "OSCURECIDO" "ESPICULADO" NA ...
##  $ densidadmast   : chr [1:80] NA "ISODENSO" "ALTA" NA ...
##  $ formault       : chr [1:80] "IRREGULAR" "IRREGULAR" "IRREGULAR" "IRREGULAR" ...
##  $ margenult      : chr [1:80] "ANGULADO" "ANGULADO" "LOBULADO" "ANGULADO" ...
##  $ ecogenicidad   : chr [1:80] "HETEROGÉNEO" "HIPOECOICO" "HETEROGÉNEO" "HIPOECOICO" ...
##  $ fenomno        : chr [1:80] "NO" "SOMBRA" "NO" "SOMBRA" ...
##  $ calcificaciones: chr [1:80] NA NA "PLEOMORFICAS" NA ...
##  $ BIRADS         : chr [1:80] "4" "4B" NA "4C" ...
DBDRAEDNAr<-DBDRAEDNAr %>% mutate(altogrado=recode(grado,`I` = 0, `II` = 0,
                                                 `III` = 1))

Se diseño un modelo con las variables relacionadas con el ultrasonido: forma ultrasonido, margenes, ecogenecidad y fenomno

encotrandose lo siguiente en el analisis multivariado, basado en graficos de bosque o forest plot:

library(finalfit)

DBDRAEDNAr$altogrado = as.numeric(DBDRAEDNAr$altogrado)

#todos
explanatory = c("formault","margenult","ecogenicidad","fenomno")
dependent = "altogrado"

DBDRAEDNAr %>% or_plot(dependent, explanatory, breaks = c(-0.5, 0, 10))
## Waiting for profiling to be done...
## Waiting for profiling to be done...
## Waiting for profiling to be done...

Tabla. Regresión logística mutivariable y univariable

El análisis multivariable se muestra en la siguiente forma

explanatory_vars <- c("formault", "margenult", "ecogenicidad", "fenomno")


explanatory_vars %>% str_c("altogrado ~ ", .)
## [1] "altogrado ~ formault"     "altogrado ~ margenult"   
## [3] "altogrado ~ ecogenicidad" "altogrado ~ fenomno"
## run a regression with all variables of interest 
mv_reg <- explanatory_vars %>%  ## begin with vector of explanatory column names
  str_c(collapse = "+") %>%     ## combine all names of the variables of interest separated by a plus
  str_c("altogrado ~ ", .) %>%    ## combine the names of variables of interest with outcome in formula style
  glm(family = "binomial",      ## define type of glm as logistic,
      data = DBDRAEDNAr)          ## define your dataset

## choose a model using forward selection based on AIC
## you can also do "backward" or "both" by adjusting the direction
final_mv_reg <- mv_reg %>%
  step(direction = "forward", trace = FALSE)

mv_tab_base <- final_mv_reg %>% 
  broom::tidy(exponentiate = TRUE, conf.int = TRUE) %>%  ## get a tidy dataframe of estimates 
  mutate(across(where(is.numeric), round, digits = 2))          ## round 

## show results table of final regression 
mv_tab <- tbl_regression(final_mv_reg, exponentiate = TRUE)

#Looping multiple univariate models
library(broom)
models <- explanatory_vars %>%       # begin with variables of interest
  str_c("altogrado ~ ", .) %>%         # combine each variable into formula ("outcome ~ variable of interest")
  
  # iterate through each univariate formula
  map(                               
    .f = ~glm(                       # pass the formulas one-by-one to glm()
      formula = as.formula(.x),      # within glm(), the string formula is .x
      family = "binomial",           # specify type of glm (logistic)
      data = DBDRAEDNAr)) %>%          # dataset
  
  # tidy up each of the glm regression outputs from above
  map(
    .f = ~tidy(
      .x, 
      exponentiate = TRUE,           # exponentiate 
      conf.int = TRUE)) %>%          # return confidence intervals
  
  # collapse the list of regression outputs in to one data frame
  bind_rows() %>% 
  
  # round all numeric columns
  mutate(across(where(is.numeric), round, digits = 2))



## for each explanatory variable
univ_tab_base <- explanatory_vars %>% 
  map(.f = 
        ~{DBDRAEDNAr %>%                ## begin with linelist
            group_by(altogrado) %>%     ## group data set by outcome
            count(.data[[.x]]) %>%    ## produce counts for variable of interest
            pivot_wider(              ## spread to wide format (as in cross-tabulation)
              names_from = altogrado,
              values_from = n) %>% 
            drop_na(.data[[.x]]) %>%         ## drop rows with missings
            rename("variable" = .x) %>%      ## change variable of interest column to "variable"
            mutate(variable = as.character(variable))} ## convert to character, else non-dichotomous (categorical) variables come out as factor and cant be merged
  ) %>% 
  
  ## collapse the list of count outputs in to one data frame
  bind_rows() %>% 
  
  ## merge with the outputs of the regression 
  bind_cols(., models) %>% 
  
  ## only keep columns interested in 
  select(term, 2:3, estimate, conf.low, conf.high, p.value) %>% 
  
  ## round decimal places
  mutate(across(where(is.numeric), round, digits = 2))  
## Note: Using an external vector in selections is ambiguous.
## ℹ Use `all_of(.x)` instead of `.x` to silence this message.
## ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
univ_tab <- DBDRAEDNAr %>% 
  dplyr::select(explanatory_vars, altogrado) %>% ## select variables of interest
  tbl_uvregression(                         ## produce univariate table
    method = glm,                           ## define regression want to run (generalised linear model)
    y = altogrado,                            ## define outcome variable
    method.args = list(family = binomial),  ## define what type of glm want to run (logistic)
    exponentiate = TRUE                     ## exponentiate to produce odds ratios (rather than log odds)
  )
## Note: Using an external vector in selections is ambiguous.
## ℹ Use `all_of(explanatory_vars)` instead of `explanatory_vars` to silence this message.
## ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
## combine with univariate results 
tbl_merge(
  tbls = list(univ_tab, mv_tab),                          # combine
  tab_spanner = c("**univariable**", "**Multivariable**")) # set header names
Characteristic univariable Multivariable
N OR1 95% CI1 p-value OR1 95% CI1 p-value
formault 75
irregular
IRREGULAR 2,632,143 0.00, NA >0.9 9,162,969 0.00, NA >0.9
OVALADO 3,290,179 0.00, NA >0.9 6,321,910 0.00, NA >0.9
OVOIDEO 4,112,723 0.00, NA >0.9 4,519,034 0.00, NA >0.9
margenult 74
ANGULADO
CIRCUNSCRITO 3.14 0.11, 86.9 0.4 154,807,345 0.00, NA >0.9
ESPICULADO 0.63 0.12, 2.67 0.5 0.54 0.09, 2.61 0.5
INDEFINIDO 6.29 0.53, 148 0.2 5.02 0.39, 124 0.2
LOBULADO 18,095,983 0.00, NA >0.9 66,712,743 0.00, Inf >0.9
MICROLOBULADO 3.46 1.06, 12.1 0.044 7.31 1.48, 48.7 0.022
ecogenicidad 74
COMPLEJA
HETEROGÉNEO 2.00 0.04, 120 0.7 1.15 0.01, 94.4 >0.9
HIPOECOICO 0.48 0.02, 12.5 0.6 0.29 0.01, 8.25 0.4
ISOECOICO 0.00 >0.9 0.00 >0.9
fenomno 75
NO
SOMBRA 1.19 0.44, 3.29 0.7 2.46 0.60, 12.1 0.2
1 OR = Odds Ratio, CI = Confidence Interval