Aproximaciones de interpretación de correlaciones

Esta sección inicial se basa en el artículo titulado \(\text{"Thirteen Ways to Look at the Correlation Coefficient" de JOSEPH LEE RODGERS y W. ALAN NICEWANDER*}\). En dicho sección, se exploran diversas perspectivas para interpretar las correlaciones. A lo largo de esta sección, se expondrán estas interpretaciones, así como la aplicación práctica de las mismas.

1. Correlación como la estandarización de la covarianza

Correlación como la estandarización de la covarianza

Teoría

La covarianza y la correlación son medidas que ayudan a entender cómo dos variables están relacionadas entre sí. La covarianza se basa en calcular la suma de los productos cruzados de las variables centradas, sin ajustarse por la escala de las variables. Aunque la covarianza a menudo se pasa por alto en libros de introducción, la varianza (que no se pasa por alto) es en realidad un caso especial de la covarianza, es decir, la varianza es la covarianza de una variable consigo misma.

La covarianza de dos variables no tiene límites en poblaciones infinitas, y en una muestra tiene límites indeterminados y una interpretación complicada. Por lo tanto, la covarianza a menudo no es una medida descriptiva útil de la relación entre dos variables, porque su valor depende de las escalas de medición de X e Y.

El coeficiente de correlación es una versión escalada de la covarianza. Se calcula dividiendo la covarianza por las desviaciones estándar de las dos variables. Esto reescala la covarianza y la coloca en un intervalo entre -1 y +1. Por lo tanto, la interpretación de la correlación como una medida de la relación entre dos variables suele ser más manejable que la de la covarianza. Además, facilita la comparación entre diferentes correlaciones.

\(\ Demostración\)

\[\text{Cor(X,Y)} ≡\text{Cov}(X_{\text{estándar}}, Y_{\text{estándar}})\tag{1.1}\]

Partimos de

\[ \begin{equation} X_{\text{estándar}} = \frac{x - \bar{x}}{S_x} \\ Y_{\text{estándar}} = \frac{y - \bar{y}}{S_y} \end{equation}\tag{1.2} \]

Así:

\[\begin{equation} \begin{split} \text{Cov}(X_{\text{estándar}} Y_{\text{estándar}}) & ≡ \mathbb{E}[(X_{\text{estándar}})(Y_{\text{estándar}})] \\ & ≡ \mathbb{E}\left[\left(\frac{X - \bar{X}}{S_x}\right) \left(\frac{Y - \bar{Y}}{S_y}\right)\right] \\ & ≡ \mathbb{E}[(X - \bar{X})(Y - \bar{Y})] \cdot \frac{1}{S_xS_y} \\ & ≡ \mathbb{E}[XY - X\bar{Y} - \bar{X}Y + \bar{X}\bar{Y}]\cdot\frac{1}{S_xS_y} \\ & ≡ \left(\mathbb{E}[XY] - \mathbb{E}[X]\mathbb{E}[Y] - \mathbb{E}[X]\mathbb{E}[Y] + \mathbb{E}[X]\mathbb{E}[Y]\right) \cdot \frac{1}{S_xS_y} \\ & ≡ \frac{\mathbb{E}[XY] - \mathbb{E}[X]\mathbb{E}[Y]}{S_xS_y} \\ & ≡ \frac{\text{Cov}(X,Y)}{S_xS_y} \\ & ≡ \text{Cor}(X,Y)\hspace{2cm}\blacksquare \end{split} \end{equation}\]

\(\text{Parte practica}\)

data("iris")

# 1. Correlación como Covarianza Estandarizada


# Seleccionar las variables de interés
sepal_length <- iris$Sepal.Length
m1_ <- mean(sepal_length)
s1_ <- sd(sepal_length)
petal_width <- iris$Petal.Width
m2_ <- mean(petal_width)
s2_ <- sd(petal_width)

# Variables estandarizadas

stand_x <- (sepal_length - m1_)/s1_
stand_y <- (petal_width - m2_)/s2_

# Calcular la correlación entre las variables
correlation <- cor(sepal_length, petal_width)

# Calcular la covarianza entre las variables
covariance <- cov(stand_x, stand_y)

# Calcular la covarianza estandarizada (covarianza / (desviación estándar * desviación estándar))
#std_covariance <- covariance / (sd(sepal_length) * sd(petal_width))

# Imprimir los resultados
print(paste("Correlacion:", correlation))
## [1] "Correlacion: 0.817941126271576"
print(paste("Covarianza:", covariance))
## [1] "Covarianza: 0.817941126271576"

2. Correlación como pendiente estandarizada de la recta de regresión

Correlación como pendiente estandarizada de la recta de regresión

Teoría

La relación entre correlación y regresión se representa más fácilmente en

\[ r = b_{Y \cdot X}\left(\frac{S_{X}}{S_{Y}}\right) = b_{X \cdot Y}\left(\frac{S_{Y}}{S_{X}}\right) \tag{2.1} \]

donde \(b_{Y\cdot X}\), y \(b_{X\cdot Y}\) son las pendientes de las rectas de regresión para predecir \(Y\) a partir de \(X\) y \(X\) a partir de \(Y\), respectivamente. Aquí, la correlación se expresa como una función de la pendiente de cualquiera de las líneas de regresión y las desviaciones estándar de las dos variables. La relación de desviaciones estándar tiene el efecto de reescalar las unidades de la pendiente de regresión en unidades de la correlación. Así pues, la correlación es una pendiente normalizada. Una interpretación similar implica que la correlación es la pendiente de la línea de regresión estandarizada. Cuando estandarizamos las dos variables sin procesar, las desviaciones estándar se hacen unidad y la pendiente de la recta de regresión se convierte en la correlación. En este caso, el intercepto es 0, y la recta de regresión se expresa fácilmente como

\[ \hat{Z}_{Y}= rZ_{X}\tag{2.2} \]

De esta interpretación se desprende que la correlación reescala las unidades de la variable \(X\) estandarizada para predecir unidades de la variable \(Y\) estandarizada. Obsérvese que la pendiente de la regresión de \(z_{y}\) sobre \(z_{x}\) restringe la línea de regresión para que caiga entre las dos diagonales representadas en la región sombreada de la Figura 2. Las correlaciones positivas implican que la línea pasará por los cuadrantes primero y tercero. Las correlaciones positivas implican que la línea pasará por los cuadrantes primero y tercero; las correlaciones negativas implican que pasará por los cuadrantes segundo y cuarto. La regresión de \(z_{x}\) sobre \(z_{y}\), tiene el mismo ángulo con el eje \(Y\) que la regresión de \(z_{y}\) sobre \(z_{x}\) tiene con el eje \(X\), y caerá en la región no sombreada de la Figura 2, como se indica.

Demostración:

Partimos de la formula de la pendiente de una regresión es:

\[\hat\beta_{1} = \frac{S_{xy}}{S_{x}^2}\tag{2.3}\]

Entonces:

\[b_{xy} = \frac{S_{xy}}{S_{x}^2}\quad \wedge\quad b_{yx} = \frac{S_{yx}}{S_{y}^2}\tag{2.4}\]

\(\equiv\)

\[S_{xy} = b_{xy} \cdot S_{x}^2\quad \wedge\quad S_{yx} = b_{yx} \cdot S_{y}^2\tag{2.5}\]

Dado que \(S_{xy} = S_{yx}\quad y\quad r = \frac{S_{xy}}{S_{x} \cdot S_{y}}\), entonces:

\[ r = b_{Y \cdot X}\left(\frac{S_{X}}{S_{Y}}\right) = b_{X \cdot Y}\left(\frac{S_{Y}}{S_{X}}\right)\hspace{2cm}\blacksquare \]


Representación Geométrica

Se encontro un clip de tal forma que lo muestra geometricamente, para más información esta disponible el canal de StatCourses

Parte practica

# 2. Pendiente estandarizada de la línea de regresión entre dos variables y
# compararla con el coeficiente de correlación.

# Seleccionar las variables de interés
petal_length <- iris$Petal.Length
petal_width <- iris$Petal.Width

# Calcular el coeficiente de correlación
correlation <- cor(petal_length, petal_width)

# Calcular la pendiente de la línea de regresión
regression_slope <- correlation * (sd(petal_width) / sd(petal_length))

# Calcular la regresión lineal
regression <- lm(petal_width ~ petal_length)

# Obtener la pendiente de regresión
regression_slope_1 <- coef(regression)[2]

cor_slopr <- regression_slope*(sd(petal_length) / sd(petal_width))

# Imprimir los resultados
#rint(paste("Correlation:", correlation))
#print(paste('Correlation by Standardized Slope of Regression Line:', cor_slopr))
#print(paste("Standardized Slope of Regression Line:", regression_slope))
#print(paste("Regression Slope:", regression_slope_1))
#data.frame(core)

# Crear el gráfico de dispersión
# Crear el gráfico de dispersión
scatter_plot <- ggplot(iris, aes(x = petal_length, y = petal_width)) +
  geom_point() +
  geom_abline(intercept = 0, slope = regression_slope, color = "red", linetype = "dashed") +
  labs(title = "Relación entre Pendiente Estandarizada y Coeficiente de Correlación",
       x = "Longitud del Pétalo",
       y = "Ancho del Pétalo") +
  annotate("text", x = mean(iris$petal_length), y = mean(iris$petal_width),
           label = paste("Correlation =", round(correlation, 2),
                         "\nStandardized Slope =", round(regression_slope, 2)),
           color = "blue", size = 4, hjust = 0, vjust = 1)

# Crear la tabla con la información
result_table <- data.frame(
  Result = c("Correlation", "Correlation by Standardized Slope", "Standardized Slope", "Regression Slope"),
  Value = c(correlation, cor_slopr, regression_slope, regression_slope_1)
)

# Colocar el gráfico y la tabla uno al lado del otro
grid.arrange(scatter_plot, tableGrob(result_table), nrow = 2)

3. Correlación como la media geométrica de las dos pendientes de regresión

Correlación como la media geométrica de las dos pendientes de regresión

Teoría

La correlación también puede expresarse como una función simultánea de las dos pendientes de las rectas de regresión no normalizadas, \(b_{Y\cdot X}\) y \(b_{X\cdot Y}\). La función es, de hecho, la media geométrica, y representa la primera de varias interpretaciones de \(r\) como un tipo especial de media:

\[r = \pm \sqrt{b_{\text{Y} \cdot \text{X}} b_{\text{X} \cdot \text{Y}}}\tag{5.1} \]

Esta relación puede derivarse de la ecuación (3.1) multiplicando los términos segundo y tercero de la igualdad para obtener \(r^2\), cancelando las desviaciones típicas y sacando la raíz cuadrada.

Existe una extensión de esta interpretación que incluye la regresión multivariante. Dadas las matrices de coeficientes de regresión que relacionan dos conjuntos de variables, \(b_{\text{Y} \cdot \text{X}}\)” y “\(b_{\text{X} \cdot \text{Y}}\). las raíces cuadradas de los valores propios del producto de estas matrices son las correlaciones canónicas para los dos conjuntos de variables. Estos valores se reducen al coeficiente de correlación simple cuando hay una única variable \(X\) y una única variable \(Y\).

Parte practica

# Seleccionar las variables de interés
sepal_length <- iris$Sepal.Length
sepal_width <- iris$Sepal.Width

# Calcular las pendientes de las dos regresiones
regression_slope1 <- lm(sepal_width ~ sepal_length)$coefficients[2]
regression_slope2 <- lm(sepal_length ~ sepal_width)$coefficients[2]

# Calcular la correlación como la media geométrica de las pendientes
correlation <- sqrt(abs(regression_slope1 * regression_slope2))



# Imprimir el resultado
print(paste("Ccorrelación como la media geométria de las dos pendientes de regresion:", correlation))
## [1] "Ccorrelación como la media geométria de las dos pendientes de regresion: 0.117569784133002"
print(paste("Correaction:", cor(sepal_length,sepal_width)))
## [1] "Correaction: -0.117569784133002"

4. Correlación como la raíz cuadrada de la razón de dos varianzas (proporción de variabilidad explicada)

Correlación como la raíz cuadrada de la razón de dos varianzas (proporción de variabilidad explicada)

Teoría

A veces se critica la correlación por no tener una interpretación obvia para sus unidades. Esta crítica se mitiga elevando la correlación al cuadrado. El índice elevado al cuadrado suele denominarse coeficiente de determinación, y las unidades pueden interpretarse como la proporción de la varianza en una variable que se explica por las diferencias en la otra [véase Ozer (1985) para una discusión de varias interpretaciones diferentes del coeficiente de determinación]. Podemos dividir la suma total de cuadrados para \(Y\) \(SS_{TOT}\) en la suma de cuadrados debida a la regresión \(SS_{REG}\) y la suma de cuadrados debida al error \(SS_{ERR}\). La variabilidad de \(X\) explicada por las diferencias de \(Y\) es el cociente de \(SS_{REG}\) y \(SS_{TOT}\) y \(r\) es la raíz cuadrada de ese cociente.

\(r = \sqrt{\frac{\sum_{i=1}^n (y_i - \hat{y}_i)^2}{\sum_{i=1}^n (y_i - \bar{y})^2}} = \sqrt{\frac{SS_{REG}}{SS_{TOT}}}\tag{6.1}\)

Equivalentemente, el numerador y el denominador de esta ecuación pueden dividirse por \((N-1)^\frac{1}{2}\) y \(r\) se convierte en la raíz cuadrada de la relación de las varianzas (o la relación de las desviaciones estándar) de las variables predichas y observadas:

\[r = \sqrt{\frac{S^2_{\hat{Y}}}{S^2_{Y}}}=\frac{S^2_{\hat{Y}}}{S^2_{Y}}\]

Nótese que \(S^2_{\hat{Y}}\), es una estimación sesgada de \(\sigma^2_{\hat{Y}}\), mientras que \(S^2_{\hat{Y}}\) es insesgada). Esta interpretación es la que motivó las primeras conceptualizaciones de Pearson sobre el índice (véase Mulaik 1972, p. 4). La correlación como cociente de dos varianzas puede compararse con otra interpretación (debida a Galton) de la correlación como cociente de dos medias. Presentaremos esta interpretación en el apartado 13.

Parte practica

set.seed(12062023)

# Modelo
modelo <- lm(sepal_width ~ sepal_length)

# y Estimado
Y_estimado <- predict(modelo)

# SS_REG
Var_Y_Estimado <- sum((Y_estimado - sepal_width)^2)

# Vector de medias 
meanvector <- rep(mean(sepal_width), length(sepal_width))


Var_Y_Tot <- sum((iris$Sepal.Width - meanvector)^2)

cor_razon <- sqrt(Var_Y_Estimado/Var_Y_Tot)

r <- cor(sepal_width, sepal_length)

print(cor_razon)
## [1] 0.9930646
print(r)
## [1] -0.1175698

5. Correlación como media del producto de variables estandarizadas

Correlación como media del producto de variables estandarizadas

Teoría

Otra forma de interpretar la correlación como media (véase el apartado 4) es expresarla como el producto cruzado medio de las variables estandarizadas:

\[r = \frac{\sum Z_x Z_y}{N}\tag{5.1}\]

La ecuación (5.1) puede obtenerse directamente dividiendo el numerador y el denominador de la ecuación correlación por el producto de las dos desviaciones típicas de la muestra. Dado que la media de una distribución es su primer momento, esta fórmula permite comprender el significado del “producto-momento” en el nombre del coeficiente de correlación.

Las dos representaciones siguientes implican interpretaciones trigonométricas de la correlación.

Demostración

Recordemos la fórmula de la covarianza

\(\text{cov}(x, y) = \frac{\sum_{i=1}^{N} (x_i - \bar{x})(y_i - \bar{y})}{n-1}\)

Dividimos en ambos lados la multiplicación de la desviación estandar de cada una de las variables

\(\text{r} = \frac{\sum_{i=1}^{N} (x_i - \bar{x})(y_i - \bar{y})}{N(\sigma_x \sigma_y)}\)

\(\text{r} = \frac{\sum_{i=1}^{N} \frac{(x_i - \bar{x})}{\sigma_x} \frac{(y_i - \bar{y})}{\sigma_y}}{N}\)

\(\text{r} = \frac{\sum_{i=1}^{N} z_x z_y}{N}\)

Parte practica

cor_med_prod <- sum(stand_x * stand_y)/length(stand_y)
print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 5: ", cor_med_prod))
## [1] "Correlación con método 5:  0.812488185429766"

6. Correlación en función del ángulo entre las dos rectas de regresión estandarizadas

Correlación en función del ángulo entre las dos rectas de regresión estandarizadas

Teoría

Como se sugirió en la Sección 2., las dos rectas de regresión estandarizadas son simétricas respecto a cualquiera de las diagonales. sea el ángulo entre las dos rectas . Entonces (Ver figura 1)

\[r = \sec(\beta) \pm \tan(\beta)\tag{6.1}\]

Disponemos de una demostración sencilla de esta relación. La ecuación (6.1) no es intuitivamente obvia, ni es tan útil para fines computacionales o conceptuales como algunas de las otras. Su valor es mostrar que existe una relación sistemática entre la correlación y la distancia angular entre las dos líneas de regresión. La siguiente interpretación, también trigonométrica, tiene mucho más valor conceptual.

\text{Figura. 1 Geometría de la correlación bivariante para variables estandarizadas.}
\(\text{Figura. 1 Geometría de la correlación bivariante para variables estandarizadas.}\)

Deomostración

Las ecuaciones de las dos líneas de regresion de las variables son:

\(x = a_{xy}+b_{xy}y\) \(y = a_{yx}+b_{yx}x\)

La relación entre los coeficientes de regresión y la correlación es:

\(b_{xy} = r\frac{s_{x}}{s_{y}} \quad \text{y} \quad b_{xy} = r\frac{s_{y}}{s_{x}}\)

Por lo que las pendientes de las rectas serían \(\frac{1}{r} \text{ y la otra pendiente } r\)

El ángulo entre las dos rectas con pendientes conocidas

\(\tan(\theta) = \frac{m_1 - m_2}{1 + m_1 m_2}\)

Por lo que:

\(\tan(\theta) = \frac{1}{2}[\frac{1}{r} - r]\)

Reescribimos la ecuación cómo una cuadrática:

\(r^{2} + 2\tan(\theta)r - 1 = 0\)

Resolvemos entonces la ecuación para r:

\(r = \sec(\theta) \pm \tan(\theta)\)

Parte practica

#Pendientes
pend_uno <- cor(petal_length, petal_width)
pend_dos <- 1/cor(petal_length, petal_width)

#Ángulo
tan_angulo <- (pend_dos - pend_uno)/(1 + (pend_dos*pend_uno))
angulo <- atan(tan_angulo)

#Correlación
corre_met_7 <- ((1/(cos(angulo))) - tan(angulo))
print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 6: ", corre_met_7))
## [1] "Correlación con método 6:  0.962865431402796"

7. Correlación en función del ángulo entre los dos vectores de variables

Correlación en función del ángulo entre los dos vectores de variables

Teoría

El modelo geométrico estándar para representar la relación entre variables es el diagrama de dispersión. En este espacio, las observaciones se representan como puntos en un espacio definido por los ejes de las variables. Se puede definir una versión “al revés” de este espacio -normalmente denominado “person space”- dejando que cada eje represente una observación. Este espacio contiene dos puntos -uno por cada variable- que definen los extremos de los vectores en este espacio (potencialmente) de enormes dimensiones. Aunque la multidimensionalidad de este espacio impide la visualización, los dos vectores variables definen un subespacio bidimensional que se conceptualiza fácilmente.

Si los vectores variables se basan en variables centradas, entonces la correlación tiene relación con el ángulo \(\propto\) entre los vectores variables (Rodgers 1982):

\[r = \cos(\propto).\tag{7.1}\]

Cuando el ángulo es 0, los vectores caen sobre la misma línea y \(cos(\propto) = \pm 1\). Cuando el ángulo es \(90°\), los vectores son perpendiculares y \(cos(\propto) = 0\). [Rodgers, Nicewander y Toothaker (1984) mostraron la relación entre vectores variables ortogonales y no correlacionados en el “person space”].

Visualmente, es mucho más fácil ver la correlación observando un ángulo que mirando cómo se agrupan los puntos en torno a la línea de regresión. En nuestra opinión, esta interpretación es, con mucho, la forma más fácil de “ver” el tamaño de la correlación, ya que se puede observar directamente el tamaño de un ángulo entre dos vectores. Sin embargo, este espacio interior-exterior que permite representar r como el coseno de un ángulo está relativamente descuidado como herramienta de interpretación. Las excepciones incluyen un número de interpretaciones factor-analíticas, las representaciones geométricas de Draper y Smith (1981, pp. 201-203) del análisis de regresión múltiple, y Huck y Sandler (1984, p. 52). Fisher también utilizó este espacio con bastante frecuencia para conceptualizar sus elegantes ideas estadísticas (véase Box 1978).

Parte practica

# Calcular producto escalar
producto_escalar <- sum(petal_length * petal_width)

# Calcular longitud de vectores
longitud_x <- sqrt(sum(petal_length^2))
longitud_y <- sqrt(sum(petal_width^2))

# Calcular coseno
coseno <- producto_escalar / (longitud_x * longitud_y)

# Imprimir resultado
print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 7: ", coseno))
## [1] "Correlación con método 7:  0.983549683299602"

8. Correlación como varianza reescalada de la diferencia entre puntuaciones normalizadas

Correlación como varianza reescalada de la diferencia entre puntuaciones normalizadas

Teoría

Define \(Z_y - Z_x\) como la diferencia entre las variables estandarizadas de \(X\) e \(Y\) para cada observación. Luego,

\[ r = 1 - S^2_{(Z_y - Z_x)}/2\tag{8.1} \]

Esto puede demostrarse comenzando con la varianza de una puntuación de diferencia: \(S^2_{Y-X}=S^2_{X}+S^2_{Y}-2rs_{X}s_{Y}\).Puesto que las desviaciones estándar y las varianzas se convierten en unidad cuando se estandarizan las variables, podemos resolver fácilmente para r y obtener la ecuación (8.1).

Es interesante observar que en esta ecuación, puesto que la correlación está limitada por el intervalo de - 1 a +1, la varianza de esta puntuación de diferencia está limitada por el intervalo de 0 a 4. Por tanto, la varianza de una diferencia de puntuaciones estandarizadas nunca puede superar 4. El límite superior de la varianza se alcanza cuando la correlación es - 1.

También podemos definir r como la varianza de una suma de variables estandarizadas:

\[ r = S^2_{(Z_y - Z_x)}/2 - 1\tag{8.2} \]

En este caso, la varianza de la suma también oscila entre 0 y 4, y el límite superior se alcanza cuando la correlación es +1. El valor de esta novena interpretación es mostrar que la correlación es una transformación lineal de un cierto tipo de varianza. Así, dada la correlación, podemos definir directamente la varianza de la suma o de la diferencia de las variables estandarizadas, y viceversa.

Las nueve interpretaciones anteriores del coeficiente de correlación eran de naturaleza algebraica y trigonométrica. No se hicieron suposiciones distribucionales sobre la naturaleza de las distribuciones univariantes o bivariantes de \(X\) e \(Y\). En las interpretaciones finales, se asumirá la normalidad bivariante. Mantenemos nuestro interés en las versiones conceptuales y computacionales de \(r\), pero basamos nuestro último conjunto de interpretaciones en este supuesto común sobre la distribución de la población.

Parte practica

x_sd <- petal_length/sd(petal_length)
y_sd <- petal_width/sd(petal_width)

#Correlación
dif_var <- (x_sd - y_sd)
print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 8: ", 1 - (var(dif_var)/2)))
## [1] "Correlación con método 8:  0.962865431402796"

9. Correlación estimada a partir de la regla del globo

Correlación estimada a partir de la regla del globo

Teoría

Esta interpretación se debe a Chatillon (1984a). Sugirió dibujar un “globo de cumpleaños” alrededor del diagrama de dispersión de una relación bivariada. El globo es en realidad una elipse aproximada, a partir de la cual se obtienen dos medidas-\(h\) y \(H\) (véase la Fig. 3). h es el diámetro vertical de la elipse en el centro de la distribución en el eje X; H es el alcance vertical de la elipse en el eje Y. Chatillon demostró que la correlación puede calcularse aproximadamente como

\[ r = \sqrt{1-(h/H)^2}\tag{9.1} \]

Justificó teóricamente la eficacia de este procedimiento computacional aproximado, suponiendo normalidad bivariante y uniformidad bivariante. También presentó una serie de ejemplos en los que la técnica funciona bastante bien. Una sugerencia interesante es que la “regla del globo” puede utilizarse para construir aproximadamente una relación bivariante con una correlación determinada. Se dibuja una elipse que produzca la r deseada y luego se rellenan los puntos uniformemente a lo largo de la elipse. Thomas (1984) presentó un “nomógrafo de bolsillo”, que era una diapositiva de 3” x 5” que podía utilizarse para “avistar” una relación bivariada y estimar una correlación basada en la regla del globo.

\text{Figura. 2 La correlación relativa a las funciones de las elipses de isoconcentración}
\(\text{Figura. 2 La correlación relativa a las funciones de las elipses de isoconcentración}\)

Parte practica

# Calcula el diámetro vertical de la elipse en el centro de la distribución en el eje X
h <- max(petal_width) - min(petal_width)

# Calcular el alcance vertical de la elipse en el eje Y
H <- max(petal_length) - min(petal_length)

r_balloon = sqrt(1 - (h / H)^2)

print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 9: ", r_balloon))
## [1] "Correlación con método 9:  0.913526303607584"

10. Correlación en relación con las elipses bivariadas de isoconcentración

Correlación en relación con las elipses bivariadas de isoconcentración

Teoría

Dos autores diferentes han sugerido interpretaciones de r relacionadas con las elipses bivariantes de isoconcentración. Obsérvese que estas elipses son versiones más formales del “globo” de la Sección 10 y que son las estructuras geométricas que Galton observó en sus datos empíricos (véase la Fig. 1). Chatillon (1984b) dio una clase de distribuciones bivariadas (incluyendo normal, uniforme y mezclas de uniformes) que tienen contornos de isodensidad elípticos. Hay una elipse por cada constante positiva, dada la correlación de la población. El globo que se dibujaría alrededor de un diagrama de dispersión se aproximaría a una de estas elipses para una constante positiva grande. Si las variables están estandarizadas, estas elipses se centran en el origen. Para \(p > 0\), los ejes principales caen sobre la diagonal positiva; para \(p < 0\), sobre la diagonal negativa.

Marks (1982) demostró, mediante cálculos sencillos, que la 64 The American Statistician, febrero 1988, Vol. 42, No. 1 pendiente de la línea tangente en \(z_{x} = 0\) es la correlación.

La \(\text{figura 2}\) muestra esta línea tangente, cuya pendiente es igual a r . Cuando la correlación es 0, la elipse es un círculo y la tangente tiene pendiente 0. Cuando la correlación es unidad, la elipse se aproxima a una línea recta que es la diagonal (con pendiente 1). Cuando la correlación es unidad, la elipse se aproxima a una recta que es la diagonal (con pendiente 1). Obsérvese que, puesto que todas las elipses de isoconcentración son paralelas, la interpretación es invariante a la elección de la elipse. También cabe señalar que la pendiente de la recta tangente en \(z_{x} = 0\) es la misma que la pendiente de la recta de regresión normalizada (véase el apartado 2).

Schilling (1984) también utilizó este marco para derivar una relación similar. Estandaricemos las variables de forma que las elipses estén centradas en el origen, como antes. Si \(D\) es la longitud del eje mayor de una elipse de isoconcentración y d es la longitud del eje menor, entonces

\[ r = (D^2- d^2)/(D^2+d^2).\tag{10.1} \]

Estos ejes también se representan en la \(\text{Figura 2}\), y la interpretación es invariable con respecto a la elección de la elipse, como antes.

Parte practica

stand_x <- scale(petal_length) # Standard petal_length
stand_y <- scale(petal_width) # Standard petal_width
# Distancia entre los puntos extremos en dirección de la correlación
D <- sqrt((stand_x - mean(stand_x))^2 + (stand_y - mean(stand_y))^2)

# Distancia entre los puntos extremos en la dirección perpendicular a la correlación
d <- sqrt((stand_x - mean(stand_x))^2 * (1 - correlation^2))
# (1 - cor(x, y)^2) representa el complemento del coeficiente de correlación al cuadrado entre x y y

calculated_r <- mean((D^2 - d^2) / (D^2 + d^2))

print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 10: ", calculated_r))
## [1] "Correlación con método 10:  0.332141189573255"

11. Correlación en función de los estadísticos de prueba de experimentos diseñados

Correlación en función de los estadísticos de prueba de experimentos diseñados

Teoría

Las interpretaciones anteriores de \(r\) se basaban en variables cuantitativas. Nuestra duodécima representación de la correlación muestra su relación con la estadística de prueba de los experimentos diseñados, en los que una de las variables (la variable independiente) es una variable categórica. Esto demuestra la artificialidad de la distinción correlacional/experimental al discutir el diseño experimental. De hecho, Fisher (1925) presentó originalmente el análisis de la varianza (ANOVA) en términos de la correlación intraclase (véase Box 1978).

Supongamos que tenemos un experimento diseñado con dos condiciones de tratamiento. El modelo estadístico estándar para comprobar la diferencia entre las condiciones es la prueba t de dos muestras independientes. Si X se define como una variable dicotómica que indica la pertenencia a un grupo (0 si es el grupo 1, 1 si es el grupo 2), entonces la correlación entre \(X\) y la variable dependiente \(Y\) es

\[ r = \frac{t}{\sqrt{t^2+n-2}},\tag{11.1} \]

donde \(n\) es el número total combinado de observaciones en los dos grupos de tratamiento. Este coeficiente de correlación puede utilizarse como medida de la fuerza del efecto de un tratamiento, en contraposición a la significación de un efecto. La prueba de significación de r en este contexto proporciona la misma prueba que la prueba \(t\) habitual. Por lo tanto, está claro que \(r\) puede servir como estadístico de prueba en un experimento diseñado, así como proporcionar una medida de asociación en entornos de observación.

En entornos ANOVA con más grupos o múltiples factores, la extensión de esta relación define los coeficientes de correlación múltiple asociados con los efectos principales y las interacciones en experimentos más complejos. Por ejemplo, en un ANOVA unidireccional con k grupos y un total de N sujetos, la correlación múltiple al cuadrado entre la variable dependiente y las columnas de la matriz de diseño se relaciona con el estadístico F mediante la siguiente fórmula (Draper y Smith 1981, p. 93): \(R^2 = F(k - 1)/[F(k - 1) + (N - k)]\).

Parte practica

# Crear una variable dicotómica para grupos (setosa y no setosa)
group <- as.numeric(iris$Species == "setosa") # Variable dicotómica para grupos
n <- length(petal_length)

# Separar los datos en dos grupos según la variable dicotómica
x_group = petal_length[group == 0]
y_group = petal_width[group == 0]

# Calcular las medias de cada grupo
xbar1 <- mean(x_group)
xbar2 <- mean(y_group)

# Calcular la desviación estándar combinada (s)
s <- sqrt(((sum((x_group - xbar1)^2) + sum((y_group - xbar2)^2)) / (length(x_group)+length(y_group) - 2)))

# Calcular la estadística t
t <- (xbar1 - xbar2) / (s * sqrt(1/length(x_group) + 1/length(y_group)))

r_t <- t / sqrt(t^2 + n - 2)

print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 11: ", r_t))
## [1] "Correlación con método 11:  0.943949374523694"

12. Correlación como cociente de dos medias

Correlación como cociente de dos medias

Teoría

Ésta es la tercera interpretación de la correlación de medias (véanse los apartados 3 y 5). Proporciona una conclusión apropiada para nuestro artículo, ya que fue propuesta por primera vez por Galton. Además, las primeras ideas y cálculos de Galton sobre la correlación se basaban en esta interpretación. Nicewander y Price (1982) elaboraron esta interpretación.

Para Galton, era natural centrarse en la correlación como cociente de medias, porque estaba interesado en cuestiones como: ¿Cómo se compara la altura media de los hijos de padres inusualmente altos con la altura media de sus padres? En el siguiente desarrollo se utiliza la notación poblacional en lugar de la muestral, porque sólo en el límite (de aumento del tamaño de la muestra) la expresión de la razón de medias dará valores idénticos a la \(r\) de Pearson.

Consideremos una situación similar a la que habría interesado a Galton. Sea \(X\) una variable que denota el \(IQ\) de la madre, y sea \(Y\) el \(IQ\) de su hijo mayor. Supongamos además que las medias \(\mu(X)\) y \(\mu(Y)\) son 0 y que las desviaciones típicas \(\sigma(X)\) y \(\sigma(Y)\) son la unidad. Ahora seleccione algún valor arbitrariamente grande de \(X\) (digamos \(X_{c}\)), y calcule la media \(IQ\) de las madres cuyo \(IQ\) es mayor que \(X\).Que esta media se denote por \(\mu(X|X > X_{c})\), es decir, la media \(IQ\) de las madres cuyo \(IQ\) es mayor que \(X_{c}\). A continuación, calcula la media de las puntuaciones \(IQ\), \(Y\), de los hijos mayores de estas madres excepcionales. Denotemos esta media por ,\(\mu(Y|X> X_{c})\), es decir, la media \(IQ\) de los hijos mayores de madres cuyo \(IQ\) es mayor que \(X\),. Entonces se puede demostrar que

\[ r = \frac{\mu(Y|X>X_{c})-\mu_{Y}}{\mu(X|X>X_{c})-\mu_{X}}=\frac{\mu(Y|X>X_{c})}{\mu(X|X>X_{c})}\tag{12.1} \]

La prueba de (12.1) requiere un supuesto de normalidad bivariante de \(X\) y \(Y\) estandarizados. La prueba es sencilla y sólo implica el hecho de que, para \(z_{x}\), y \(z_{y}\), \(r\) es la pendiente de la recta de regresión, así como la razón de estas dos medias condicionales.

Nuestro ejemplo es específico, pero la interpretación se aplica a cualquier escenario en el que se produce una selección explícita sobre una variable, que selecciona implícitamente sobre una segunda variable. Brogden (1946) utilizó la interpretación de la relación de medias para demostrar que cuando se utiliza un test psicológico para la selección de personal, la correlación entre la puntuación del test y la medida del criterio da el grado proporcional en que el test es un dispositivo de selección “perfecto”. Esta interpretación puede utilizarse para otros fines.

Parte practica

# 12
# Definir un valor de corte arbitrario x_c
x_c <- 1

# Calcular la media de Y condicional a X > x_c
mean_y_x <- mean(stand_y[stand_x > x_c])
# Calcular la media de X condicional a X > x_c
mean_x_x <- mean(stand_x[stand_x > x_c])

# Calcular la media de Y y X
mean_std_y <- mean(stand_y)
mean_std_x <- mean(stand_x)


r_ratio <- (mean_y_x - mean_std_y) / (mean_x_x - mean_std_x)

r_ratio
## [1] 0.9378494
r_ratio <- (mean_y_x) / (mean_x_x)

print(paste("Correlación con función cor(): ", correlation))
## [1] "Correlación con función cor():  0.117569784133002"
print(paste("Correlación con método 12: ", r_ratio))
## [1] "Correlación con método 12:  0.93784938737202"

Tipos de correlaciones

Spearman´s Rank Correlation

Spearman´s Rank Correlation

Descripción

La correlación de rango de Spearman se presenta como la contraparte no paramétrica de la correlación producto-momento de Pearson. Este coeficiente, representado por (ρ o rs), evalúa la intensidad y la dirección de la relación entre dos variables clasificadas.

Por otra parte, el coeficiente de correlación de rango de Spearman se considera como la alternativa no paramétrica a la correlación de Pearson.

Formula matematica

\[ rs = 1-\frac{6\sum d^2_{i}}{n(n^2-1)} \]

Diferencias (Pearson & Spearman)

La correlación de Spearman difiere de la correlación de Pearson en el sentido de que no utiliza los datos brutos directamente, sino que se basa en los rangos asignados a los valores de las variables. Este proceso de asignar rangos a los datos se conoce como “ranking”. Los rankings son una forma de ordenar los valores de las variables de menor a mayor, asignando a cada valor un rango correspondiente según su posición en la ordenación.

Explicación de Rankings:

Los rankings son esenciales en la correlación de Spearman porque permiten comparar la relación relativa entre los valores de las dos variables en lugar de depender de las magnitudes absolutas de los datos. Esto es especialmente útil cuando los datos no siguen una distribución normal o cuando hay presencia de valores atípicos.

Ejemplos acerca de los Rankings: Supongamos que tenemos dos conjuntos de datos A y B, y sus respectivos rankings se muestran a continuación:

Conjunto A: 10, 5, 8, 12 Ranking A: 3, 4, 2, 1

Conjunto B: 7, 15, 9, 11 Ranking B: 3, 1, 2, 4

En estos ejemplos, los rankings se han asignado de acuerdo con el orden ascendente de los valores. La correlación de Spearman evaluará la relación entre los rankings de A y B, en lugar de los valores brutos, proporcionando así una medida robusta de la asociación entre las dos variables.

En resumen, el uso de rankings en la correlación de Spearman facilita una evaluación más robusta de la asociación entre variables, independientemente de la distribución o presencia de valores atípicos en los datos.

Cuando y porqué usar Spearman

Es necesario contar con dos variables que presenten características ordinales, de intervalo o de proporción para aplicar la correlación de Spearman. Mientras que la correlación producto-momento de Pearson suele ser la elección común para datos de intervalo o relación, la correlación de Spearman ofrece una alternativa valiosa cuando las suposiciones de la correlación de Pearson se ven significativamente comprometidas.

Es esencial destacar que la correlación de Spearman evalúa la fuerza y la dirección de la relación monótona entre las dos variables, a diferencia de la correlación de Pearson, que se centra en la relación lineal entre las variables. Esta capacidad de la correlación de Spearman la hace especialmente adecuada para situaciones en las que la relación entre las variables no sigue una tendencia lineal clara o cuando la presencia de valores atípicos afecta la validez de la correlación de Pearson.

Tipos de Variables:

Es crucial comprender que la correlación de Spearman es versátil y puede aplicarse a diferentes tipos de variables, incluyendo las ordinales, de intervalo o de proporción. Las variables ordinales representan categorías con un orden específico pero sin una distancia uniforme entre ellas. Las variables de intervalo y de proporción, por otro lado, tienen una escala numérica con una distancia uniforme entre los valores, permitiendo una mayor flexibilidad en el análisis de la relación entre ellas.

Suposiciones de la correlación de pearson

La correlación de Pearson, también denominada coeficiente de correlación de Pearson, se fundamenta en diversas suposiciones o condiciones que deben ser satisfechas para garantizar la validez y confiabilidad de sus resultados. Estas condiciones abarcan:

  1. Relación lineal: Es necesario que la relación entre las dos variables sea aproximadamente lineal. Esto implica que, al observar un gráfico de dispersión, los puntos deben mostrar una tendencia general en forma de línea recta.

  2. Normalidad: Ambas variables deben adherirse a una distribución normal. Esto implica que los valores de las variables deben distribuirse de manera simétrica en torno a la media.

  3. Homocedasticidad: La variabilidad de una variable debe ser constante en todos los niveles de la otra variable. Esto se traduce en que la dispersión de los puntos en el gráfico de dispersión debe ser uniforme en todos los niveles de las variables.

  4. Independencia: Las observaciones deben ser independientes entre sí. En otras palabras, el valor de una observación no debe depender del valor de otra observación dentro del conjunto de datos.

Monotonic Function

Una relación monótona es una relación que hace una de las siguientes cosas:

  1. A medida que aumenta el valor de una variable, también lo hace el valor de la otra variable.

  2. A medida que aumenta el valor de una variable, el valor de la otra variable disminuye.

Práctica

Se mide la reacción de tiempo de ocho jugadores de computadora y se les pregunta la edad

# Crear los vectores time_reaction y age
time_reaction <- c(12, 15, 17, 18, 20, 21, 22, 26)

age <- c(14, 25, 20, 35, 45, 30, 60, 95)

# Crear un dataframe con los datos
 (data <- data.frame(time_reaction, age))
time_reaction age
12 14
15 25
17 20
18 35
20 45
21 30
22 60
26 95
# Calcular la correlación de Pearson
correlation <- cor(time_reaction, age)
# Imprimir la correlación
print(paste("La correlación de Pearson entre time_reaction y age es:", correlation))
## [1] "La correlación de Pearson entre time_reaction y age es: 0.891574223931793"
# Calcular la Spearman´s Rank Correlation 
(corr <- cor.test(x=time_reaction, y=age, method = 'spearman'))
## 
##  Spearman's rank correlation rho
## 
## data:  time_reaction and age
## S = 8, p-value = 0.004563
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.9047619
cor(time_reaction,age, method = "spearman")
## [1] 0.9047619
#Calcular los rangos de los vectores
rank_time <- rank(time_reaction)
rank_age <- rank(age)

(data <- data %>% 
                mutate(rank_time,rank_age))
time_reaction age rank_time rank_age
12 14 1 1
15 25 2 3
17 20 3 2
18 35 4 5
20 45 5 6
21 30 6 4
22 60 7 7
26 95 8 8
# Calcular C.Pearson de los rangos
(cor_rank <- cor(rank_age,rank_time))
## [1] 0.9047619
# Calcular por medio de diferencias
(data <- data %>% 
        mutate(d=(rank_time - rank_age),'d^2'=(d^2)))
time_reaction age rank_time rank_age d d^2
12 14 1 1 0 0
15 25 2 3 -1 1
17 20 3 2 1 1
18 35 4 5 -1 1
20 45 5 6 -1 1
21 30 6 4 2 4
22 60 7 7 0 0
26 95 8 8 0 0
d <- data$`d^2`
num <- (6*sum(d))
den <- length(d)*(length(d)^2-1)
(cor_rank2 <- 1 - num/den)
## [1] 0.9047619
 ggplot(data, aes(x=time_reaction, y=age)) + 
   geom_line() +
   geom_point(color='#2980B9', size = 4) +
   labs(title = 'Tiempo de reacción Vs Edad')

A medida que aumenta el valor de una variable la otra aumenta, es funcion monotona creciente.

Por otro lado, esta correlación se puede evaluar por medio del paquete correlation

Correlación de rango de Kendall´s

Correlación de rango de Kendall´s

Descripción

Conocido comúnmente como el “coeficiente tau de Kendall”, tanto el coeficiente Tau de Kendall como el coeficiente de correlación de rangos de Spearman son métodos que evalúan asociaciones estadísticas según los rangos de los datos. La correlación de rangos de Kendall, que es de naturaleza no paramétrica, se presenta como una alternativa a la correlación de Pearson, la cual es paramétrica, cuando los datos no cumplen con uno o varios supuestos de la prueba. Asimismo, representa la opción más adecuada frente a la correlación de Spearman (no paramétrica), especialmente cuando el tamaño de la muestra es reducido y se observan numerosos empates en los rangos.

Este método se emplea para examinar similitudes en el ordenamiento de los datos cuando se clasifican según cantidades. A diferencia de otros coeficientes de correlación que se basan en observaciones individuales, el coeficiente de correlación de Kendall utiliza pares de observaciones. Su evaluación de la fuerza de la asociación se fundamenta en el patrón de concordancia y discordancia observado entre estos pares.

Formula Matematica

La fórmula para el coeficiente de correlación de rango de Kendall (tau de Kendall) entre dos variables, \(X\) e \(Y\), se expresa como:

\[ \tau = \frac{{\text{Número de pares concordantes} - \text{Número de pares discordantes}}}{{\text{Número total de pares}}} \]

Donde:

  • Un par \((X_i, Y_i)\) y \((X_j, Y_j)\) es “concordante” si los rangos relativos concuerdan (es decir, si \(X_i > X_j\) y \(Y_i > Y_j\) o \(X_i < X_j\) y \(Y_i < Y_j\)).

  • Un par \((X_i, Y_i)\) y \((X_j, Y_j)\) es “discordante” si los rangos relativos discordantes (es decir, si \(X_i > X_j\) y \(Y_i < Y_j\) o \(X_i < X_j\) y \(Y_i > Y_j\)).

El coeficiente de correlación de Kendall (\(\tau\)) varía entre -1 y 1, donde:

  • \(\tau = 1\) indica una relación perfectamente positiva.
  • \(\tau = -1\) indica una relación perfectamente negativa.
  • \(\tau = 0\) indica ninguna relación (independencia).

Práctica

Suponga que hay dos doctores a los cuales le solicitan que clasifique a 6 pacientes de acuerdo con su salud

doc_1 <- 1:6
doc_2 <- c(3,1,4,2,6,5)

(data_2 <- data.frame(doc_1,doc_2))
doc_1 doc_2
1 3
2 1
3 4
4 2
5 6
6 5
## Calcular pares concordantes y discordantes Función 1

dif_mat_set <- function(a,b){

  matriz_1 <- combn(a, 2)
  matriz_2 <- combn(b, 2)
  print(matriz_1)
  print(matriz_2)
  

  # Inicializar variable
  pares_concordantes <- 0

  # Verificar si las matrices tienen el mismo número de columnas
  if (ncol(matriz_1) == ncol(matriz_2)) {
    # Calcular la diferencia entre las matrices
    for (j in 1:ncol(matriz_1)) {
      columna_1 <- matriz_1[, j]
      encontrado <- FALSE  # Bandera para controlar si se ha encontrado una pareja concordante
      for (i in 1:ncol(matriz_2)) {
        if (all(columna_1 == matriz_2[, i])) {
          encontrado <- TRUE
          break  # Salir del bucle interno si se encuentra una pareja concordante
        }
      }
      if (encontrado) {
        pares_concordantes <- pares_concordantes + 1  # Incrementar el contador de pares concordantes
      }
    }
  } else {
    cat("Las matrices tienen un número diferente de columnas.\n")
  }
  pares_discordantes <- ncol(matriz_1) - pares_concordantes
  # Retornar los resultados como una lista
  resultado <- c(pares_concordantes ,pares_discordantes)
  return(resultado)
}

dif_mat_set(doc_1,doc_2)
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## [1,]    1    1    1    1    1    2    2    2    2     3     3     3     4     4
## [2,]    2    3    4    5    6    3    4    5    6     4     5     6     5     6
##      [,15]
## [1,]     5
## [2,]     6
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## [1,]    3    3    3    3    3    1    1    1    1     4     4     4     2     2
## [2,]    1    4    2    6    5    4    2    6    5     2     6     5     6     5
##      [,15]
## [1,]     6
## [2,]     5
## [1] 11  4
## Calcular pares concordantes y discordantes Función 2

dif_mat_set_optimizado <- function(a, b) {
  # Crear todas las combinaciones posibles de a y b
  combinaciones_a <- combn(a, 2)       # Genera todas las combinaciones de a de tamaño 2
  combinaciones_b <- combn(b, 2)       # Genera todas las combinaciones de b de tamaño 2

  # Convertir las matrices de combinaciones en conjuntos
  conjunto_a <- apply(combinaciones_a, 2, paste, collapse = "-")  # columnas -> conjunto
  conjunto_b <- apply(combinaciones_b, 2, paste, collapse = "-")  # columnas -> conjunto
  print(conjunto_a)
  print(conjunto_b)
  # Encontrar la intersección entre los conjuntos
  interseccion <- intersect(conjunto_a, conjunto_b)  

  # Calcular el número de pares concordantes
  pares_concordantes <- length(interseccion)

  # Calcular el número de pares discordantes
  pares_discordantes <- ncol(combinaciones_a) - pares_concordantes

  # Retornar los resultados como una lista
  resultado <- c(pares_concordantes,pares_discordantes)
  return(resultado)
}

dif_mat_set_optimizado(doc_1,doc_2)
##  [1] "1-2" "1-3" "1-4" "1-5" "1-6" "2-3" "2-4" "2-5" "2-6" "3-4" "3-5" "3-6"
## [13] "4-5" "4-6" "5-6"
##  [1] "3-1" "3-4" "3-2" "3-6" "3-5" "1-4" "1-2" "1-6" "1-5" "4-2" "4-6" "4-5"
## [13] "2-6" "2-5" "6-5"
## [1] 11  4
## Calcular correlacion de rango de Kendall´s 
pares <- dif_mat_set_optimizado(doc_1,doc_2)
##  [1] "1-2" "1-3" "1-4" "1-5" "1-6" "2-3" "2-4" "2-5" "2-6" "3-4" "3-5" "3-6"
## [13] "4-5" "4-6" "5-6"
##  [1] "3-1" "3-4" "3-2" "3-6" "3-5" "1-4" "1-2" "1-6" "1-5" "4-2" "4-6" "4-5"
## [13] "2-6" "2-5" "6-5"
cor_kendall <- round(1 - 2*(pares[2])/sum(pares),2)
print(paste('La correlacion por medio del rango de Kendall´s es:', cor_kendall))
## [1] "La correlacion por medio del rango de Kendall´s es: 0.47"
## 
cor.test(doc_2,doc_1, method = 'kendall')
## 
##  Kendall's rank correlation tau
## 
## data:  doc_2 and doc_1
## T = 11, p-value = 0.2722
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
##       tau 
## 0.4666667
cor(doc_2,doc_1, method = "kendall")
## [1] 0.4666667
## Calcular correlacion de rango de Kendall´s con R
result <-  round(cor(doc_1, doc_2, method = "kendall"),2)
cat("Kendall correlation coefficient is:", result)
## Kendall correlation coefficient is: 0.47
ggplot(data_2, aes(x=doc_1, y=doc_2)) + 
   geom_point(color='#2980B9', size = 4) +
   labs(title = 'Doc1 Vs Doc2')

Esta de igual forma se puede aplicar teniendo en cuenta el paquete correlation

Biweight midcorrelation (Correlación media de doble peso)

Biweight midcorrelation (Correlación media de doble peso)

Descripción

En el análisis estadístico que sigue, se implementa la correlación media de bipeso, conocida también como bicor. Esta métrica, detallada en el libro “Weighted Network Analysis: Applications in Genomics and Systems Biology” de Steve Horvath, constituye una medida de similitud entre las muestras. Diferenciándose de la correlación de Pearson o la información mutua, la correlación media de bipeso se basa en la mediana en lugar de la media, lo que la hace menos susceptible a los valores atípicos y la posiciona como una alternativa robusta en la evaluación de la similitud entre conjuntos de datos.

Definición

Para el entendimiento de la definición biweight midcorrelation se generan tres funciones.

\(\ robustScale(x)\)

Introduce un vector numérico x y emite un vector cuyo componente uth está dado por

\[ \text{escalaRobusta}(x)_u = \frac{x_u - \text{med}(x)}{\text{mad}(x) \cdot 9} \] Donde \(mad(x)\ =\ med(|x − med(x)|)\) es la mediana desviación absoluta de x y 9 es un número que podría cambiarse.

\(\ peso(x)\)

\[ \text{peso}(x)_u = (1 - (x_u)^2)^2 \cdot H(1 - |x_u|) \]

Donde:

\[ H(x) = \begin{cases}1, & \text{si } x >0\\ 0, & \text{otro}\end{cases} \]

\(\ covMedianWeighted(x,y)\)

La tercera función es la función de covarianza ponderada basada en la mediana:

\[ \text{covMedianWeighted}(x, y) = \frac{sum\left((x - \text{median}(x))w_x \cdot (y - \text{median}(y))w_y\right)}{\sqrt{sum (w_x^2) \cdot sum (w_y^2)}} \] Donde los pesos se dan por \(w.x\ =\ peso(escalarobusta (x)).\)

\(bicor(x, y)\)

Usando estas funciones, biweight midcorrelation entre \(x\) e \(y\) se define de la siguiente manera:

\[ \text{bicor}(x, y) = \frac{\text{covMedianWeighted}(x, y)}{\sqrt{\text{covMedianWeighted}(x, x) \cdot \text{covMedianWeighted}(y, y)}} \]

Aplicación

Se ha demostrado que la correlación media de doble peso es más robusta en la evaluación de la similitud en las redes de expresión génica, y a menudo se utiliza para el análisis de la red de correlación ponderada.

Implementaciones

La correlación media de doble peso se ha implementado en el lenguaje de programación estadística R como la función bicor como parte del paquete WGCNA

También se implementa en el lenguaje de programación Raku como la función bi_cor_coef como parte del módulo de estadísticas.

Ejemplo

# Función para escalar los datos de manera robusta
robustScale = function(x) {
  (x - median(x, na.rm = TRUE)) / (9 * mad(x, constant = 1))
}

# Función para calcular los pesos
weight = function(x) {
  (1 - x^2)^2 * ifelse(abs(x) <= 1, 1, 0)
}

# Función para calcular la covarianza ponderada por la mediana
covMedianWeighted = function(x, y) {
  w.x = weight(robustScale(x))
  w.y = weight(robustScale(y))
  
  numerator = sum((x - median(x, na.rm = TRUE)) * w.x * (y - median(y, na.rm = TRUE)) * w.y, na.rm = TRUE)
  denominator = sqrt(sum(w.x^2, na.rm = TRUE) * sum(w.y^2, na.rm = TRUE))
  
  numerator / denominator
}

# Función bicor
bicorF = function(x, y) {
  denom = sqrt(covMedianWeighted(x, x) * covMedianWeighted(y, y))
  covMedianWeighted(x, y) / denom
}

# Simulación de dos vectores correlacionados
set.seed(1)
x = rnorm(50)
y = x + rnorm(50)

# Calcular bicor
bicorF(x, y) # = 0.5902869
## [1] 0.5902869
# También puedes usar la función bicor
 bicorF(x, y) # = 0.5902869
## [1] 0.5902869
# Comparar con la correlación de Pearson
 cor(x, y) # = 0.6339331
## [1] 0.6339331
# Comparar con la correlación de Spearman
cor(x, y, method = "s") # = 0.5671549
## [1] 0.5671549

Por otro lado, esta función se pude aplicar teniendo encuenta el paquete \(correlation\)

Correlación tetracórica

Correlación tetracórica

Descripción

La correlación tetracórica se emplea para evaluar la concordancia entre evaluadores en contextos de datos binarios, donde las respuestas pueden ser categorizadas como correctas o incorrectas. Este tipo de datos binarios presenta dos posibles respuestas. La correlación tetracórica estima la relación que existiría si se midiera en una escala continua.

Su aplicación abarca diversas finalidades, como el análisis de puntuaciones en la Teoría de Respuesta al Ítem (TRI) y la conversión de estadísticas de comorbilidad en coeficientes de correlación. Esta forma de correlación presenta la ventaja de no ser influenciada por la cantidad de niveles de calificación ni por las proporciones marginales de dichos niveles.

La denominación “correlación tetracórica” se deriva de la serie tetracórica, un método numérico utilizado en la era previa a la informática. A pesar de que es más frecuente estimar correlaciones mediante métodos como la estimación de máxima verosimilitud, la correlación tetracórica se destaca por su utilidad en contextos específicos.

Supuestos para la prueba

Supuestos de la Correlación Tetracórica

Existen dos supuestos fundamentales en el uso de la correlación tetracórica:

  1. Variables Normales Subyacentes:
    • Las variables subyacentes se originan a partir de una distribución normal. En situaciones con solo dos variables, resulta imposible verificar este supuesto de manera directa. Por ende, es esencial contar con una sólida fundamentación teórica para la elección de este tipo específico de correlación. En otras palabras, debería tener conocimiento de que el tipo de datos que está analizando tiende a seguir una distribución normal en la mayoría de las instancias. Asimismo, se espera que los errores de calificación sigan una distribución normal.
  2. Escala Continua Latente:
    • Existe una escala continua latente subyacente a los datos binarios. Esto significa que la característica que se está midiendo debe ser continua en lugar de discreta.

Adicionalmente, es crucial garantizar que los errores sean independientes entre los evaluadores y los casos. También se debe verificar que la varianza de los errores sea homogénea a lo largo de los niveles de la variable independiente. Estos requisitos contribuyen a la validez y confiabilidad de los resultados obtenidos mediante la correlación tetracórica.

Qué significa la correlación

El coeficiente de correlación tetracórica, representado como rtet (a veces escrito como r* o rt), proporciona información sobre la fuerza de la asociación entre las calificaciones de dos evaluadores. Un valor de “0” indica ausencia de acuerdo, mientras que un valor de “1” denota un acuerdo perfecto. La mayoría de las correlaciones se ubicarán en un punto intermedio; el nivel aceptable de concordancia depende en gran medida del tipo de datos en consideración. Por ejemplo, en comparación con situaciones no médicas, las evaluaciones médicas entre profesionales de la medicina exigirán un nivel más alto de acuerdo. En términos generales, una concordancia superior a 0,7 suele considerarse “suficientemente fuerte”.

Como se calcula

Para ilustrar el cálculo de la correlación tetracórica, consideremos una tabla de 2x2 con dos variables, x e y, cada una con dos valores. Siguiendo el ejemplo proporcionado por Statology (2021, August 16) en su artículo sobre Tetrachoric Correlation

La fórmula para calcular la correlación tetrórica entre las dos variables de esta tabla es:

\[ Tetrachoric\ correlation = \cos\left(\frac{\pi}{{1+\sqrt{\frac{ad}{{b/c}}}}}\right) \]

Ejemplo

Supongamos que queremos saber si el género está asociado o no con la preferencia de los partidos políticos, así que tomamos una muestra aleatoria simple de 100 votantes y los encuestamos sobre su preferencia de los partidos políticos.

\[ Tetrachoric\ correlation = \cos\left(\frac{\pi}{{1+\sqrt{\frac{19 \cdot 39}{{30/12}}}}}\right) = 0.277. \]

Esta correlación es bastante baja, lo que indica que hay una asociación débil entre el género y la preferencia de los partidos políticos.

Práctica

# Crea una matriz de datos de ejemplo (reemplaza esto con tus propios datos)
datos <- matrix(c(1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7), nrow = 5)

# Calcula la correlación tetracórica usando hetcor
 hetcor(datos, method = "tetrachoric")
## data contain one or more character variables
## the values of which are ordered alphabetically
## Warning in FUN(X[[i]], ...): polyserial correlation between variables datos and method produced a warning:
##    y has fewer than 2 levels
## Warning in FUN(X[[i]], ...): polyserial correlation between variables X2 and method produced a warning:
##    y has fewer than 2 levels
## Warning in FUN(X[[i]], ...): polyserial correlation between variables X3 and method produced a warning:
##    y has fewer than 2 levels
## Warning in hetcor.data.frame(dframe, ML = ML, std.err = std.err, use = use, : 3
## correlations couldn't be computed and are NA
## 
## Two-Step Estimates
## 
## Correlations/Type of Correlation:
##        datos      X2      X3     method
## datos      1 Pearson Pearson Polyserial
## X2         1       1 Pearson Polyserial
## X3         1       1       1 Polyserial
## method  <NA>    <NA>    <NA>          1
## 
## Standard Errors:
##            datos        X2   X3
## datos                          
## X2     1.957e-16               
## X3     1.957e-16 1.957e-16     
## method      <NA>      <NA> <NA>
## 
## n = 5

Correlacion Multinivel

Correlacion Multinivel

Descripción

La correlación multinivel, también conocida como correlación jerárquica o correlación anidada, se refiere a la examinación de las relaciones o asociaciones entre variables en múltiples niveles o niveles anidados dentro de una estructura de datos. Este enfoque se utiliza a menudo en la investigación y el análisis de datos cuando se trata de datos que tienen una estructura jerárquica o anidada, como datos recopilados de individuos dentro de grupos, que a su vez están dentro de poblaciones más grandes.

En el análisis de correlación multinivel, los investigadores buscan comprender cómo las variables están correlacionadas no solo a nivel individual, sino también en niveles superiores de agregación. Esto les permite explorar si existen correlaciones que existen dentro de grupos o conjuntos de datos, así como correlaciones que existen entre estos grupos.

Por ejemplo, en la investigación educativa, es posible que esté interesado en comprender la relación entre las calificaciones de los estudiantes (nivel individual) y el nivel socioeconómico de las escuelas a las que asisten (nivel grupal), al mismo tiempo que se considera la correlación general a nivel de distrito o regional.

El análisis de correlación multinivel puede proporcionar información sobre las complejas interacciones entre variables en diferentes niveles de una estructura de datos jerárquica y puede ser valioso para tomar decisiones informadas y sacar conclusiones significativas en diversos campos, incluyendo las ciencias sociales, la educación, la epidemiología y más. A menudo, implica el uso de técnicas estadísticas como el modelado multinivel o el modelado lineal jerárquico (HLM) para tener en cuenta la estructura anidada de los datos y estimar correlaciones en diferentes niveles.

Procesamiento de datos

El análisis de correlación multinivel implica el procesamiento adecuado de las variables y se utiliza principalmente para analizar la relación entre variables que tienen una estructura jerárquica o multinivel. Aquí hay algunas consideraciones clave:

  1. Identificación de niveles: Lo primero que debes hacer es identificar claramente los diferentes niveles de tus datos. Por lo general, tienes al menos dos niveles: el nivel individual y el nivel grupal. En el ejemplo anterior, el nivel individual incluye los datos de los estudiantes, mientras que el nivel grupal incluye los datos de las escuelas.

  2. Codificación de niveles: Debes codificar adecuadamente los niveles en tus datos. Esto significa asignar a cada observación (por ejemplo, a cada estudiante) un código que indique a qué grupo (por ejemplo, a qué escuela) pertenece. Esto facilitará la identificación de la estructura jerárquica en tus datos.

  3. Selección de variables: Identifica las variables que deseas analizar en términos de su relación en diferentes niveles. En el ejemplo anterior, podrías estar interesado en la relación entre las calificaciones de los estudiantes y las características de las escuelas, como el presupuesto escolar o el tamaño de las clases.

  4. Estadísticas multinivel: Para analizar estas relaciones, generalmente se utilizan modelos estadísticos multinivel o modelos de ecuaciones estructurales multinivel. Estos modelos tienen en cuenta la estructura jerárquica de tus datos y permiten estimar las correlaciones tanto a nivel individual como a nivel grupal.

  5. Normalización de variables: Es importante que las variables estén en la misma escala o que estén normalizadas antes de realizar el análisis de correlación multinivel. Esto puede incluir la estandarización de las puntuaciones, la transformación de variables si es necesario (por ejemplo, logaritmos) y la eliminación de valores atípicos.

  6. Evaluación de la varianza: El análisis multinivel también puede proporcionar información sobre cómo se distribuye la varianza de las variables de interés en los diferentes niveles. Esto es útil para comprender cuánta variabilidad se debe a diferencias entre grupos y cuánta variabilidad se debe a diferencias dentro de los grupos.

  7. Interpretación: Finalmente, interpreta los resultados a la luz de tus preguntas de investigación. ¿Existen correlaciones significativas entre las variables a nivel individual y grupal? ¿Cuánta variabilidad en las calificaciones de los estudiantes se puede atribuir a las diferencias entre las escuelas?

El análisis de correlación multinivel es adecuado cuando estás interesado en comprender cómo las variables se relacionan en diferentes niveles jerárquicos, como estudiantes dentro de escuelas, empleados dentro de empresas o pacientes dentro de hospitales. Permite una comprensión más completa de las influencias contextuales en los resultados individuales y es útil en una variedad de disciplinas, incluyendo la sociología, la psicología, la educación y la salud pública, entre otras.

Ejemplo:

Supongamos que estás realizando un estudio sobre el rendimiento académico de estudiantes en diferentes escuelas y deseas examinar cómo las características de las escuelas (nivel grupal) pueden estar relacionadas con el rendimiento de los estudiantes (nivel individual). Tu conjunto de datos podría verse así:

A nivel individual (nivel 1): Tienes datos de calificaciones de matemáticas de estudiantes, así como información sobre el nivel de ingresos de sus familias, su asistencia a clases y su tiempo de estudio. A nivel grupal (nivel 2): Tienes datos sobre las escuelas a las que asisten estos estudiantes, como el presupuesto escolar, el tamaño de las clases y el porcentaje de estudiantes con almuerzo gratuito. El objetivo es determinar si existe una correlación entre las características de las escuelas (por ejemplo, el presupuesto escolar o el tamaño de las clases) y el rendimiento académico de los estudiantes en matemáticas. Aquí es donde entra en juego la correlación multinivel.

Mediante el análisis de correlación multinivel, podrías descubrir que, aunque hay una cierta correlación entre el ingreso familiar y el rendimiento académico a nivel individual (algunos estudiantes de familias más ricas tienden a obtener mejores calificaciones), también existe una correlación entre el presupuesto escolar y el rendimiento académico. Es decir, las escuelas con un presupuesto escolar más alto tienden a tener estudiantes con un mejor rendimiento en matemáticas, independientemente del ingreso familiar de los estudiantes.

Este es solo un ejemplo simplificado para ilustrar cómo funciona la correlación multinivel. En situaciones reales, el análisis multinivel puede ser mucho más complejo y puede requerir técnicas estadísticas avanzadas para desentrañar las relaciones entre múltiples niveles de datos.

Paso a Paso

Paso 1: Recopilación de datos

Reúne los datos necesarios para tu estudio. Debes tener información sobre las calificaciones de matemáticas de los estudiantes y las características de las escuelas, como el presupuesto escolar, el tamaño de las clases y el porcentaje de estudiantes con almuerzo gratuito.

Paso 2: Identificación de niveles

Identifica claramente los niveles de tus datos. Tienes dos niveles en este caso: el nivel individual (estudiantes) y el nivel grupal (escuelas).

Paso 3: Codificación de niveles

Asigna un código a cada observación para indicar a qué escuela pertenece cada estudiante. Esto te permite identificar la estructura jerárquica en tus datos.

Paso 4: Selección de variables

Selecciona las variables que deseas analizar. En este ejemplo, estás interesado en la relación entre las calificaciones de matemáticas de los estudiantes y las características de las escuelas (presupuesto escolar, tamaño de las clases, porcentaje de estudiantes con almuerzo gratuito).

Paso 5: Normalización de variables

Asegúrate de que tus variables estén en la misma escala o estén normalizadas según sea necesario. Por ejemplo, podrías estandarizar las calificaciones de matemáticas para que tengan una media de 0 y una desviación estándar de 1.

Paso 6: Análisis estadístico

Utiliza un modelo estadístico multinivel o un modelo de ecuaciones estructurales multinivel para analizar la relación entre las calificaciones de matemáticas y las características de las escuelas. Este modelo tendrá en cuenta la estructura jerárquica de tus datos y te proporcionará estimaciones de correlación a nivel individual y grupal.

Paso 7: Interpretación de resultados

Interpreta los resultados de tu análisis. Por ejemplo, podrías descubrir que existe una correlación significativa entre el presupuesto escolar y las calificaciones de matemáticas a nivel de escuela, lo que sugiere que las escuelas con un presupuesto más alto tienden a tener estudiantes con mejores calificaciones en matemáticas.

Este es un proceso simplificado que ilustra cómo llevar a cabo un análisis de correlación multinivel con el procesamiento de datos necesario en cada etapa. En la práctica, los análisis multinivel pueden ser más complejos y requerir software estadístico especializado para realizar las estimaciones y las pruebas adecuadas.

Ejemplo práctico

library(correlation)

# Simulación de numeros

set.seed(13122023)

data <- simulate_simpson(n=100, groups=10)

## Visualización de los datos

library(ggplot2)

ggplot(data, aes(x=V1, y=V2)) + 
  geom_point() +
  geom_smooth(colour="black", method="lm", se=FALSE) +
  theme_classic()

print(correlation(data))
## # Correlation Matrix (pearson-method)
## 
## Parameter1 | Parameter2 |     r |         95% CI | t(998) |         p
## ---------------------------------------------------------------------
## V1         |         V2 | -0.84 | [-0.86, -0.82] | -48.77 | < .001***
## 
## p-value adjustment method: Holm (1979)
## Observations: 1000
## The Simpson’s Paradox

ggplot(data, aes(x=V1, y=V2)) + 
  geom_point(aes(colour=Group)) +
  geom_smooth(aes(colour=Group), method="lm", se=FALSE) + 
  geom_smooth(colour="black", method="lm", se=FALSE) + 
  theme_classic()

## Correlación multinivel 

print(correlation(data, multilevel = TRUE))
## Parameter1 | Parameter2 |    r |           CI | t(998) |         p
## ------------------------------------------------------------------
## V1         |         V2 | 0.50 | [0.45, 0.55] |  18.24 | < .001***
## 
## Observations: 1000

Distance Correlation

Distance Correlation

Teoria

La correlación de distancia es una medida de dependencia entre dos vectores aleatorios emparejados de dimensiones arbitrarias, no necesariamente iguales. El coeficiente de correlación de distancia de la población es cero si y solo si los vectores aleatorios son independientes. Por lo tanto, la correlación de distancia mide tanto la asociación lineal como la no lineal entre dos variables o vectores aleatorios. Esto contrasta con la correlación de Pearson, que solo puede detectar asociaciones lineales entre dos variables aleatorias.

La correlación de distancia se puede aplicar a cualquier tipo de variable, ya sea continua o categórica. Además, las variables pueden tener diferentes dimensiones

\[dCor(X, Y) = \frac{dCov(X, Y)}{\sqrt{dVar(X) dVar(Y)}}\]

\[dCov_n(X, Y) = \frac{1}{n^2} \sum_{j=1}^{n} \sum_{k=1}^{n} A_{j,k} B_{j,k}\]

\[dVar_n(X) = \frac{1}{n^2} \sum_{k,l} A_{k,l}^2\]

Sea \((Xk, Yk), k = 1, 2,…, n\) una muestra estadística de un par de dos variables aleatorias, \(X\) e \(Y\).

Primero, calculamos las matrices de distancias \(n\) por \(n\) \((aj, k)\) y \((bj, k)\) que contienen todas las distancias por pares.

\[ a_{j,k} = \lVert \mathbf{X}_j - \mathbf{X}_k \rVert, \quad j,k = 1,2,\ldots,n \\ b_{j,k} = \lVert \mathbf{Y}_j - \mathbf{Y}_k \rVert, \quad j,k = 1,2,\ldots,n \]

Luego tomamos las distancias dobles centradas.

$$ A_{j,k} = a_{j,k} - {a}{j.} - {a}{.k} + {a}{..} \ B{j,k} = b_{j,k} - {b}{j.} - {b}{.k} + {b}_{..}

$$

Calcular las matrices de distancia centradas significa calcular las matrices de distancia para cada variable y luego centrarlas. Una matriz de distancia es una matriz cuadrada que contiene las distancias entre todos los pares de observaciones en un conjunto de datos. Para centrar una matriz de distancia, se resta la media de cada fila y cada columna y se agrega la media general de la matriz. Esto tiene el efecto de centrar las distancias alrededor de cero.

¿Por qué hacemos esto?

La razón por la que hacemos esto es por la siguiente razón. Cualquier tipo de covarianza es el producto cruzado de momentos. Como las distancias no son momentos, tenemos que calcularlas en momentos. Para calcular estos momentos, primero hay que calcular las desviaciones de la media, que es lo que se consigue con el doble centrado.

Practica

R
A pedal
centered_dist_matrix <- function(x) {
  n <- length(x)
  a <- matrix(0, n, n)
  for (i in seq_len(n)) {
    for (j in seq_len(n)) {
      a[i, j] <- abs(x[i] - x[j]) # Eclidiana
    }
  }
  row_means <- rowMeans(a)
  col_means <- colMeans(a)
  grand_mean <- mean(a)
  for (i in seq_len(n)) {
    for (j in seq_len(n)) {
      a[i, j] <- a[i, j] - row_means[i] - col_means[j] + grand_mean
    }
  }
  return(a)
}

n <- length(iris$Petal.Length)

A <- centered_dist_matrix(iris$Petal.Length)
B <- centered_dist_matrix(iris$Petal.Width)

dcov <- sum(A * B) / (n ^ 2)

dvar_x <- sum(A ^ 2) / (n ^ 2)
dvar_y <- sum(B ^ 2) / (n ^ 2)

dcor <- dcov / sqrt(dvar_x * dvar_y)

dcor
## [1] 0.9479572
Paquete correlation
data(iris)
library(correlation)

print(cor_test(iris, "Petal.Length", "Petal.Width", method = "distance"))
## Parameter1   |  Parameter2 |    r |       95% CI | t(11024) |         p
## -----------------------------------------------------------------------
## Petal.Length | Petal.Width | 0.95 | [0.93, 0.96] |   312.15 | < .001***
## 
## Observations: 150
Phython
import pandas as pd
import dcor

data = pd.read_csv("iris_csv.csv")


def distance_correlation(a, b):
    return dcor.distance_correlation(a, b)


print("dcor = ", distance_correlation(data["petallength"], data["petalwidth"]))
## dcor =  0.9736309

Percentage bend correlation

Percentage bend correlation

Teoría

La correlación de porcentaje de curvatura (Percentage Bend Correlation) es una medida de correlación robusta que protege contra valores atípicos en las distribuciones marginales de las variables. Es similar a otras medidas de correlación robustas, como la correlación de Kendall. La correlación de porcentaje de curvatura se puede aplicar a cualquier tipo de variable continua. No he encontrado información específica sobre su aplicación a variables categóricas.

La correlación de curvatura porcentual entre las variables \(X\) e \(Y\) se calcula siguiendo los pasos que se indican a continuación:

Paso 1: Establecer \(m=((1-β)\cdot n)+0,5\) y redondear m al entero más próximo.

Paso 2: Sea \(𝑊𝑖 = |𝑋𝑖 - 𝑀𝑥|\) para \(𝑖 = 1, 2, 3, ... , 𝑛\) donde \(𝑀𝑥\) es la mediana de \(X\)

Paso 3: Ordenar los \(𝑊𝑖\) en orden ascendente

Paso 4: \(𝑊\hat{𝑥} = 𝑊(𝑚\)) (es decir, el estadístico de orden m-ésimo). \(W (m)\) es la estimación del cuantil \((1-β)\) de \(W\)

Paso 5: Ordene los valores de \(X\). Calcular el número de valores de \((𝑋𝑖 - 𝑀𝑥)/𝑊̂𝑥 (𝛽)\) que son menores que -1 y el número que son mayores que +1 y se almacenan en \(i1\) e \(i2\) respectivamente. A continuación, se calculan los términos siguientes respectivamente (14, 15, 16).

\[ S_x = \sum_{i=i1+1}^{i2} X_i\tag{14} \]

\[\hat{\Phi}_x = \frac{W_x(i2-i1)+S_x}{n-i1-i2}\tag{15}\]

\[U_i = \frac{X_i - \hat{\Phi}_x}{W_x}\tag{16}\]

Paso 6: Repita los cálculos anteriores en la variable Y. Almacene las cantidades correspondientes en \(𝑊\hat{𝑦}\), \(\phi\hat{𝑦}\) , y \(𝑉𝑖\).

\[\gamma(X) = \max\{-1, \min\{1, x\}\}\tag{17}\]

Paso 8: Calcula los siguientes términos (18, 19)

\[A_i = \gamma(U_i)\tag{18}\]

\[B_i = \gamma(V_i)\tag{19}\]

Paso 9: Calcular el coeficiente de correlación de curvatura porcentual como se indica a continuación (20):

\[r_{pbn} = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^2 \sum_{i=1}^{n} B_i^2}}\tag{20}\]

El valor de \(β\) se selecciona entre 0 y 0,5. Los valores más altos de β dan lugar a un punto de ruptura más alto a expensas de una menor eficiencia.

Práctica

# A pedal

percentage_bend_correlation <- function(X, Y, beta = 0.5) {
  n <- length(X)
  
  # Paso 1
  m <- floor(((1 - beta) * n) + 0.5)
  
  # Paso 2
  median_X <- median(X)
  W_X <- abs(X - median_X)
  
  # Paso 3
  sorted_W_X <- sort(W_X)
  
  # Paso 4
  W_hat_X <- sorted_W_X[m]
  
  # Paso 5
  sorted_X <- sort(X)
  i1 <- sum(((sorted_X - median_X) / W_hat_X) < -1)
  i2 <- sum(((sorted_X - median_X) / W_hat_X) > 1)
  
  S_X <- sum(sorted_X[(i1 + 1):(n - i2)])
  phi_hat_X <- (W_hat_X * (i2 - i1) + S_X) / (n - i1 - i2)
  U_X <- (sorted_X - phi_hat_X) / W_hat_X
  
  # Repetir en Y
  median_Y <- median(Y)
  W_Y <- abs(Y - median_Y)
  sorted_W_Y <- sort(W_Y)
  W_hat_Y <- sorted_W_Y[m]
  sorted_Y <- sort(Y)
  i1_Y <- sum(((sorted_Y - median_Y) / W_hat_Y) < -1)
  i2_Y <- sum(((sorted_Y - median_Y) / W_hat_Y) > 1)
  S_Y <- sum(sorted_Y[(i1_Y + 1):(n - i2_Y)])
  phi_hat_Y <- (W_hat_Y * (i2_Y - i1_Y) + S_Y) / (n - i1_Y - i2_Y)
  V_Y <- (sorted_Y - phi_hat_Y) / W_hat_Y
  
  # Paso 7
  gamma_X <- function(x) mapply(function(xi) max(-1, min(1, xi)), x)
  gamma_Y <- function(y) mapply(function(yi) max(-1, min(1, yi)), y)
  
  # Paso 8
  A_X <- gamma_X(U_X)
  B_X <- gamma_X(V_Y)
  
  A_Y <- gamma_Y(U_X)
  B_Y <- gamma_Y(V_Y)
  
  # Paso 9
  numerator <- sum(A_X * B_Y)
  denominator <- sqrt(sum(A_X^2) * sum(B_Y^2))
  
  pb_correlation <- numerator / denominator
  
  return(pb_correlation)
}

correlation_value <- percentage_bend_correlation(iris$Petal.Length, iris$Petal.Width, beta = 0.2)
correlation_value
## [1] 0.9920275
# Paquete correlation  

library(correlation)
print(cor_test(iris, "Petal.Length", "Petal.Width", method = "percentage"))
## Parameter1   |  Parameter2 |    r |       95% CI | t(148) |         p
## ---------------------------------------------------------------------
## Petal.Length | Petal.Width | 0.97 | [0.95, 0.98] |  45.34 | < .001***
## 
## Observations: 150

Shepherd´s Pi correlation

Shepherd´s Pi correlation

Teoría

Shepherd’s Pi correlation es una medida de correlación robusta que es equivalente a la correlación de Spearman después de la eliminación de valores atípicos mediante la distancia de Mahalanobis con bootstrap1. Esta medida se puede aplicar a variables continuas y ordinales, y es útil para detectar relaciones monótonas entre dos variables, incluso en presencia de valores atípicos.

La fórmula para calcular la distancia de Mahalanobis es la siguiente:

\[D^2 = (\mathbf{x} - \mathbf{m})^T \cdot \mathbf{C}^{-1} \cdot (\mathbf{x} - \mathbf{m})\]

dónde,

  • \(D ^ 2\) es el cuadrado de la distancia de Mahalanobis.

  • \(x\) es el vector de la observación (fila en un conjunto de datos).

  • \(m\) es el vector de valores medios de variables independientes (media de cada columna).

  • \(C\) ^ (- 1) es la matriz de covarianza inversa de variables independientes.

Práctica

# Cargamos el conjunto de datos iris
data(iris)

# Apedal

mahalanobis_boot <- function(x, y, B = 1000) {
  n <- length(x)
  d <- numeric(n)
  for (i in seq_len(n)) {
    boot_dist <- numeric(B)
    for (b in seq_len(B)) {
      boot_idx <- sample(seq_len(n), n, replace = TRUE)
      x_boot <- x[boot_idx]
      y_boot <- y[boot_idx]
      cov_boot <- cov(cbind(x_boot, y_boot))
      center_boot <- c(mean(x_boot), mean(y_boot))
      boot_dist[b] <- mahalanobis(cbind(x[i], y[i]), center_boot, cov_boot)
    }
    d[i] <- mean(boot_dist)
  }
  return(d)
}

d <- mahalanobis_boot(iris$Petal.Length, iris$Petal.Width)

# Eliminamos los valores atípicos utilizando un umbral arbitrario
threshold <- quantile(d, 0.95)
x_no_outliers <- iris$Petal.Length[d <= threshold]
y_no_outliers <- iris$Petal.Width[d <= threshold]

# Por defecto
cor(x_no_outliers, y_no_outliers, method = "spearman")
## [1] 0.9476296
# Paquete correlation
library(correlation)
cor_test(iris, "Petal.Length", "Petal.Width", method = "shepherd")

Quitting from lines 1601-1640 [unnamed-chunk-25] (Apuntes.Rmd) Error in dimnames(x) <- dn: ! length of ‘dimnames’ [2] not equal to array extent Backtrace: 1. rmarkdown::render(…) 2. knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet) 3. knitr:::process_file(text, output) 8. knitr:::process_group.block(group) 9. knitr:::call_block(x) … 24. rmarkdown:::knit_print.data.frame(x, …) 26. pander:::pander.data.frame(x) 27. pander::pandoc.table(x, caption = caption, …) 29. pander::pandoc.table.return(…) 30. base::colnames<-(*tmp*, value = cln)

Blomqvist´s coefficient

Blomqvist´s coefficient

Teoría

El coeficiente de Blomqvist, también conocido como el coeficiente de correlación de Blomqvist, es una medida de correlación no paramétrica utilizada para evaluar la relación entre dos variables. Evalúa si hay una relación monótona (cualquier tipo de relación creciente o decreciente) entre las variables, sin suponer ningún tipo específico de relación funcional. Es particularmente útil cuando se sospecha una relación no lineal entre las variables. A diferencia de las correlaciones lineales como la correlación de Pearson, el coeficiente de Blomqvist se enfoca en la relación basada en el rango de los datos y no asume una relación lineal, es uno de los otros coeficientes no paramétricos basados en la mediana.

\[ \hat{\beta}_n = \frac{2n_1}{n_1 + n_2} - 1 \]

El coeficiente de Blomqvist se aplica a variables cuantitativas, preferiblemente continuas o discretas, y es adecuado para evaluar relaciones monótonas entre ellas. Para un par de variables continuas \(X\) e \(Y\), el \(β\) de Blomqvist puede calcularse como

$$ = { (X - {x}) (Y - {y}) > 0 } - { (X - {x}) (Y - {y}) < 0 }

$$

Donde \(\bar{x}\) y \(\bar{y}\) son la mediana de \(X\) e \(Y\), respectivamente.

Práctica

data(iris)

# A pedal

blomqvist_beta <- function(X, Y) {
  n1 <- median(X)
  n2 <- median(Y)
  
  return ((2 * n1) / (n1 + n2)) - 1
}

blomqvist_beta(iris$Petal.Length, iris$Petal.Width)
## [1] 1.539823
blomqvist_beta(iris$Petal.Length, iris$Sepal.Width)
## [1] 1.183673
blomqvist_beta(iris$Sepal.Length, iris$Petal.Width)
## [1] 1.633803
blomqvist_beta(iris$Sepal.Length, iris$Sepal.Width)
## [1] 1.318182
blomqvist_beta <- function(X, Y) {
  n <- length(X)
  
  median_X <- median(X)
  median_Y <- median(Y)
  
  positive_count <- sum(((X - median_X) * (Y - median_Y)) > 0)
  negative_count <- sum(((X - median_X) * (Y - median_Y)) < 0)
  return (positive_count - negative_count)
}

blomqvist_beta(iris$Petal.Length, iris$Petal.Width)
## [1] 129
blomqvist_beta(iris$Petal.Length, iris$Sepal.Width)
## [1] -26
blomqvist_beta(iris$Sepal.Length, iris$Petal.Width)
## [1] 114
blomqvist_beta(iris$Sepal.Length, iris$Sepal.Width)
## [1] -23
cov(iris[1:4])
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length    0.6856935  -0.0424340    1.2743154   0.5162707
## Sepal.Width    -0.0424340   0.1899794   -0.3296564  -0.1216394
## Petal.Length    1.2743154  -0.3296564    3.1162779   1.2956094
## Petal.Width     0.5162707  -0.1216394    1.2956094   0.5810063
# Por la librería correlation 

library(correlation)

print(cor_test(iris, "Petal.Length", "Petal.Width", method = "blomqvist"))
## Parameter1   |  Parameter2 |    r |       95% CI | t(148) |         p
## ---------------------------------------------------------------------
## Petal.Length | Petal.Width | 0.91 | [0.87, 0.93] |  26.15 | < .001***
## 
## Observations: 150

Hoeffding´s D

Hoeffding´s D

Teoría

La medida de dependencia de Hoeffding (Hoeffding’s D) es una medida no paramétrica de la dependencia entre dos variables. Esta medida se basa en la diferencia entre las probabilidades conjuntas y las probabilidades marginales de las dos variables.

\[ D = \frac{30(n-2)(n-3)D_1 - 2(n-2)D_3}{n(n-1)(n-2)(n-3)(n-4)} \]

Donde:

\[ \begin{equation} \begin{aligned} D_1 &= \sum_i (Q_i - 1)(Q_i - 2) \\ D_2 &= \sum_i (R_{ix} - 1)(R_{ix} - 2)(R_{iy} - 1)(R_{iy} - 2) \\ D_3 &= L_i(R_{ix} - 1)(R_{iy} - 2)(Q_i - 1) \end{aligned} \end{equation} \]

Donde \(𝑅𝑖𝑥\) y \(𝑅𝑖𝑦\) son los rangos de los i-ésimos valores \(X\) e \(Y\). \(𝑄𝑖\) también se conoce como rango bivariante y representa el número de puntos cuyos valores \(X\) e \(Y\) son inferiores al punto i-ésimo. Un punto que está empatado sólo en el valor \(X\) o en el valor \(Y\) contribuye \(1/2\) a \(𝑄𝑖\) si el otro valor es menor que el valor correspondiente del punto ith. Un punto que tanto en el valor \(X\) como en el valor \(Y\) contribuye \(1/4\) a \(𝑄𝑖\).

Los valores del estadístico D se sitúan entre -0,5 y 1 (1 indica dependencia completa) cuando no hay ningún empate en el conjunto de datos. Sin embargo, cuando se producen empates, el estadístico D puede dar como resultado un valor menor. Es decir, para un par de variables con valores idénticos, el estadístico D de Hoeffding puede ser inferior a 1. Con un gran número de empates en un conjunto de datos pequeño, el estadístico D puede ser inferior a -0,5.

Práctica

# A pedal

bivariate_rank <- function(x, y) {
  n <- length(x)
  Q <- numeric(n)
  for (i in seq_len(n)) {
    for (j in seq_len(n)) {
      if (x[j] < x[i] && y[j] < y[i]) {
        Q[i] <- Q[i] + 1
      } else if (x[j] < x[i] && y[j] == y[i]) {
        Q[i] <- Q[i] + 0.5
      } else if (x[j] == x[i] && y[j] < y[i]) {
        Q[i] <- Q[i] + 0.5
      } else if (x[j] == x[i] && y[j] == y[i]) {
        Q[i] <- Q[i] + 0.25
      }
    }
  }
  return(Q)
}

hoeffding_d <- function(X, Y) {
  n <- length(X)
  
  rank_X <- rank(X)
  rank_Y <- rank(Y)
  Q <- bivariate_rank(X, Y)
  
  D1 <- sum((Q - 1) * (Q - 2))
  D3 <- sum((rank_X - 1) * (rank_Y - 2) * (Q - 1))
  
  hoeffding_d_value <- 30 * (((n-2)*(n-3)*D1-2*(n-2)*D3)/(n*(n-1)*(n-2)*(n-3)*(n-4)))
  
  return(hoeffding_d_value)
}

d_result <- hoeffding_d(iris$Petal.Length, iris$Petal.Width)
d_result
## [1] -5.553554
# Por el paquete correlation 

print(cor_test(iris, "Petal.Length", "Petal.Width", method = "hoeffding"))
## Parameter1   |  Parameter2 |    r | 95% CI | t(148) |         p
## ---------------------------------------------------------------
## Petal.Length | Petal.Width | 0.56 |        |        | < .001***
## 
## Observations: 150

Correlación Policórica

Correlación Policórica

Descripción

La correlación policórica es un tipo específico de correlación que se utiliza cuando se trabaja con variables ordinales, es decir, variables que tienen un orden pero cuyos intervalos entre categorías no son necesariamente iguales. Esta medida de correlación se adapta a la naturaleza ordinal de las variables y puede ser una opción más adecuada que las correlaciones tradicionales cuando se trata con datos ordinales.

En términos más técnicos, la correlación policórica se basa en un modelo de respuesta al ítem (IRT, por sus siglas en inglés) y es particularmente útil cuando estás trabajando con datos provenientes de pruebas psicométricas u otros instrumentos de medición en los que las respuestas están en una escala ordinal.

En resumen, la correlación policórica es una medida de asociación entre variables ordinales que tiene en cuenta la naturaleza específica de los datos ordinales y puede ser útil en contextos en los que las correlaciones tradicionales podrían no ser apropiadas.

Supongamos entonces que tenemos un data con tres variables (aunque se puede tratar de más variables), en cada una, los valores pueden ser tres: alto, medio o bajo. Si intentamos usar la función cor(), no encontraríamos un valor.

Práctica

En R, existe una librería, “polycor” que puede ayudar a sacar la matriz de correlaciones de este tipo de variables.

# Carga el paquete
library(polycor)

# Creamos un dataframe de ejemplo con datos categóricos
data1 <- data.frame(
  variable1 = c("alto", "medio", "bajo", "medio", "alto"),
  variable2 = c("medio", "bajo", "alto", "alto", "alto"),
  variable3 = c("alto", "medio", "medio", "medio", "bajo")
)

# Convierte las variables a factores ordenados
data1[] <- lapply(data1, ordered, levels = c("bajo", "medio", "alto"))

# Calcula la matriz de correlaciones policóricas
cor_matrix <- hetcor(data1, method = "polychor")

# Muestra la matriz de correlaciones policóricas
print(cor_matrix, digits = 2)
## 
## Two-Step Estimates
## 
## Correlations/Type of Correlation:
##           variable1  variable2  variable3
## variable1         1 Polychoric Polychoric
## variable2     -0.21          1 Polychoric
## variable3         0      -0.57          1
## 
## Standard Errors:
##           variable1 variable2
## variable1                    
## variable2      0.57          
## variable3      0.61      0.46
## 
## n = 5 
## 
## P-values for Tests of Bivariate Normality:
##           variable1 variable2
## variable1                    
## variable2      0.28          
## variable3     0.081       0.2

Biserial

Biserial

Descripción

La correlación biserial es un coeficiente de correlación utilizado cuando se tiene una variable continua y una variable dicotómica (binaria). Es especialmente útil cuando una de las variables es latente y no directamente observable, y la otra es una medida observable relacionada con la presencia o ausencia de algún evento.

El coeficiente de correlación biserial se encuentra en el rango de -1 a 1, donde -1 indica una relación perfecta negativa, 1 indica una relación perfecta positiva, y 0 indica ausencia de correlación.

Práctica

#Una dicotómica, una conStante
library(ltm)
x_continuous <- c(5, 6, 7, 8, 9, 10, 11, 12)
y_binary <- c(0, 1, 1, 0, 1, 1, 1, 1)
biserial.cor(x_continuous, y_binary, use = c("all.obs"), level = 2)
## [1] 0.5039526
cor(x_continuous, y_binary)
## [1] 0.5039526

Gamma

Gamma

Uso

La correlación gamma es un coeficiente de correlación no paramétrico que se utiliza para medir la asociación entre dos variables ordinales. Las variables ordinales son aquellas que tienen un orden inherente, pero las distancias entre las categorías no están definidas. La correlación gamma mide la concordancia o discordancia en las clasificaciones relativas de las observaciones en ambas variables.

Práctica

# Cargar el paquete MASS
library(MASS)

# Crear dos variables ordinales (ejemplo)
variable1 <- c(1, 2, 3, 2, 1, 1, 1, 1, 2 ,3 , 2, 2, 3, 3, 1, 3, 1, 2)
variable2 <- c(3, 2, 1, 2, 3, 2, 3, 2, 2, 1, 1, 1 , 2, 3, 1, 3, 2, 2)

# Calcular la correlación gamma
resultado_cor <- cor.smooth(table(variable1, variable2))

# Imprimir el resultado
print(resultado_cor)
##            1          2          3
## 1  1.0000000 -0.1889822 -0.7559289
## 2 -0.1889822  1.0000000 -0.5000000
## 3 -0.7559289 -0.5000000  1.0000000

Winzoresed

Winzoresed

Descripción

La correlación de Winsorizada (Winsorized correlation) es una medida de la asociación entre dos variables que se calcula después de ajustar o “Winsorizar” los valores extremos (outliers) en ambos conjuntos de datos. La Winsorización implica reemplazar los valores extremos con valores más cercanos dentro de un rango específico.

Práctica

# Instalar y cargar el paquete "robustbase" si aún no está instalado
# install.packages("robustbase")
library(robustbase)

# Crear dos vectores de ejemplo
x <- c(1, 2, 3, 4, 50, 7, 6, 1, 3, 9, 0, 65, 3, 45, 66, 22, 1, 4, 5, 56, 3, 4, 5, 2)
y <- c(6, 7, 8, 9, 10, 1, 2, 3, 42, 4, 23, 1, 9, 76, 1, 2, 1, 1, 3, 3, 1, 1, 3, 4)


# Crear una función para calcular la correlación de Pearson Winsorizado
pearson_winsorized_cor <- function(x, y, tr = 0.2) {
  x_winsorized <- pmax(pmin(x, quantile(x, 1 - tr)), quantile(x, tr))
  y_winsorized <- pmax(pmin(y, quantile(y, 1 - tr)), quantile(y, tr))
  
  cor(x_winsorized, y_winsorized, method = "pearson")
}

# Calcular la correlación de Pearson Winsorizado
correlation_winsorized <- pearson_winsorized_cor(x, y)

# Imprimir el resultado
print(correlation_winsorized)
## [1] -0.06184961

Rango gaussiano

Rango gaussiano

Descripión

Sí, conozco la función de correlación de Gauss. La correlación de Gauss se refiere a la función de densidad de probabilidad de la distribución normal, también conocida como distribución gaussiana o campana de Gauss. Esta función es fundamental en estadísticas y probabilidad.

Práctica

# Función para calcular la correlación de Gauss
correlacion.gauss <- function(x, y) {
  # Calcular las medias y varianzas de x e y
  mu_x <- mean(x)
  mu_y <- mean(y)
  sigma_x <- sd(x)
  sigma_y <- sd(y)

  # Calcular el producto de las densidades de probabilidad de x e y
  f_xy <- dnorm(x, mu_x, sigma_x) * dnorm(y, mu_y, sigma_y)

  # Calcular la correlación de Pearson
  r <- sum(f_xy) / sum(dnorm(x, mu_x, sigma_x))

  return(r)
}

# Ejemplo
x <- rnorm(100)
y <- rnorm(100)

# Calcular la correlación de Gauss
r <- correlacion.gauss(x, y)

# Imprimir la correlación de Gauss
print(r)
## [1] 0.2668612

Ejemplo

data(ma2)
model <- newModel(fnSimVec = ma2_sim_vec, fnSum = ma2_sum, simArgs = list(TT = 10),
                  theta0 = ma2$start, fnLogPrior = ma2_prior)
## *** initialize "MODEL" ***
## has simulation function: TRUE 
## has summary statistics function: TRUE 
## has initial guess / point estimate of the parameter: TRUE 
## running a short simulation test ... success
## *** end initialize ***
set.seed(100)

# generate 1000 simualtions from the ma2 model
x <- simulation(model, n = 1000, theta = c(0.6, 0.2))$x

corr1 <- cor(x) # traditional correlation matrix
corr2 <- gaussianRankCorr(x) # Gaussian rank correlation matrix
corr2
##               [,1]        [,2]        [,3]        [,4]          [,5]
##  [1,]  1.000000000  0.42600938  0.03870499  0.03424222 -0.0396452238
##  [2,]  0.426009384  1.00000000  0.44846726  0.04990689  0.0201894824
##  [3,]  0.038704993  0.44846726  1.00000000  0.48163491  0.0115319089
##  [4,]  0.034242222  0.04990689  0.48163491  1.00000000  0.4002057363
##  [5,] -0.039645224  0.02018948  0.01153191  0.40020574  1.0000000000
##  [6,]  0.002882574 -0.02089921 -0.03691458 -0.02891649  0.4534677387
##  [7,]  0.007922864 -0.01751489  0.01900479  0.03134935  0.0239635505
##  [8,]  0.011035519  0.01195403  0.03004580  0.02793279  0.0302654027
##  [9,]  0.030975602  0.03857345  0.02089465 -0.01218517 -0.0002651987
## [10,]  0.010981881  0.04434087  0.01858765 -0.04909949 -0.0288985880
##               [,6]         [,7]        [,8]          [,9]       [,10]
##  [1,]  0.002882574  0.007922864  0.01103552  0.0309756019  0.01098188
##  [2,] -0.020899207 -0.017514888  0.01195403  0.0385734485  0.04434087
##  [3,] -0.036914576  0.019004789  0.03004580  0.0208946503  0.01858765
##  [4,] -0.028916489  0.031349354  0.02793279 -0.0121851696 -0.04909949
##  [5,]  0.453467739  0.023963550  0.03026540 -0.0002651987 -0.02889859
##  [6,]  1.000000000  0.473223067  0.04177045  0.0215829759 -0.02005148
##  [7,]  0.473223067  1.000000000  0.44782550  0.0365443458 -0.01942464
##  [8,]  0.041770450  0.447825498  1.00000000  0.4705331503 -0.01598315
##  [9,]  0.021582976  0.036544346  0.47053315  1.0000000000  0.43647959
## [10,] -0.020051485 -0.019424640 -0.01598315  0.4364795933  1.00000000
oldpar <- par()
par(mfrow = c(1, 2))
image(corr1, main = 'traditional correlation matrix')
image(corr2, main = 'Gaussian rank correlation matrix')

par(mfrow = oldpar$mfrow)

std <- apply(x, MARGIN = 2, FUN = sd) # standard deviations
cor2cov(gaussianRankCorr(x), std) # convert to covariance matrix
##               [,1]        [,2]        [,3]        [,4]          [,5]
##  [1,]  1.347267841  0.56631206  0.05036298  0.04626651 -0.0521399306
##  [2,]  0.566312062  1.31165418  0.57578171  0.06653467  0.0261991658
##  [3,]  0.050362979  0.57578171  1.25670952  0.62851147  0.0146477615
##  [4,]  0.046266506  0.06653467  0.62851147  1.35505087  0.5278538739
##  [5,] -0.052139931  0.02619917  0.01464776  0.52785387  1.2838231647
##  [6,]  0.003863001 -0.02763483 -0.04777852 -0.03886339  0.5932207246
##  [7,]  0.010936180 -0.02385468  0.02533594  0.04339732  0.0322894228
##  [8,]  0.014898881  0.01592421  0.03917736  0.03782039  0.0398871462
##  [9,]  0.041528002  0.05102611  0.02705496 -0.01638339 -0.0003470709
## [10,]  0.015501646  0.06175725  0.02534055 -0.06950705 -0.0398201886
##               [,6]        [,7]        [,8]          [,9]       [,10]
##  [1,]  0.003863001  0.01093618  0.01489888  0.0415280017  0.01550165
##  [2,] -0.027634831 -0.02385468  0.01592421  0.0510261086  0.06175725
##  [3,] -0.047778515  0.02533594  0.03917736  0.0270549582  0.02534055
##  [4,] -0.038863389  0.04339732  0.03782039 -0.0163833869 -0.06950705
##  [5,]  0.593220725  0.03228942  0.03988715 -0.0003470709 -0.03982019
##  [6,]  1.333013759  0.64974020  0.05609451  0.0287821313 -0.02815386
##  [7,]  0.649740197  1.41420715  0.61943999  0.0501962200 -0.02809206
##  [8,]  0.056094512  0.61943999  1.35290658  0.6321475205 -0.02260843
##  [9,]  0.028782131  0.05019622  0.63214752  1.3341007124  0.61310144
## [10,] -0.028153859 -0.02809206 -0.02260843  0.6131014419  1.47893188

Referencias