gpt4 book ai didi

r - 为什么这个相关矩阵不重新排列(corrr)?

转载 作者:行者123 更新时间:2023-12-04 10:17:50 27 4
gpt4 key购买 nike

使用 corrr 生成 Pearson 相关矩阵,我得到了一个不错的数据框,并且可以重新排列以获得一个有组织的矩阵。然而,当我用 rplot 绘制它时,重新排列似乎被抛弃了。

这是相关数据框的一个子集,矩阵运行:

data <- select(data,c(npqmax,npq_end,npq_slope_up,pi,npqmax,fvfm,phipsii_end))

> data
# A tibble: 861 x 6
npqmax npq_end npq_slope_up pi fvfm phipsii_end
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2.60 0.866 1.25 0.805 0.745 0.492
2 2.92 1.02 1.27 0.801 0.753 0.485
3 2.95 0.881 1.33 0.832 0.752 0.518
4 2.56 0.846 1.34 0.811 0.736 0.488
5 2.68 0.822 1.52 0.820 0.738 0.499
6 2.58 0.876 1.32 0.809 0.740 0.486
7 2.82 0.908 1.14 0.824 0.749 0.505
8 2.93 0.997 1.29 0.803 0.749 0.476
9 2.71 0.936 1.51 0.819 0.740 0.490
10 2.80 0.844 1.40 0.837 0.754 0.527
# ... with 851 more rows

### next run Pearson correlation

cormat <- correlate(data)

> cormat
# A tibble: 6 x 7
rowname npqmax npq_end npq_slope_up pi fvfm phipsii_end
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 npqmax NA 0.240 0.0103 0.0820 0.249 0.0582
2 npq_end 0.240 NA 0.193 -0.716 -0.0492 -0.729
3 npq_slope_up 0.0103 0.193 NA -0.167 -0.293 -0.261
4 pi 0.0820 -0.716 -0.167 NA 0.383 0.918
5 fvfm 0.249 -0.0492 -0.293 0.383 NA 0.614
6 phipsii_end 0.0582 -0.729 -0.261 0.918 0.614 NA

### make a nice rearrangement

cormat2 %>%
rearrange(method = "MDS", absolute = FALSE) %>%
shave()

> cormat2
# A tibble: 6 x 7
rowname npq_end npq_slope_up npqmax fvfm pi phipsii_end
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 npq_end NA NA NA NA NA NA
2 npq_slope_up 0.193 NA NA NA NA NA
3 npqmax 0.240 0.0103 NA NA NA NA
4 fvfm -0.0492 -0.293 0.249 NA NA NA
5 pi -0.716 -0.167 0.0820 0.383 NA NA
6 phipsii_end -0.729 -0.261 0.0582 0.614 0.918 NA


现在我会用 rplot(shape = 15, colors = c("red", "green")) 来绘制这个图但不是得到像 corrr creator's blog 上发现的那样的情节:

example heatmap
()

我得到了一些看起来不太安排的东西:

[ Full dataset matrix plot[1]

知道出了什么问题吗?

谢谢。

最佳答案

我使用了 mtcars,这也是 corrr 博客中的示例,我得到了相同的结果:

library(corrr)
library(dplyr)
library(ggplot2)

cormat <- correlate(mtcars)
cormat2 <- cormat %>%
rearrange(method = "MDS", absolute = FALSE) %>%
shave()

cormat2 %>% rplot(shape = 15, colors = c("red", "green"))

enter image description here

如果您查看矩阵 data.frame,现在会出现 NA 值,这意味着行顺序困惑了。应该反射(reflect)给作者,下面我对 corrr::rplot.cor_df 做了一些改动:
newplot = function (rdf, legend = TRUE, shape = 16, colours = c("indianred2", 
"white", "skyblue1"), print_cor = FALSE, colors)
{
if (!missing(colors))
colours <- colors
row_order <- rdf$rowname
pd <- stretch(rdf, na.rm = TRUE)
pd$x <- factor(pd$x,levels=row_order)
pd$y <- factor(pd$y,levels=rev(row_order))
pd$size = abs(pd$r)
pd$label = fashion(pd$r)
plot_ <- list(geom_point(shape = shape), if (print_cor) geom_text(color = "black",
size = 3, show.legend = FALSE), scale_colour_gradientn(limits = c(-1,
1), colors = colours), theme_classic(), labs(x = "",
y = ""), guides(size = "none", alpha = "none"), if (legend) labs(colour = NULL),
if (!legend) theme(legend.position = "none"))
ggplot(pd, aes_string(x = "x", y = "y", color = "r", size = "size",
alpha = "size", label = "label")) + plot_
}

newplot(cormat2,shape=15,colours=c("#29c7ac","#c02739"))

enter image description here

快速解释,在上面的函数中,有一行 stretch(rdf, na.rm = TRUE)相关性 data.frame 融化但不保留变量的顺序。我只是添加了两行来重构它们,还有其他方法,但为了您的目的,这应该没问题。

关于r - 为什么这个相关矩阵不重新排列(corrr)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60996395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com