Корреляционная матрица, которая считает пересечение между переменными - PullRequest
0 голосов
/ 01 марта 2019

У меня большой набор данных с идентификатором и некоторыми двоичными переменными.Я хочу создать корреляционную матрицу, которая считает пересечения, т.е.если var1 и var2 имеют 20 идентификаторов, каждый с 1, то var1, var2 равен 20 (то же самое var2, var1), диагональ просто сумма (столбец)

, например:

ID <- c(100,101,102,104)
var1 <- c(1,1,1,1)
var2 <- c(1,0,0,1)
var3 <- c(1,1,0,0)
var4 <- c(0,0,0,1)

я ожидаю, что результат будет:

vars var1 var2 var3 var4
var1    4    2    2    1
var2    2    2    1    1
var3    2    0    2    0
var4    1    1    0    1

1 Ответ

0 голосов
/ 01 марта 2019

Сформируйте матрицу m из столбцов var и умножьте ее транспонирование на себя, т.е. t(m) %*% m или используйте crossprod, как показано ниже:

m <- cbind(var1, var2,var3, var4)
crossprod(m)

, давая:

     var1 var2 var3 var4
var1    4    2    2    1
var2    2    2    1    1
var3    2    1    2    0
var4    1    1    0    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...