как использовать применить на кросс-корреляционной функции в R - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь запустить несколько функций взаимной корреляции между парами столбцов из большого фрейма данных.Я написал цикл for, который выполняет эту работу, но время вычислений медленное.

Например, я хочу запустить функцию CCF на s1 и s2, затем на s3 и s4.реальные данные имеют> 100 столбцов и> 50000 строк, каждая пара столбцов имеет уникальное количество строк.также выполняю симуляции Монте-Карло и готовлю максимальные CCF / задержки, но для краткости я не включил этот код здесь.Я запустил профилировщик, и CCF, кажется, занимает больше времени для запуска, я надеялся, что функция применения может помочь решить эту проблему?

blahthresholdtest <- data.frame("S1"=1:8, "S2" = (8:1), "S3"= 1:8, "S4"= 9:2)

для цикла, который я написал:

     k=1
  for(i in seq(1,ncol(blahthresholdtest),2)){
    ccftime <- ccf(blahthresholdtest[,i],blahthresholdtest[,i+1], type="correlation", na.action=na.omit)
    #adds one to k each loop to shift columns for analysis over
    k <- k + 1
  }

1 Ответ

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

Я бы сначала установил аргумент plot для ccf в FALSE.Затем я бы проверил код ccf (который является чистым R-кодом), чтобы увидеть, можно ли написать более простую версию.Если это не поможет, вы можете проверить, можете ли вы запустить цикл параллельно;см., например, справку для пакета parallel, который поставляется с R.

vignette("parallel") 
...