【问题标题】:pairwise combinations of coefficient and correlation p.value?系数和相关p.value的成对组合?
【发布时间】:2013-06-09 20:22:50
【问题描述】:

我想按列计算矩阵的系数和相关 p 值的成对组合。

这里我使用了两个函数:

allCoef<- function(Y,X) {  lm(Y~X+0)$coef }
allCorr.p<- function(Y,X) {  cor.test(Y,X)$p.value }

例如我有一个矩阵A:

A= matrix(sample(1:100,16),4,4)
apply(Y=A,2,allCoef,X=A)

工作正常。

apply(Y=A,2,allCorr.p,X=A)

但是,cor.test.default(Y, X) : 'x' and 'y' must have the same length 中显示错误。有人可以告诉我我在这里做错了什么吗?我使用的是相同的矩阵,所以列的长度应该是相同的。

【问题讨论】:

    标签: r iteration combinations correlation


    【解决方案1】:

    您可以使用combn 函数生成所有列比较组合,然后使用cor.testA 的列组合应用此矩阵(假设A 在您的全局环境中可用):

    # All combinations of pairwise comparisons
    cols <- t( combn(1:4,2) )
    apply( cols , 1 , function(x) cor.test( A[,x[1] ] , A[ , x[2] ] )$p.value )
    #[1] 0.9893876 0.9844555 0.5461623 0.7987615 0.7414658 0.1061751
    

    combn 函数生成的列的成对组合是:

         [,1] [,2]
    [1,]    1    2
    [2,]    1    3
    [3,]    1    4
    [4,]    2    3
    [5,]    2    4
    [6,]    3    4
    

    您的apply(Y=A,2,allCorr.p,X=A) 没有按预期工作,因为(尽管您不需要使用Y=A)您将整个矩阵作为第二个参数传递给您的函数,所以X 实际上具有所有列的长度在你的矩阵中。

    【讨论】:

      猜你喜欢
      • 2020-01-31
      • 2018-01-31
      • 2017-05-23
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多