【发布时间】:2019-10-21 13:36:29
【问题描述】:
我创建了一个函数来使用 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 确实存在!但是,即使在调试模式下,即使我尝试将 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)
【问题讨论】:
标签: r