Вопрос по xts, zoo, time-series, r, regression – Скользящая регрессия xts объекта в R

2

Я пытаюсь выполнить скользящую 100-дневную регрессию для объекта xts и вернуть статистику t коэффициента наклона для всех дат. У меня есть объект XTS, цены:

> tail(prices)
             DBC   EEM   EFA    GLD   HYG    IEF   IWM   IYR    MDY    TLT
2012-11-02 27.14 41.60 53.69 162.60 92.41 107.62 81.19 64.50 179.99 122.26
2012-11-05 27.37 41.80 53.56 163.23 92.26 107.88 81.73 64.02 181.10 122.95
2012-11-06 27.86 42.13 54.07 166.30 92.40 107.39 82.34 64.16 182.69 121.79
2012-11-07 27.34 41.44 53.26 166.49 91.85 108.29 80.34 63.84 178.90 124.00
2012-11-08 27.38 40.92 52.78 167.99 91.55 108.77 79.21 63.19 176.37 125.84
2012-11-09 27.60 41.00 52.80 167.82 91.39 108.78 79.38 62.98 176.80 125.98

И функция для генерации значения t из регрессии последних 100 цен и возврата в качестве объекта xts с теми же именами столбцов, что и цены:

compute.regression 
Может быть, я неправильно понимаю вашу цель и код (легко сделать без запуска кода и данных), но это не такt Ваша линейная модель в точности эквивалентна lm (last100 ~ seq (1100))? Дон»Вы хотите прогнозировать на основе предыдущих цен, а не дат? MattBagg

Ваш Ответ

1   ответ
4

rollapply call должен вызывать функцию, которая возвращает t-значения. Прямо сейчас это возвращаетlm объект, который не является допустимым значением дляcoredata зоопарка объекта.

Сделайте так, чтобы ваша функция возвращала только t-значения, и она будет работать.

library(quantmod)
getSymbols("SPY;IEF")
x <- merge(Cl(SPY),Cl(IEF))
f <- function (x) {
  res <- coef(summary(lm(x ~ time(x))))
  sapply(res, "[" ,"(Intercept)"  ,"t value")
}
r <- rollapplyr(x, 100, f, by.column=FALSE)
Спасибо - это почти сработало. Я изменил (Перехват) на время (х), чтобы получить значение, которое я искал. Однако я столкнулся с проблемой, когда столкнулся с моим кодом. Если бы я использовал: х <- оценил и выполнил последний код (r, 1), возвращенный: Ответ DBC Ответ EEM Ответ EFA Ответ GLD Ответ HYG Ответ IEF Ответ IWM IYR 1352419200 8.495762 15.85537 17.79187 15.79783 19.57752 -1.665972 9.202527 3.525019 Response MD2310 T-образная точка 132520-я-я-я-я-я-я-я-ярус-я-ярусная скоба что такое номер 1352419200? Это должна быть дата ... AdmiralF

Похожие вопросы