вычисление коэффициента корреляции для двоичной переменной в r - PullRequest
0 голосов
/ 29 января 2020
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. На сколько тестирование А увеличивает выход потенциальных позитивов для каждой когорты? 2. Как часто А и В коррелируют для каждой когорты?

Чтобы проанализировать корреляцию между тестами (AB), я попытался вычислить коэффициент Phi. Я последовал предложению @akrun в этом другом посте, но не смог заставить его работать.

R l oop для коэффициента Фи

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

Любые предложения о том, как я могу рассчитать это?

1 Ответ

0 голосов
/ 29 января 2020

Это не работает, потому что ваши данные организованы не так. Каждая строка ваших данных представляет собой полную таблицу 2х2. Используйте 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 
...