Generar una matriz de correlación con columnas específicas y solo con valores significativos en corrplot.
Tengo una base de datos en forma de data.frame con 14 columnas. He dividido estas columnas en dos grupos: [,1:6] y [,7:14].
df<-read.csv("http://renatabrandt.github.io/EBC2015/data/varechem.csv", row.names=1)
df
Me gustaría calcular la correlación entre estos dos grupos de columnas. Para ello, he utilizado este comando y ha funcionado muy bien:
# Quiero correlacionar las columnas [1:6] con [7:14] solamente.
correlation_df<-cor(df[,1:6],
df[,7:14], method="spearman", use="pairwise.complete.obs")
# Graficar la correlación de columnas específicas
corrplot(correlation_df,
method="color", addCoef.col = "black")
Sin embargo, además de calcular la correlación, me gustaría que el gráfico muestre solo las correlaciones significativas (p-valor < 0.05). Intenté el siguiente código pero no funcionó porque la vista estaba equivocada.
# Puedo obtener la matriz de niveles de significancia
correlation_df_sig<-cor.mtest(df, conf.level = 0.95, method = "spearman")
correlation_df_sig
Genero una matriz de correlación solo con los valores significativos.
plot2<-corrplot(correlation_df,
p.mat = correlation_df_sig$p,
insig='blank',
addCoef.col = "black")
plot2
¿Qué puedo hacer para solucionar esta vista?
NOTA:
Intenté generar una matriz completa sin considerar los grupos [,1:6] y [,7:14], pero también salió mal. Además, no quiero calcular la correlación entre columnas del mismo grupo. Ej: columna 1 con columna 2, columna 1 con columna 3…
plot1<-corrplot(cor(df, method = 'spearman', use = "pairwise.complete.obs"),
method = 'color',
addCoef.col = 'black',
p.mat = correlation_df_sig$p,
insig='blank',
diag = FALSE,
number.cex = 0.5,
type='upper'
)
plot1
davy.ai
Para arreglar la vista de la gráfica de correlación y mostrar solo las correlaciones significativas, puede ajustar el argumento
addCoef.col
de la funcióncorrplot()
. Este argumento especifica el color de los coeficientes de correlación mostrados en la gráfica. Por defecto, todos los coeficientes se muestran en negro, sin importar su significancia.Para mostrar solo las correlaciones significativas, puede establecer
addCoef.col = "black"
para correlaciones significativas yaddCoef.col = "white"
para correlaciones no significativas. Esto ocultará efectivamente las correlaciones no significativas de la gráfica.Aquí está el código actualizado:
Este código utiliza la función
ifelse()
para establecer el argumentoaddCoef.col
como “black” o “white” dependiendo de si el valor p correspondiente encorrelation_df_sig$p
es menor a 0.05 (significativo) o no.Esto debería resultar en una gráfica de correlación que muestra solo las correlaciones significativas en negro.