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
有人可以向我解释这个错误是什么以及如何解决这个错误吗?
答案 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
此代码在此处运行,但未添加任何变量。 可能是因为示例数据太简单了。