Пытаетесь выполнить пошаговую регрессию вперед, но я получаю ошибку? - PullRequest
0 голосов
/ 06 июня 2018
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 голосов
/ 06 июня 2018

Подумайте о том, что вы используете в качестве аргумента scope: 2013 + 2014 + 2015 + 2016 будет оцениваться не как формула, ссылающаяся на имена столбцов, а только на добавляемую группу чисел.Вот почему обычно не рекомендуется, чтобы имена начинались с цифр.Вы можете избежать этого одним из двух способов: либо использовать обратные пометки при указании этих имен, либо изменить имена, чтобы они начинались с буквы.Поскольку это годы, имеет смысл начинать с «у».

# 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)
0 голосов
/ 06 июня 2018

Я думаю, что вы также должны определить область действия как объект lm ().

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

Этот код выполняется здесь, но переменные не добавляются.Это может быть потому, что пример данных слишком прост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...