Resumen

El cáncer de mama constituye una de las principales causas de mortalidad femenina a nivel mundial. En este estudio se presenta un análisis cuantitativo reproducible utilizando R y R Markdown, con el objetivo de demostrar la aplicación de técnicas estadísticas descriptivas, correlacionales (Pearson y Spearman) y comparativas (ANOVA) sobre un conjunto de datos tabular público utilizado como prueba de concepto metodológica. Este enfoque permite integrar la redacción científica con el análisis estadístico, facilitando la transparencia, trazabilidad y replicabilidad de los resultados.

Palabras clave: cáncer de mama, análisis estadístico, Pearson, Spearman, ANOVA, R Markdown.

Introducción

El diagnóstico oportuno del cáncer de mama es un factor clave para mejorar tasas de supervivencia y reducir la mortalidad. En los últimos años, la investigación cuantitativa ha incorporado herramientas computacionales para analizar datos de manera reproducible, transparente y verificable. En este contexto, R y R Markdown permiten integrar en un solo documento la preparación de datos, el análisis estadístico, la visualización y la discusión de resultados, fortaleciendo la calidad metodológica y la comunicación científica.

En el marco del Módulo de Seminario de Investigación I del Doctorado en Ciencias de Datos, se elabora un artículo científico reproducible que incorpora la metodología FINER–PICOT previamente desarrollada. Debido a limitaciones de tiempo y recursos computacionales, el análisis empírico se realiza sobre un conjunto tabular público (Breast Cancer Wisconsin Diagnostic), dejando como trabajo futuro la extensión a imágenes de mamografía (CBIS-DDSM o MIAS) con aprendizaje por transferencia.

Metodología FINER–PICOT y pregunta de investigación

La pregunta guía (Tarea 3) es:

¿Cuál es el nivel de eficacia diagnóstica, en términos de sensibilidad y especificidad, de un modelo basado en aprendizaje por transferencia con redes neuronales convolucionales (CNN) para la clasificación de lesiones benignas y malignas en mamografías digitales?

Nota metodológica: En esta prueba de concepto, la variable de diagnóstico (benigno/maligno) se analiza utilizando variables morfológicas tabulares como aproximación cuantitativa.

Diseño del estudio

Enfoque: cuantitativo.

Tipo: correlacional y comparativo.

Técnicas: estadística descriptiva, correlación de Pearson, correlación de Spearman y ANOVA.

Fuente de datos: conjunto público Breast Cancer Wisconsin (Diagnostic) (tabular).

Resultados Carga y preparación de los datos

# Fuente pública en CSV
url <- "https://raw.githubusercontent.com/Shikhadubey123/Breast-Cancer-Wisconsin-Diagnostic-R-Language/master/Breast%20Cancer%20Dataset.csv"
datos <- read.csv(url)

# Normalizar nombres de columnas
names(datos) <- tolower(gsub("\\.", "_", names(datos)))

# Ver nombres para confirmar que existen diagnosis y radius_mean
names(datos)[1:15]
##  [1] "id"                     "diagnosis"              "radius_mean"           
##  [4] "texture_mean"           "perimeter_mean"         "area_mean"             
##  [7] "smoothness_mean"        "compactness_mean"       "concavity_mean"        
## [10] "concave_points_mean"    "symmetry_mean"          "fractal_dimension_mean"
## [13] "radius_se"              "texture_se"             "perimeter_se"
# Preparación: convertir diagnosis a factor y crear variable numérica para correlación
datos <- datos %>%
  mutate(
    diagnosis = as.factor(diagnosis),
    diagnosis_num = ifelse(diagnosis == "M", 1, 0)
  )

# Vista rápida
glimpse(datos)
## Rows: 569
## Columns: 34
## $ id                      <int> 842302, 842517, 84300903, 84348301, 84358402, …
## $ diagnosis               <fct> M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M…
## $ radius_mean             <dbl> 17.990, 20.570, 19.690, 11.420, 20.290, 12.450…
## $ texture_mean            <dbl> 10.38, 17.77, 21.25, 20.38, 14.34, 15.70, 19.9…
## $ perimeter_mean          <dbl> 122.80, 132.90, 130.00, 77.58, 135.10, 82.57, …
## $ area_mean               <dbl> 1001.0, 1326.0, 1203.0, 386.1, 1297.0, 477.1, …
## $ smoothness_mean         <dbl> 0.11840, 0.08474, 0.10960, 0.14250, 0.10030, 0…
## $ compactness_mean        <dbl> 0.27760, 0.07864, 0.15990, 0.28390, 0.13280, 0…
## $ concavity_mean          <dbl> 0.30010, 0.08690, 0.19740, 0.24140, 0.19800, 0…
## $ concave_points_mean     <dbl> 0.14710, 0.07017, 0.12790, 0.10520, 0.10430, 0…
## $ symmetry_mean           <dbl> 0.2419, 0.1812, 0.2069, 0.2597, 0.1809, 0.2087…
## $ fractal_dimension_mean  <dbl> 0.07871, 0.05667, 0.05999, 0.09744, 0.05883, 0…
## $ radius_se               <dbl> 1.0950, 0.5435, 0.7456, 0.4956, 0.7572, 0.3345…
## $ texture_se              <dbl> 0.9053, 0.7339, 0.7869, 1.1560, 0.7813, 0.8902…
## $ perimeter_se            <dbl> 8.589, 3.398, 4.585, 3.445, 5.438, 2.217, 3.18…
## $ area_se                 <dbl> 153.40, 74.08, 94.03, 27.23, 94.44, 27.19, 53.…
## $ smoothness_se           <dbl> 0.006399, 0.005225, 0.006150, 0.009110, 0.0114…
## $ compactness_se          <dbl> 0.049040, 0.013080, 0.040060, 0.074580, 0.0246…
## $ concavity_se            <dbl> 0.05373, 0.01860, 0.03832, 0.05661, 0.05688, 0…
## $ concave_points_se       <dbl> 0.015870, 0.013400, 0.020580, 0.018670, 0.0188…
## $ symmetry_se             <dbl> 0.03003, 0.01389, 0.02250, 0.05963, 0.01756, 0…
## $ fractal_dimension_se    <dbl> 0.006193, 0.003532, 0.004571, 0.009208, 0.0051…
## $ radius_worst            <dbl> 25.38, 24.99, 23.57, 14.91, 22.54, 15.47, 22.8…
## $ texture_worst           <dbl> 17.33, 23.41, 25.53, 26.50, 16.67, 23.75, 27.6…
## $ perimeter_worst         <dbl> 184.60, 158.80, 152.50, 98.87, 152.20, 103.40,…
## $ area_worst              <dbl> 2019.0, 1956.0, 1709.0, 567.7, 1575.0, 741.6, …
## $ smoothness_worst        <dbl> 0.1622, 0.1238, 0.1444, 0.2098, 0.1374, 0.1791…
## $ compactness_worst       <dbl> 0.6656, 0.1866, 0.4245, 0.8663, 0.2050, 0.5249…
## $ concavity_worst         <dbl> 0.71190, 0.24160, 0.45040, 0.68690, 0.40000, 0…
## $ concave_points_worst    <dbl> 0.26540, 0.18600, 0.24300, 0.25750, 0.16250, 0…
## $ symmetry_worst          <dbl> 0.4601, 0.2750, 0.3613, 0.6638, 0.2364, 0.3985…
## $ fractal_dimension_worst <dbl> 0.11890, 0.08902, 0.08758, 0.17300, 0.07678, 0…
## $ x                       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ diagnosis_num           <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…

Estadística descriptiva

# Resumen de variables seleccionadas
datos %>%
  select(diagnosis, radius_mean, texture_mean, perimeter_mean, area_mean) %>%
  summary()
##  diagnosis  radius_mean      texture_mean   perimeter_mean     area_mean     
##  B:357     Min.   : 6.981   Min.   : 9.71   Min.   : 43.79   Min.   : 143.5  
##  M:212     1st Qu.:11.700   1st Qu.:16.17   1st Qu.: 75.17   1st Qu.: 420.3  
##            Median :13.370   Median :18.84   Median : 86.24   Median : 551.1  
##            Mean   :14.127   Mean   :19.29   Mean   : 91.97   Mean   : 654.9  
##            3rd Qu.:15.780   3rd Qu.:21.80   3rd Qu.:104.10   3rd Qu.: 782.7  
##            Max.   :28.110   Max.   :39.28   Max.   :188.50   Max.   :2501.0
# Tabla de medias y desviación estándar por diagnóstico
tabla_desc <- datos %>%
  group_by(diagnosis) %>%
  summarise(
    n = n(),
    radius_mean_media = mean(radius_mean, na.rm = TRUE),
    radius_mean_sd = sd(radius_mean, na.rm = TRUE),
    area_mean_media = mean(area_mean, na.rm = TRUE),
    area_mean_sd = sd(area_mean, na.rm = TRUE)
  )

tabla_desc
## # A tibble: 2 × 6
##   diagnosis     n radius_mean_media radius_mean_sd area_mean_media area_mean_sd
##   <fct>     <int>             <dbl>          <dbl>           <dbl>        <dbl>
## 1 B           357              12.1           1.78            463.         134.
## 2 M           212              17.5           3.20            978.         368.

Correlación (Pearson y Spearman)

# Correlación entre una variable morfológica y el diagnóstico (codificado 0/1)
cor_pearson <- cor.test(datos$radius_mean, datos$diagnosis_num, method = "pearson")
cor_spearman <- cor.test(datos$radius_mean, datos$diagnosis_num, method = "spearman")

cor_pearson
## 
##  Pearson's product-moment correlation
## 
## data:  datos$radius_mean and datos$diagnosis_num
## t = 25.436, df = 567, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6891867 0.7662463
## sample estimates:
##       cor 
## 0.7300285
cor_spearman
## 
##  Spearman's rank correlation rho
## 
## data:  datos$radius_mean and datos$diagnosis_num
## S = 8204367, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##      rho 
## 0.732785

ANOVA (comparación de medias)

# Comparar radius_mean entre grupos (B vs M)
anova_model <- aov(radius_mean ~ diagnosis, data = datos)
summary(anova_model)
##              Df Sum Sq Mean Sq F value Pr(>F)    
## diagnosis     1   3759    3759     647 <2e-16 ***
## Residuals   567   3295       6                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Visualización

# Boxplot por diagnóstico
ggplot(datos, aes(x = diagnosis, y = radius_mean)) +
  geom_boxplot() +
  labs(
    title = "Distribución de radius_mean según diagnóstico",
    x = "Diagnóstico (B = Benigno, M = Maligno)",
    y = "Radius Mean"
  )

Discusión

Los resultados sugieren asociaciones estadísticamente significativas entre variables morfológicas y el diagnóstico. La correlación (Pearson y Spearman) indica una relación consistente entre el radio medio del tumor y la malignidad (diagnosis codificado). Además, el análisis de varianza (ANOVA) evidencia diferencias en las medias de radius_mean entre los grupos benigno y maligno, reforzando la utilidad de estas variables como indicadores cuantitativos en el análisis de cáncer de mama.

Este trabajo, aunque basado en datos tabulares, valida un flujo metodológico reproducible y coherente para investigación cuantitativa en salud, integrando análisis y redacción en un solo documento.

Conclusiones

La analítica reproducible en R Markdown permite integrar datos, métodos, resultados y redacción científica en un flujo transparente.

Pearson y Spearman permiten evaluar asociaciones entre variables numéricas y el diagnóstico (codificado).

ANOVA confirma diferencias en medias entre grupos diagnósticos, aportando evidencia cuantitativa.

Como trabajo futuro, se plantea extender el análisis hacia mamografías digitales mediante aprendizaje por transferencia con CNN.

Referencias

UCI Machine Learning Repository. Breast Cancer Wisconsin (Diagnostic).

Documentación de R Markdown / knitr.