Skip to contents

Sort a correlation matrix based on hclust().

Usage

cor_sort(x, distance = "correlation", hclust_method = "complete", ...)

Arguments

x

A correlation matrix.

distance

How the distance between each variable should be calculated. If correlation (default; suited for correlation matrices), the matrix will be rescaled to 0-1 (distance = 0 indicating correlation of 1; distance = 1 indicating correlation of -1). If raw, then the matrix will be used as a distance matrix as-is. Can be others (euclidean, manhattan, ...), in which case it will be passed to dist() (see the arguments for it).

hclust_method

Argument passed down into the method argument of hclust().

...

Other arguments to be passed to or from other functions.

Examples

x <- correlation(mtcars)

cor_sort(as.matrix(x))
#>             carb         wt         hp        cyl       disp        qsec
#> carb  1.00000000  0.4276059  0.7498125  0.5269883  0.3949769 -0.65624923
#> wt    0.42760594  1.0000000  0.6587479  0.7824958  0.8879799 -0.17471588
#> hp    0.74981247  0.6587479  1.0000000  0.8324475  0.7909486 -0.70822339
#> cyl   0.52698829  0.7824958  0.8324475  1.0000000  0.9020329 -0.59124207
#> disp  0.39497686  0.8879799  0.7909486  0.9020329  1.0000000 -0.43369788
#> qsec -0.65624923 -0.1747159 -0.7082234 -0.5912421 -0.4336979  1.00000000
#> vs   -0.56960714 -0.5549157 -0.7230967 -0.8108118 -0.7104159  0.74453544
#> mpg  -0.55092507 -0.8676594 -0.7761684 -0.8521620 -0.8475514  0.41868403
#> drat -0.09078980 -0.7124406 -0.4487591 -0.6999381 -0.7102139  0.09120476
#> am    0.05753435 -0.6924953 -0.2432043 -0.5226070 -0.5912270 -0.22986086
#> gear  0.27407284 -0.5832870 -0.1257043 -0.4926866 -0.5555692 -0.21268223
#>              vs        mpg        drat          am       gear
#> carb -0.5696071 -0.5509251 -0.09078980  0.05753435  0.2740728
#> wt   -0.5549157 -0.8676594 -0.71244065 -0.69249526 -0.5832870
#> hp   -0.7230967 -0.7761684 -0.44875912 -0.24320426 -0.1257043
#> cyl  -0.8108118 -0.8521620 -0.69993811 -0.52260705 -0.4926866
#> disp -0.7104159 -0.8475514 -0.71021393 -0.59122704 -0.5555692
#> qsec  0.7445354  0.4186840  0.09120476 -0.22986086 -0.2126822
#> vs    1.0000000  0.6640389  0.44027846  0.16834512  0.2060233
#> mpg   0.6640389  1.0000000  0.68117191  0.59983243  0.4802848
#> drat  0.4402785  0.6811719  1.00000000  0.71271113  0.6996101
#> am    0.1683451  0.5998324  0.71271113  1.00000000  0.7940588
#> gear  0.2060233  0.4802848  0.69961013  0.79405876  1.0000000
cor_sort(x, hclust_method = "ward.D2") # It can also reorder the long form output
#> # Correlation Matrix (pearson-method)
#> 
#> Parameter1 | Parameter2 |     r |         95% CI | t(30) |         p
#> --------------------------------------------------------------------
#> wt         |       carb |  0.43 | [ 0.09,  0.68] |  2.59 | 0.205    
#> wt         |       qsec | -0.17 | [-0.49,  0.19] | -0.97 | > .999   
#> wt         |         vs | -0.55 | [-0.76, -0.26] | -3.65 | 0.023*   
#> wt         |         am | -0.69 | [-0.84, -0.45] | -5.26 | < .001***
#> wt         |       gear | -0.58 | [-0.77, -0.29] | -3.93 | 0.012*   
#> cyl        |         wt |  0.78 | [ 0.60,  0.89] |  6.88 | < .001***
#> cyl        |       disp |  0.90 | [ 0.81,  0.95] | 11.45 | < .001***
#> cyl        |         hp |  0.83 | [ 0.68,  0.92] |  8.23 | < .001***
#> cyl        |       carb |  0.53 | [ 0.22,  0.74] |  3.40 | 0.041*   
#> cyl        |       qsec | -0.59 | [-0.78, -0.31] | -4.02 | 0.010*   
#> cyl        |         vs | -0.81 | [-0.90, -0.64] | -7.59 | < .001***
#> cyl        |       drat | -0.70 | [-0.84, -0.46] | -5.37 | < .001***
#> cyl        |         am | -0.52 | [-0.74, -0.21] | -3.36 | 0.043*   
#> cyl        |       gear | -0.49 | [-0.72, -0.17] | -3.10 | 0.079    
#> disp       |         wt |  0.89 | [ 0.78,  0.94] | 10.58 | < .001***
#> disp       |         hp |  0.79 | [ 0.61,  0.89] |  7.08 | < .001***
#> disp       |       carb |  0.39 | [ 0.05,  0.65] |  2.35 | 0.303    
#> disp       |       qsec | -0.43 | [-0.68, -0.10] | -2.64 | 0.197    
#> disp       |         vs | -0.71 | [-0.85, -0.48] | -5.53 | < .001***
#> disp       |       drat | -0.71 | [-0.85, -0.48] | -5.53 | < .001***
#> disp       |         am | -0.59 | [-0.78, -0.31] | -4.02 | 0.010*   
#> disp       |       gear | -0.56 | [-0.76, -0.26] | -3.66 | 0.023*   
#> hp         |         wt |  0.66 | [ 0.40,  0.82] |  4.80 | 0.001**  
#> hp         |       carb |  0.75 | [ 0.54,  0.87] |  6.21 | < .001***
#> hp         |       qsec | -0.71 | [-0.85, -0.48] | -5.49 | < .001***
#> hp         |         vs | -0.72 | [-0.86, -0.50] | -5.73 | < .001***
#> hp         |       drat | -0.45 | [-0.69, -0.12] | -2.75 | 0.170    
#> hp         |         am | -0.24 | [-0.55,  0.12] | -1.37 | > .999   
#> hp         |       gear | -0.13 | [-0.45,  0.23] | -0.69 | > .999   
#> qsec       |       carb | -0.66 | [-0.82, -0.40] | -4.76 | 0.001**  
#> qsec       |         vs |  0.74 | [ 0.53,  0.87] |  6.11 | < .001***
#> qsec       |         am | -0.23 | [-0.54,  0.13] | -1.29 | > .999   
#> qsec       |       gear | -0.21 | [-0.52,  0.15] | -1.19 | > .999   
#> vs         |       carb | -0.57 | [-0.77, -0.28] | -3.80 | 0.017*   
#> vs         |         am |  0.17 | [-0.19,  0.49] |  0.94 | > .999   
#> vs         |       gear |  0.21 | [-0.15,  0.52] |  1.15 | > .999   
#> mpg        |         wt | -0.87 | [-0.93, -0.74] | -9.56 | < .001***
#> mpg        |        cyl | -0.85 | [-0.93, -0.72] | -8.92 | < .001***
#> mpg        |       disp | -0.85 | [-0.92, -0.71] | -8.75 | < .001***
#> mpg        |         hp | -0.78 | [-0.89, -0.59] | -6.74 | < .001***
#> mpg        |       carb | -0.55 | [-0.75, -0.25] | -3.62 | 0.024*   
#> mpg        |       qsec |  0.42 | [ 0.08,  0.67] |  2.53 | 0.222    
#> mpg        |         vs |  0.66 | [ 0.41,  0.82] |  4.86 | 0.001**  
#> mpg        |       drat |  0.68 | [ 0.44,  0.83] |  5.10 | < .001***
#> mpg        |         am |  0.60 | [ 0.32,  0.78] |  4.11 | 0.008**  
#> mpg        |       gear |  0.48 | [ 0.16,  0.71] |  3.00 | 0.097    
#> drat       |         wt | -0.71 | [-0.85, -0.48] | -5.56 | < .001***
#> drat       |       carb | -0.09 | [-0.43,  0.27] | -0.50 | > .999   
#> drat       |       qsec |  0.09 | [-0.27,  0.43] |  0.50 | > .999   
#> drat       |         vs |  0.44 | [ 0.11,  0.68] |  2.69 | 0.187    
#> drat       |         am |  0.71 | [ 0.48,  0.85] |  5.57 | < .001***
#> drat       |       gear |  0.70 | [ 0.46,  0.84] |  5.36 | < .001***
#> am         |       carb |  0.06 | [-0.30,  0.40] |  0.32 | > .999   
#> am         |       gear |  0.79 | [ 0.62,  0.89] |  7.16 | < .001***
#> gear       |       carb |  0.27 | [-0.08,  0.57] |  1.56 | > .999   
#> 
#> p-value adjustment method: Holm (1979)
#> Observations: 32
cor_sort(summary(x, redundant = TRUE)) # As well as from the summary
#> # Correlation Matrix (pearson-method)
#> 
#> Parameter |     carb |       wt |       hp |      cyl |     disp |     qsec |       vs |      mpg |     drat |       am |     gear
#> ----------------------------------------------------------------------------------------------------------------------------------
#> carb      |          |  0.43*** |  0.75*** |  0.53*** |  0.39*** | -0.66*** |    -0.57 |  -0.55** |  -0.09** |     0.06 |    0.27*
#> wt        |  0.43*** |          |  0.66*** |  0.78*** |  0.89*** | -0.17*** |   -0.55* | -0.87*** |   -0.71* |    -0.69 |   -0.58*
#> hp        |  0.75*** |  0.66*** |          |  0.83*** |  0.79*** | -0.71*** |    -0.72 | -0.78*** |   -0.45* |   -0.24* |    -0.13
#> cyl       |  0.53*** |  0.78*** |  0.83*** |          |     0.90 |  -0.59** | -0.81*** | -0.85*** |    -0.70 |    -0.52 | -0.49***
#> disp      |  0.39*** |  0.89*** |  0.79*** |     0.90 |          | -0.43*** |    -0.71 |    -0.85 | -0.71*** | -0.59*** |    -0.56
#> qsec      | -0.66*** | -0.17*** | -0.71*** |  -0.59** | -0.43*** |          |     0.74 |    0.42* |  0.09*** |   -0.23* |    -0.21
#> vs        |    -0.57 |   -0.55* |    -0.72 | -0.81*** |    -0.71 |     0.74 |          |  0.66*** |     0.44 |     0.17 |   0.21**
#> mpg       |  -0.55** | -0.87*** | -0.78*** | -0.85*** |    -0.85 |    0.42* |  0.66*** |          |     0.68 |     0.60 |    0.48*
#> drat      |  -0.09** |   -0.71* |   -0.45* |    -0.70 | -0.71*** |  0.09*** |     0.44 |     0.68 |          |  0.71*** |     0.70
#> am        |     0.06 |    -0.69 |   -0.24* |    -0.52 | -0.59*** |   -0.23* |     0.17 |     0.60 |  0.71*** |          |     0.79
#> gear      |    0.27* |   -0.58* |    -0.13 | -0.49*** |    -0.56 |    -0.21 |   0.21** |    0.48* |     0.70 |     0.79 |         
#> 
#> p-value adjustment method: Holm (1979)