【问题标题】:make asymmetric pairwise comparisons in a matrix在矩阵中进行不对称的成对比较
【发布时间】:2013-05-30 07:47:48
【问题描述】:

我有一个具有成对值但不是对称的矩阵,我的意思是,AxB 与 BxA 不同。这是一个虚拟示例:

    A    B    C    D    E
A    1  0.7  0.8  0.8  0.9
B  0.2    1  0.2  0.8  0.3
C  0.3  0.4    1  0.5  0.6
D  0.4  0.9  0.8    1  0.4
E  0.8  0.2  0.8  0.8    1

我需要知道有多少 [i,j] 比较高于或等于 0.7 以及有多少 [j,i] 比较也高于 0.7 以便删除高冗余元素。在示例中,元素 A 具有更多数量的元素 B, C, D, and E,应在进一步分析中将其删除。我考虑过为此使用table 命令

table1 <- apply(M, 1, table)
table2 <- apply(M, 2, table)

然后比较 table1 和 table2 以去除多余的元素,这会是一个好方法吗?

谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    你想对 > 0.7 的条目做什么?将它们设置为 NA?删除它们?无论如何,这应该会让你朝着正确的方向前进:

    #Assumes your data is named x
    > which(x > 0.7, arr.ind = TRUE)
    #----
      row col
    A   1   1
    E   5   1
    B   2   2
    D   4   2
    ...
    
    #Set values = NA
    x[which(x>0.7, arr.ind = TRUE)] <- NA
    #---
        A   B   C   D   E
    A  NA 0.7  NA  NA  NA
    B 0.2  NA 0.2  NA 0.3
    C 0.3 0.4  NA 0.5 0.6
    D 0.4  NA  NA  NA 0.4
    E  NA 0.2  NA  NA  NA
    

    【讨论】:

    • 谢谢@Chase,我喜欢你的第二种方法。实际上,这些成对值是 AxB、BxA 等之间共享元素的数量,其中 A 是 4 个元素的列表,B 是 7 个元素的列表。因此,我想删除那些在 A、B、C 之间以高比例共享的项目......按照你的方法,我可以计算行和列中的 NA 数量,然后删除那些值高于阈值的项目我选择,在这个虚拟示例中,共享索引在 4/5 元素中高于 0.7,因此我应该从矩阵中删除 A。
    • 短版:x[x&gt;0.7] &lt;- NA
    猜你喜欢
    • 2012-09-22
    • 2014-04-22
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多