我正在尝试创建一个函数来测试所有组合并找到最低的AIC,类似于auto.arima函数。但似乎我不能在armaFit函数中使用变量。此代码按预期工作:
public void doSomething() {
// Do it here
}
但是这段代码没有:
library(quantmod)
library(fArma)
library(PerformanceAnalytics)
getSymbols('SPY',from='1900-01-01')
spyRets=Return.calculate(Cl(SPY),method=c('log')) #log returns
spyArma=armaFit(~arma(1,1),data=spyRets)
为什么会出现这种情况?
答案 0 :(得分:3)
那是因为当你使用公式时,假设所有变量都来自你通过data=
参数传递的data.frame。
在这种情况下,您最好动态地构建公式。一种方法是使用bquote()
。
p <- 1
q <- 1
f <- eval(bquote(~arma(.(p), .(q))))
spyArma <- armaFit(f,data=spyRets)