Получение корреляции со значением одной переменной с остальным набором данных по времени в data.table - PullRequest
1 голос
/ 17 мая 2019

Я украл этот пример из следующего поста: LINK

set.seed(1)
TDT <- data.table(Group = c(rep("A",40),rep("B",60)),
                      Id = c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20)),
                      Time = rep(seq(as.Date("2010-01-03"), length=20, by="1 month") - 1,5),
                      norm = round(runif(100)/10,2),
                      x1 = sample(100,100),
                      x2 = round(rnorm(100,0.75,0.3),2),
                      x3 = round(rnorm(100,0.75,0.3),2),
                      x4 = round(rnorm(100,0.75,0.3),2),
                      x5 = round(rnorm(100,0.75,0.3),2))

Чтобы получить корреляции x1 - x5 по времени, можно использовать:

TDT[, x := .(list(cor(.SD))), by = Time, .SDcols = 5:9]

Однако вместо корреляций x1 - x5 по времени меня интересует корреляция x1 со ВСЕМИ другими переменными (не только x1 - x5) во времени. Кроме того, я как-то хотел бы иметь значение корреляции: для объяснения смотрите видео около 5: 16 .

Чтобы разобраться с нечисловыми столбцами и NA, я попытался пойти по этому пути:

numcols <- which(sapply(TDT, is.numeric))
TDTcor <- TDT[, x := .(list(cor(.SD, use= "pairwise.complete.obs", method= "pearson"))), by = time, .SDcols = numcols]

Основная проблема заключается в том, что это все равно дает все корреляции (что создает проблемы из-за очень больших наборов данных, которые я использую). Это также не дает значения корреляций.

Может кто-нибудь сказать мне, как действовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...