1. Fundamentos: ¿Qué es la Correlación?

Antes de calcular cualquier coeficiente, es fundamental que los estudiantes comprendan visualmente qué es la correlación.


2. Caso de Estudio (Medicina Clínica)

Para ilustrar ambos cálculos, usaremos un pequeño conjunto de datos (\(n=5\)) que relaciona la edad de pacientes con su nivel de colesterol LDL (en mg/dL).

Paciente Edad (X) Colesterol LDL (Y)
1 45 140
2 50 155
3 60 160
4 65 180
5 70 175

3. Coeficiente de Correlación de Pearson (r)

3.1 Objetivo de Aprendizaje

Al finalizar esta sección, el estudiante será capaz de calcular e interpretar el coeficiente de correlación de Pearson (r) para evaluar una relación lineal.

3.2 Explicación Concisa

El coeficiente de Pearson (r) varía de -1 a +1.

  • \(r = +1\): Correlación lineal positiva perfecta.
  • \(r = -1\): Correlación lineal negativa perfecta.
  • \(r = 0\): Ausencia de correlación lineal.

La fórmula es: \[r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}}\]

3.3 Ejemplo Aplicado: Cálculo Manual

Paso 1: Calcular las medias (\(\bar{x}, \bar{y}\))

  • \(\bar{x} = (45 + 50 + 60 + 65 + 70) / 5 = 290 / 5 = 58\) años
  • \(\bar{y} = (140 + 155 + 160 + 180 + 175) / 5 = 810 / 5 = 162\) mg/dL

Paso 2: Tabla de desviaciones y productos cruzados

Esta tabla es esencial para organizar el cálculo manual.

\(x_i\) \(y_i\) \((x_i - \bar{x})\) \((y_i - \bar{y})\) \((x_i - \bar{x})(y_i - \bar{y})\) \((x_i - \bar{x})^2\) \((y_i - \bar{y})^2\)
45 140 -13 -22 286 169 484
50 155 -8 -7 56 64 49
60 160 2 -2 -4 4 4
65 180 7 18 126 49 324
70 175 12 13 156 144 169
Suma 0 0 620 430 1030

Paso 3: Aplicar la fórmula

  • Numerador: \(\sum (x_i - \bar{x})(y_i - \bar{y}) = 620\)
  • Denominador: \(\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2} = \sqrt{430 \times 1030} = \sqrt{442900} \approx 665.51\)
  • \(r = \frac{620}{665.51} \approx 0.9316\)

3.4 Resumen (Pearson)

El valor \(r \approx 0.93\) indica una correlación lineal positiva muy fuerte entre la edad y el nivel de colesterol LDL en esta muestra.


4. Coeficiente de Correlación de Spearman (\(\rho\))

4.1 Objetivo de Aprendizaje

Al finalizar esta sección, el estudiante será capaz de calcular e interpretar el coeficiente de correlación de Spearman (\(\rho\)) para evaluar una relación monotónica.

4.2 Explicación Concisa

El coeficiente de Spearman (rho, \(\rho\)) es conceptualmente el coeficiente de Pearson calculado sobre los rangos de los datos. También varía de -1 a +1. Se utiliza cuando:

  1. Los datos son ordinales.
  2. Los datos continuos no siguen una distribución normal.
  3. Se sospecha una relación no lineal pero sí monotónica (ej. curvilínea).
  4. Existen outliers que distorsionan a Pearson.

La fórmula (para cuando no hay empates) es: \[\rho = 1 - \frac{6 \sum d_i^2}{n(n^2 - 1)}\] Donde \(d_i\) es la diferencia entre los rangos de X e Y para cada individuo.

4.3 Ejemplo Aplicado: Cálculo Manual

Paso 1: Asignar rangos a X (Edad) e Y (Colesterol)

Nota: El paciente 5 (70 años) tiene el 4º rango de colesterol (175), mientras que el paciente 4 (65 años) tiene el 5º (180).

\(x_i\) \(y_i\) Rango de X (\(R_x\)) Rango de Y (\(R_y\)) \(d_i = (R_x - R_y)\) \(d_i^2\)
45 140 1 1 0 0
50 155 2 2 0 0
60 160 3 3 0 0
65 180 4 5 -1 1
70 175 5 4 1 1
Suma 0 2

Paso 2: Calcular \(\sum d_i^2\)

  • \(\sum d_i^2 = 0 + 0 + 0 + 1 + 1 = 2\)

Paso 3: Aplicar la fórmula de Spearman

  • \(n = 5\)
  • \(n(n^2 - 1) = 5(5^2 - 1) = 5(24) = 120\)
  • \(\rho = 1 - \frac{6 \times 2}{120} = 1 - \frac{12}{120} = 1 - 0.1 = 0.90\)

4.4 Resumen (Spearman)

El valor \(\rho = 0.90\) indica una correlación monotónica positiva muy fuerte. Los valores de Pearson (0.93) y Spearman (0.90) son cercanos porque la relación en estos datos es fuertemente lineal, con solo una ligera desviación del orden.


5. Implementación en R

5.1 Objetivo de Aprendizaje

El estudiante será capaz de utilizar la función cor() en R para calcular eficientemente las correlaciones de Pearson y Spearman.

5.2 Explicación y Código

R simplifica enormemente este proceso. La función principal es cor(). El argumento clave es method:

  • method = "pearson" (por defecto)
  • method = "spearman"

El siguiente código R define los datos y ejecuta ambos cálculos.

# 1. Definir los datos del ejemplo clínico
edad <- c(45, 50, 60, 65, 70)
colesterol <- c(140, 155, 160, 180, 175)

# 2. Calcular Correlación de Pearson
# method = "pearson" es el default, pero es bueno ser explícito
cor_pearson <- cor(edad, colesterol, method = "pearson")
print(paste("Correlación de Pearson (r):", round(cor_pearson, 6)))
## [1] "Correlación de Pearson (r): 0.93162"
# 3. Calcular Correlación de Spearman
cor_spearman <- cor(edad, colesterol, method = "spearman")
print(paste("Correlación de Spearman (rho):", round(cor_spearman, 6)))
## [1] "Correlación de Spearman (rho): 0.9"
# 4. Verificación pedagógica: Spearman es Pearson sobre los rangos
rank_x <- rank(edad)
rank_y <- rank(colesterol)
cor_spearman_manual_R <- cor(rank_x, rank_y, method = "pearson")
print(paste("Verificación de Spearman (Pearson de rangos):", round(cor_spearman_manual_R, 6)))
## [1] "Verificación de Spearman (Pearson de rangos): 0.9"

La salida de R confirma exactamente nuestros cálculos manuales.


Correlación de Pearson con la variable puntaje_C y edad

A continuación, se presenta el código R para calcular el coeficiente de correlación de Pearson (r) entre las variables edad y puntaje_C de la base de datos CAP_modif.

1. Carga de Librerías

# Instalar paquetes si no los tiene
# install.packages("readxl")

library(readxl)


# 2. Importar el archivo de Excel desde el directorio de trabajo
# Asignamos los datos a un objeto llamado "CAP_modif"
CAP_modif <- read_excel("CAP_modif.xlsx")

list.files()
##  [1] "Anova_Generica.R"                                       
##  [2] "CAP_modif.xlsx"                                         
##  [3] "Comparación de Proporciones en Ciencias de la Salud.Rmd"
##  [4] "rsconnect"                                              
##  [5] "Tutorial-Chi-Cuadrado.html"                             
##  [6] "Tutorial-Regresion-Lineal-Simple.html"                  
##  [7] "Tutorial Chi Cuadrado.Rmd"                              
##  [8] "Tutorial Regresion Lineal Simple.Rmd"                   
##  [9] "Tutorial_-Inferencia_para_una_proporción.html"          
## [10] "Tutorial_-Inferencia_para_una_proporción_bis.html"      
## [11] "Tutorial_ Inferencia_para_una_proporción_bis.Rmd"       
## [12] "Tutorial_ANOVA.html"                                    
## [13] "Tutorial_ANOVA.Rmd"                                     
## [14] "Tutorial_ANOVA_files"                                   
## [15] "Tutorial_Comparacion_de_Medias.Rmd"                     
## [16] "Tutorial_Correlaciones.html"                            
## [17] "Tutorial_Correlaciones.Rmd"                             
## [18] "Tutorial_Correlaciones_files"                           
## [19] "Tutorial_Inferencia_para_dos-o-mas_proporciones.html"   
## [20] "Tutorial_Inferencia_para_dos-o-mas_proporciones.Rmd"    
## [21] "Tutorial_inferencia_para_dos_medias.html"               
## [22] "Tutorial_inferencia_para_dos_medias.Rmd"                
## [23] "Tutorial_Inferencia_para_una_proporcion.html"           
## [24] "Tutorial_Inferencia_para_una_proporción.html"           
## [25] "Tutorial_Inferencia_para_una_proporcion.Rmd"            
## [26] "Tutorial_McNemar.html"                                  
## [27] "Tutorial_McNemar.Rmd"

2. Exploración Visual (Paso Pedagógico Esencial)

Antes de calcular cualquier coeficiente, es fundamental que los estudiantes visualicen la relación. Esto permite detectar no linealidades, outliers o grupos que el coeficiente ‘r’ por sí solo no mostraría.

— 2. Exploración Visual (Diagrama de Dispersión) —

# Un scatterplot es el primer paso obligatorio.
plot(
  x = CAP_modif$edad,
  y = CAP_modif$puntaje_C,
  main = "Diagrama de Dispersión: Edad vs. Puntaje C",
  xlab = "Edad (años)",
  ylab = "Puntaje C (unidades)",
  pch = 19, # Símbolo de punto sólido
  col = "blue"
)

# (Opcional) Añadir una línea de tendencia simple (regresión lineal)
# Esto ayuda a visualizar la dirección de la relación lineal.
abline(lm(puntaje_C ~ edad, data = CAP_modif), col = "red")

3. Cálculo de la Correlación de Pearson

En R, el método preferido no es solo cor(), sino cor.test(), ya que esta última función nos proporciona el valor p y el intervalo de confianza del coeficiente, lo cual es esencial para la inferencia estadística.

# --- 3. Cálculo de Correlación de Pearson (Método recomendado) ---

# Usamos la función cor.test().
# La sintaxis de fórmula (y ~ x) es clara: puntaje_C en función de edad.
# Especificamos method = "pearson" (aunque es el default).
# data = CAP_modif nos permite referirnos a las columnas por su nombre.

resultado_pearson <- cor.test(
  ~ puntaje_C + edad,
  data = CAP_modif,
  method = "pearson"
)

# Imprimimos los resultados completos
print("Resultados del Test de Correlación de Pearson:")
## [1] "Resultados del Test de Correlación de Pearson:"
print(resultado_pearson)
## 
##  Pearson's product-moment correlation
## 
## data:  puntaje_C and edad
## t = -3.0796, df = 513, p-value = 0.002184
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.21858544 -0.04889309
## sample estimates:
##        cor 
## -0.1347269

4. Interpretación de la Salida

La salida de cor.test() es la parte más importante para la interpretación bioestadística.

# --- 4. Interpretación de la Salida ---

# La salida de 'print(resultado_pearson)' nos da:

# 1. 't' y 'df': El valor del estadístico t y los grados de libertad (n-2).
#    (En nuestro ejemplo: t = 0.54019, df = 18)

# 2. 'p-value': El valor p. Es la probabilidad de observar una correlación
#    tan fuerte (o más) que la calculada, si la correlación verdadera
#    en la población fuera cero (Hipótesis Nula).
#    (Ejemplo: p-value = 0.596)
#    * Si p < 0.05, se rechaza la H0 -> "La correlación es estadísticamente significativa".
#    * Si p >= 0.05, no se rechaza la H0 -> "No hay evidencia de correlación significativa".

# 3. '95 percent confidence interval': El IC al 95% para el coeficiente 'r'.
#    (Ejemplo: -0.328 a 0.544)
#    * Si el intervalo de confianza INCLUYE el 0, el resultado NO es
#      estadísticamente significativo (coherente con el p-value).
#    * Si el intervalo NO incluye el 0, SÍ es significativo.

# 4. 'sample estimates (cor)': El valor del coeficiente de correlación 'r'
#    (Ejemplo: cor = 0.126)
#    * cercano a 0: débil
#    * cercano a -1 o 1: fuerte

# --- Extracción de valores específicos (Opcional avanzado) ---
# Se puede acceder a los valores individuales así:
cat("\n--- Interpretación Resumida ---\n")
## 
## --- Interpretación Resumida ---
cat(paste("Coeficiente r:", round(resultado_pearson$estimate, 3), "\n"))
## Coeficiente r: -0.135
cat(paste("Valor p:", round(resultado_pearson$p.value, 3), "\n"))
## Valor p: 0.002

Resumen de la Secuencia Pedagógica:

Correlación de Pearson con la variable puntaje_A y edad

Usaremos Spearman, ya que nuestra variable de actitud es ordinal y no podemos asumir normalidad. Sin embargo, como ejercicio, vamos a inspeccionar los datos para ver si el uso de Pearson hubiera sido una opción viable.

# --- Código para verificar supuestos ---
# (Asumiendo que los datos están cargados en CAP_modif)

# 1. Histograma del Puntaje de Actitud (¿Es normal?)
hist(CAP_modif$puntaje_A,
     main = "Histograma del Puntaje A (Actitudes)",
     xlab = "Puntaje (5-25)",
     col = "lightblue")

# (Probablemente saldrá sesgado)

# 2. Histograma de la Edad (¿Es normal?)
hist(CAP_modif$edad,
     main = "Histograma de Edad",
     xlab = "Edad (años)",
     col = "lightgreen")

# (También puede estar sesgado)

# 3. Scatterplot (¿La relación es LINEAL?)
plot(CAP_modif$edad, CAP_modif$puntaje_A,
     main = "Relación entre Edad y Actitud",
     xlab = "Edad",
     ylab = "Puntaje de Actitud")

# (Buscar patrones lineales vs. curvos)

# --- Cálculo Definitivo (Spearman) ---
# Dado que 'puntaje_A' es ordinal, procedemos con Spearman.
resultado_spearman <- cor.test(
  ~ puntaje_A + edad,
  data = CAP_modif,
  method = "spearman"
)

print("Resultados de la Correlación de Spearman (recomendada):")
## [1] "Resultados de la Correlación de Spearman (recomendada):"
print(resultado_spearman)
## 
##  Spearman's rank correlation rho
## 
## data:  puntaje_A and edad
## S = 21693884, p-value = 0.2865
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.0470535

El Resultado Principal (El Coeficiente \(\rho\))

## sample estimates:
##       rho 
## 0.0470535
  1. Dirección: Es positivo (mayor que 0), lo que sugiere que a medida que una variable aumenta, la otra tiende a aumentar (o viceversa).

  2. Fuerza: El valor 0.047 es extremadamente débil. Está muy cerca de 0.En resumen (rho): se encontró una correlación positiva casi inexistente o trivial entre las dos variables.

Visualización de tres o más variables

Cuando desea visualizar la correlación entre tres o más variables simultáneamente, un diagrama de dispersión simple (plot) no es suficiente. Necesita una matriz de gráficos.

Las dos opciones principales son: la matriz de diagramas de dispersión (la más exploratoria) y el correlograma (la más resumida). Verifica

Opción 1: Matriz de Diagramas de Dispersión (SPLOM)

Esta es la mejor opción para explorar visualmente los datos. Crea una cuadrícula que muestra el diagrama de dispersión de cada variable contra cada otra variable.

Ventaja: Permite ver la forma de la relación (lineal, curva) y detectar outliers.

A. Con R Base (Función pairs) Esta es la forma más rápida y no requiere librerías.

variables_grafico <- CAP_modif[, c("puntaje_C", "puntaje_A", "puntaje_P")]
# La función pairs() crea la matriz
pairs(variables_grafico,
      main = "Matriz de Diagramas de Dispersión (SPLOM)",
      pch = 19, # Puntos sólidos
      col = "blue")

Cómo leerlo:

  • La diagonal muestra los nombres de las variables.

  • El gráfico en la fila “puntaje_C” y la columna “puntaje_A” es el scatter plot de plot(puntaje_A, puntaje_C).

B. Con Librería GGally (Recomendado) Esta opción es mucho más informativa, ya que combina los diagramas de dispersión, la distribución de cada variable (histogramas) y los coeficientes de correlación en un solo gráfico.

# --- Opción 1B: Matriz Avanzada con GGally ---

# 1. Instalar (solo una vez)
#install.packages("GGally")

# 2. Cargar librería
library(GGally)

# 3. Crear el gráfico
# ggpairs() es la función estrella
ggpairs(variables_grafico,
        title = "Matriz de Correlacion Avanzada (ggpairs)")

Cómo leerlo:

  • Diagonal: Muestra la distribución (densidad o histograma) de cada variable.

  • Triangular Inferior: Muestra los diagramas de dispersión (scatter plots) de cada par.

  • Triangular Superior: Muestra el valor del coeficiente de correlación (por defecto, Pearson).

Opción 2: Correlograma (Heatmap de Coeficientes)

Esta opción no muestra los datos brutos. En su lugar, calcula el coeficiente de correlación (r o \(\rho\)) para cada par y muestra esos números en una matriz de color (heatmap).

Ventaja: Es un resumen excelente si solo le interesa la fuerza y dirección de la correlación, especialmente si tiene muchas variables.

# 1. Instalar (solo una vez)
#install.packages("corrplot")

# 2. Cargar librería
library(corrplot)

# 3. Calcular la Matriz de Correlación
# Nota: Usamos method = "spearman" porque 'puntaje_A' es ordinal.
# 'use = "complete.obs"' maneja valores perdidos (NA)
matriz_cor <- cor(variables_grafico, 
                  method = "spearman", 
                  use = "complete.obs")

# 4. Graficar el Correlograma
corrplot(matriz_cor,
         method = "number", # Mostrar el coeficiente numérico
         type = "upper",    # Mostrar solo la triangular superior
         title = "Correlograma de Coeficientes (Spearman)",
         mar = c(0,0,1,0)) # Ajustar margen para el título

Conclusión:

  • Use la Opción 1 (SPLOM) primero para explorar sus datos.

  • Use la Opción 2 (Correlograma) después para reportar el resumen de las correlaciones.