r - 在 R 中进行 for 循环以进行协整测试时,formula.default(object, env = baseenv()) 中的错误
问题描述
我在 R 中使用 for 循环对四个系列进行 adf.test(我预计会有 16=4X4 adf.test 输出)。但它返回了一个错误:formula.default(object, env = baseenv()) 中的错误:公式无效。有人可以帮我解决这个问题吗?
#这是我的数据框,包括四个系列:
CE_price
Sonos.Inc GoPro..Inc. Hamilton.Beach.Brands.Holding.Co UNIVERSAL.ELECTRONICS.INC
1 13.48714 4.110586 14.94600 44.99887
2 13.22786 4.040829 15.08333 44.04571
3 13.83207 4.066529 15.09615 45.65071
4 13.75500 4.022857 15.13800 42.13223
5 13.17276 3.948729 14.96821 42.13223
6 12.18420 3.813100 14.44910 42.13223
#这是我的代码:
require(tseries)
for (i in 1:ncol(CE_price)) {
for (j in 1:ncol(CE_price)){
col_i<-colnames(CE_price)[i]
col_j<-colnames(CE_price)[j]
comb_i_j<-lm(CE_price[,i],CE_price[,j])
coin_i_j<-adf.test(comb_i_j$residuals,k=1)
print(paste(col_i,'&',col_j,'coin_result is',coin_i_j ))
}}
返回:formula.default(object, env = baseenv()) 中的错误:公式无效
非常感谢!
解决方案
IIUC 您想拟合一个以 CE_price[,i] 作为因变量的模型。
因此,您将逗号替换为波浪号 (~)。波浪号的第一个(在这种情况下也是唯一的)参数是一个公式,而不是因变量。
comb_i_j<-lm(CE_price[,i]~CE_price[,j])