具有多个变量的线性回归模型抛出错误

Linear Regression model with multiple varibles throws error

我从 R 和回归开始,运行 在我认为很简单的事情上遇到了一个奇怪的问题... 我试图从 Kaggle.

的这个样本数据集创建一个线性回归模型

我创建的模型应该符合与一些参数相关的预期寿命。一切正常,但是当我将 'Total expenditure' 添加到我的参数列表时,模型函数在第 13 行抛出错误:

Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) :

这是我的代码:

library(readr)

LE <- read_csv("Life_Expectancy_Data.csv")
head(LE)
View(LE)
# subset 2015
LE_2015 <- subset(LE, LE$Year == 2015)
LE_2015[c(1,3,4,7, 13, 14)]

# works
model <- lm(LE_2015$`Life expectancy` ~ LE_2015$Status + LE_2015$Alcohol + LE_2015$Polio)
# doesn't work
model <- lm(LE_2015$`Life expectancy` ~ LE_2015$`Total expenditure`+ LE_2015$Status + LE_2015$Alcohol + LE_2015$Polio)

print(model)

如果有人能帮助我,我会很高兴, 谢谢!

这是因为 Allan 已经提到的总支出栏。该模型过滤掉所有包含您使用的变量缺失值的行。在过滤掉总支出的所有缺失值时,您只有一个唯一的状态值。这就是它抛出特定错误的原因。

我建议您只删除总支出栏。但是,只是为了完整。您也可以将状态列变成两列。

library(mltools)
library(tidyverse)
library(data.table)
onehot <- as.data.table(LE_2015$Status) %>% one_hot()
LE_Final <- cbind(onehot, LE_2015)


model <- lm(LE_Final$`Life expectancy` ~ LE_Final$`Total expenditure` + LE_Final$Alcohol + LE_Final$Polio+ LE_Final$V1_Developed + LE_Final$V1_Developing)