簡體   English   中英

配對列和系數中R中的相關矩陣

[英]Correlation matrix in R from paired columns and coefficients

我有一個包含三個變量的數據框:a,b,c。 數據集中的前兩列是所有可能組合的兩個變量的配對,第三列是它們之間的相關性。 如下所示。

> var1 <- c("a","a","b")
> var2 <- c("b","c","c")
> r <- c(.55,.25,.75)
> as.data.frame(cbind(var1,var2,r))
  var1 var2    r
1    a    b  0.55
2    a    c  0.25
3    b    c  0.75

我的問題是,是否可以將包含相關性的數據幀轉換為R中的相關性矩陣對象? 我也想使用R的一些繪圖和圖形功能。

最終,我想要的是一個看起來像這樣的矩陣

  a    b    c
a 1   .55  .25

b .55  1   .25

c .25  .75  .75

嘗試這個:

vars <- unique(c(var1, var2))
df <- cbind.data.frame(var1,var2,r)
cor.df <- expand.grid(vars, vars)
cor.df <- rbind(merge(cor.df, df, by.x=c('Var1', 'Var2'), by.y=c('var1', 'var2')),
                merge(cor.df, df, by.x=c('Var2', 'Var1'), by.y=c('var1', 'var2')),
                data.frame(Var1=vars, Var2=vars, r=1))
library(reshape2)
cor.mat <- dcast(cor.df, Var1~Var2, value.var='r')
rownames(cor.mat) <- cor.mat[,1]
cor.mat <- as.matrix(cor.mat[-1])
cor.mat
#      a    b    c
# a 1.00 0.55 0.25
# b 0.55 1.00 0.75
# c 0.25 0.75 1.00

# plot the correlation matrix
library(ggplot2)
ggplot(data = cor.df, aes(x=Var1, y=Var2, fill=r)) + 
  geom_tile()

在此處輸入圖片說明

顯然,您具有相關矩陣的上三角部分和下三角部分(由r提供),並且不需要data.frame來滿足您的目的。 為元素為1的矩陣提供上下三角就足夠了。

var <- unique(c(var1,var2))
corr <- matrix(1,nrow=length(r),ncol=length(r)) # a matrix with 1s
corr[lower.tri(corr,diag = FALSE)] <- r # lower triangular matrix to be r
corr[upper.tri(corr,diag = FALSE)] <- r # upper triangular matrix to be r 
corr <- as.data.frame(corr) # formatting
row.names(corr) <- var # row names
colnames(corr) <- var # column names

corrplot具有一個功能corrplot非常適合繪制具有不同選項的相關矩陣(請參閱參數method )。 這是一個例子:

library(corrplot)
corrplot(as.matrix(corr),method="circle")

corrplot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM