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
任何人都可以向我解释这个错误是什么以及我该如何解决这个问题吗?
最佳答案
考虑一下您将什么用作scope
参数:2013 + 2014 + 2015 + 2016
将不会作为引用列名的公式进行计算,而是只是添加了一堆数字。这就是为什么名称不以数字开头通常是一种好的做法。您可以通过以下两种方式之一对其进行转义:在提供这些名称时使用反引号,或者更改名称以便它们以字母开头。由于这些是年份,因此以“y”开头对他们来说是有意义的。
# 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)
关于r - 尝试执行逐步向前回归,但出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50710094/