R - формула объекта не найдена внутри функции - PullRequest
0 голосов
/ 21 октября 2019

Я создал функцию прокрутки, применяющую экспоненциально взвешенные наименьшие квадраты, используя пакет 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)

1 Ответ

0 голосов
/ 21 октября 2019

Вы можете просто обернуть y ~ x + I(x^2) в кавычки ("y ~ x + I(x^2)").

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