首页 文章

如何计算R中的相关性

提问于
浏览
4

我想计算R中数据集x的子集的列之间的相关系数我有40个模型的行,每个200个模拟总计8000行我想计算每个模拟的列之间的corr系数(40行)

cor(x[c(3,5)]) 从所有8000行计算
我需要 cor(x[c(3,5)]) ,但仅限于 X$nsimul=1 等等

你能帮我解决这个问题

2 回答

  • 1

    我'm not sure what exactly you'正在使用 x[c(3,5)] ,但看起来你想要做类似以下的事情:你有一个像这样的数据框 X

    set.seed(123)
    X <- data.frame(nsimul = rep(1:2, each=5), a = sample(1:10), b = sample(1:10))
    
    > X
       nsimul  a  b
    1       1  1  6
    2       1  8  2
    3       1  9  1
    4       1 10  4
    5       1  3  9
    6       2  4  8
    7       2  6  5
    8       2  7  7
    9       2  2 10
    10      2  5  3
    

    并且您希望通过 nsimul 列拆分此数据框,并计算每个组中 ab 之间的相关性 . 这是一个典型的 split-apply-combine 问题, plyr 包非常适合:

    require(plyr)
    > ddply(X, .(nsimul), summarize, cor_a_b = cor(a,b))
      nsimul    cor_a_b
    1      1 -0.7549232
    2      2 -0.5964848
    
  • 6

    您可以使用 by 功能,例如:

    correlations <- as.list(by(data=x,INDICES=x$nsimul,FUN=function(x) cor(x[3],x[5])))
    
    # now you can access to correlation for each simulation
    correlations["simulation 1"]
    correlations["simulation 2"]
    ...
    correlations["simulation 40"]
    

相关问题