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

标签 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

任何人都可以向我解释这个错误是什么以及我该如何解决这个问题吗?

最佳答案

考虑一下您将什么用作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/

相关文章:

r - R中的意外符号请参阅代码

r - 在传单中手动添加图例值

Shiny App 中两个图形的 rCharts 大小不同

r - 将轮函数应用于数据帧中的每个元素

r - 有没有办法使用 lapply 生成由列表中列表中的元素组成的数据框?

r - 如何在 data.table 中的多个列中使用 ifelse?

r - 分布多个协调列

r - 带有字符 xintercept 的 geom_vline

r - 在 R 中的 arima.sim 中初始化

r - 按字母顺序排列 R 中 plotly legend 的条目