首页 > 解决方案 > 在 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()) 中的错误:公式无效

非常感谢!

标签: rfor-loop

解决方案


IIUC 您想拟合一个以 CE_price[,i] 作为因变量的模型。

因此,您将逗号替换为波浪号 (~)。波浪号的第一个(在这种情况下也是唯一的)参数是一个公式,而不是因变量。

comb_i_j<-lm(CE_price[,i]~CE_price[,j])


推荐阅读