首页 > 解决方案 > 如何执行线性回归而不出错?

问题描述

我试图进行 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

标签: r

解决方案


为了获得最佳帮助,您应该发布一个可重现的示例

您正在生成您的公式,-其中 a 应该是 a ~。更好的是,@benbolker 建议了这个方便的功能

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

它将自动解析字符向量并将y变量添加为响应,因此您不必担心波浪线和粘贴等。

一般来说,如果你被困在这些事情上,我建议在没有所有参数化的情况下尝试模型(只需输入它!)并查看它是否首先运行。另外,试着print(olsModel)看看你最终粘贴在一起的东西。


推荐阅读