2010-03-18 9 views
2

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

Это тривиальная задача в Excel, поэтому я убежден, что это можно сделать в R. Я не знаю, какой метод использовать.

ответ

1

Существует много способов сделать это (как и все в R). Я всегда рекомендую использовать временные ряды при работе с данными временных рядов.

Пакет zoo, вероятно, самое популярное время серии пакет (хотя вы можете также посмотреть на других, таких как XTS, TimeSeries, его, FTS):

library(zoo) 
z <- zoo(data.frame(a=1:50, b=3:52), as.Date(1:50)) 
rollapply(z, 30, cor, by.column=F, align = "right") 

Вы также можете найти chart.RollingCorrelation функцию в PerformanceAnalytics пакет полезный.

+0

Спасибо за быстрый ответ. Ты заводишь меня в правильном направлении. Путайтесь через файлы справки, чтобы добраться до окончательного решения. – Milktrader

+0

Я получил метод rollapply из зоопарка для работы. Проверял его на результаты, полученные из Excel, и они совпадают. Одна вещь, которую я сделал по-другому, - это прочитать в файле с помощью метода read.zoo и выбить проблему с объектом zoo с самого начала. Важным параметром для установки является by.column = F. Сначала я не положил его и не получил мусор. – Milktrader

+0

Да. Я установил это в моем примере по уважительной причине. by.column = F означает, что он не выполняет rollapply для каждого столбца отдельно, но передает их все сразу. Также убедитесь, что вы используете align = "right". – Shane

 Смежные вопросы

  • Нет связанных вопросов^_^