Я создал функцию прокрутки, применяющую экспоненциально взвешенные наименьшие квадраты, используя пакет dynlm. Вот код:
residualization<-function(df,formula_ref, size){
rollapply(df,
width=size,
FUN = ewma_regression,
formula_ref = formula_ref,
by.column=FALSE, align="right")
}
ewma_regression<-function(x,formula_ref) {
n<-nrow(x)
weights <- 0.06*0.94^(seq(n-1,0,by=-1))
t <- dynlm(formula=as.formula(formula_ref), data = as.zoo(x),weights = weights)
return(t$residuals)
}
Однако, когда я запускаю этот код в моем наборе данных, он показывает проблему:
Error in as.formula(formula_ref) : object 'formula_ref' not found
Когда я пытаюсь его отладить, в средефункция, переменная Formula_ref существует! Однако даже в режиме отладки я не могу запустить регрессию dynlm, даже если я попытаюсь установить формула_реф для временного объекта формулы.
Кто-нибудь может мне помочь? Я знаю, что это может быть глупой ошибкой, но я не могу найти!
Воспроизводимый пример:
dates<-seq.Date(from=as.Date("2010-01-01"), length.out = 1000, by="day")
teste1<-data.frame(x=rnorm(1000),y=rnorm(1000)*5)
teste2<-xts(teste1,order.by = dates)
formula.test<- y ~ x + I(x^2)
teste3<-residualization(df=teste2,formula_ref = formula.test, size=100)