Как я могу выполнить линейную регрессию без ошибок? - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь выполнить регрессию OLS и получаю сообщение об ошибке, что определенная переменная не может быть найдена. Я новичок в R.

Весь код работает, кроме последней строки.

load("psub.Rdata")

VarsForOLS.tbl <- psub %>%
  mutate(personalIncome = PINCP, groupingID = ORIGRANDGROUP, age = AGEP, sex = SEX, workingclass = COW, educationalLevel = SCHL) %>%
select(personalIncome, groupingID, age, sex, workingclass, educationalLevel)

trainingIncome.data <- subset(VarsForOLS.tbl, groupingID >=500)
testingIncome.data <- subset(VarsForOLS.tbl, groupingID < 500)

y <- "log(personalIncome, base=10)"
explanatoryVariables <- c("age", "sex", "workingclass", "educationLevel")

olsModel <- paste(y, paste(explanatoryVariables, collapse = "+"), sep = "-")

trainingIncome.ols <- lm(olsModel, data = trainingIncome.data)

Я ожидаю, что смогу запустить линейную регрессию, но ошибка говорит:

Error in eval(parse(text = x, keep.source = FALSE)[[1L]]) : 
  object 'personalIncome' not found

1 Ответ

1 голос
/ 11 мая 2019

Для лучшей помощи вы должны опубликовать воспроизводимый пример .

Вы генерируете свою формулу с -, который должен быть ~. Еще лучше, @benbolker предложил эту удобную функцию

olsModel <- reformulate(explanatoryVariables, response="y")

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

Как правило, если вы застряли на подобных вещах, я бы порекомендовал попробовать модель без всей параметризации (просто наберите ее!) И посмотреть, запускается ли она первой. Также попробуйте print(olsModel), чтобы увидеть, что вы в итоге вставили вместе.

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