尝试执行逐步前向回归,但是出现错误?

时间:2018-06-05 23:03:06

标签: r

DF_test <- structure(list(`2013` = c(1L, 0L, 1L), `2014` = c(0L, 0L, 2L), 
`2015` = c(0L, 0L, 1L), `2016` = c(0L, 0L, 0L), Sum = c(4, 
0, 5)), .Names = c("2013", "2014", "2015", "2016", "Sum"), row.names = c(NA, 3L), class = "data.frame")

我正在尝试进行前向逐步回归:

step(lm(Sum~1, data=DF_test), direction="forward", scope=~ 2013 + 2014 + 2015 + 2016)

不幸的是,执行它会产生以下错误:

Error in terms.formula(tmp, simplify = TRUE) : 

  invalid model formula in ExtractVars

有人可以向我解释这个错误是什么以及如何解决这个错误吗?

2 个答案:

答案 0 :(得分:1)

考虑一下您使用scope参数的内容:2013 + 2014 + 2015 + 2016不会被评估为引用列名称的公式,而只会添加一堆数字。这就是为什么没有名字从数字开始的一般好习惯。您可以通过以下两种方式之一来逃避它:在提供这些名称时使用反引号,或者更改名称以便以字母开头。由于这些年份,因此从#34; y&#34;开始是有道理的。

# with backticks
step(lm(Sum~1, data=DF_test), direction="forward", scope=~ `2013` + `2014` + `2015` + `2016`)

# with better names
names(DF_test)[1:4] <- paste0("y", names(DF_test)[1:4])

step(lm(Sum~1, data=DF_test), direction="forward", scope=~ y2013 + y2014 + y2015 + y2016)

答案 1 :(得分:0)

我认为你必须将范围定义为lm()对象。

step(lm(Sum~1,data=DF_test), direction="forward", scope= lm(Sum~.,data=DF_test)) #the "." means all variables

此代码在此处运行,但未添加任何变量。 可能是因为示例数据太简单了。