计算r中的二元变量的相关系数

时间:2020-01-28 22:12:44

标签: r binary correlation

Dataframe1: group "N"
ID  A   B   score
1   pos pos AB
1   neg pos B
2   neg neg Neg
3   neg pos B
4   neg neg Neg
5   neg neg Neg
5   pos neg A
5   neg pos B


Combined dataframe
    AB  A   B   Neg
N   440 54  67  345
O   3   6   56  543
P   23  25  3   765
R   4   5   67  243

我有4个队列(NOPR),其中有成对的测试(A和B)。所有人都经过了A和B测试。有些对两项测试(AB)均为阳性,有些仅对一项测试(A或B)阳性。我想回答两个问题: 1.对于每个队列,测试A会增加多少潜在的阳性结果? 2.每个队列中A和B多久关联一次?

为了分析测试(AB)之间的相关性,我尝试了计算Phi系数。我已按照@akrun在另一篇文章中的建议进行操作,但无法使其正常工作。

R loop for Phi coefficient

combn(df, 2, FUN = function(x) Phi(x[,1], x[,2]))

关于如何计算此值的任何建议?

1 个答案:

答案 0 :(得分:0)

它不起作用,因为您的数据的组织方式不同。数据的每一行都是一个完整的2x2表。使用dput将您的数据设置为易于阅读的格式。然后我们可以将其剪切/粘贴:

dta <- structure(list(AB = c(440L, 3L, 23L, 4L), A = c(54L, 6L, 25L, 
5L), B = c(67L, 56L, 3L, 67L), Neg = c(345L, 543L, 765L, 243L
)), class = "data.frame", row.names = c("N", "O", "P", "R"))
dfa
#    AB  A  B Neg
# N 440 54 67 345
# O   3  6 56 543
# P  23 25  3 765
# R   4  5 67 243

dfa的第一行是一个表,因此对于N:

N <- matrix(unlist(dfa[1, ]), 2, 2, byrow=TRUE, dimnames=list(A=c("Pos", "Neg"), B=c("Pos", "Neg")))
N
#      B
# A     Pos Neg
#   Pos 440  54
#   Neg  67 345

我们可以使用apply来获取所有的Phi系数:

apply(dfa, 1, function(x) Phi(matrix(x, 2)))
#          N          O          P          R 
# 0.73028594 0.09784794 0.63669678 0.09088293 
相关问题