我正在尝试在 R 中建立一个简单的线性回归模型。
模型中有三个因子变量。
模型是
lm(Exercise ~ Econ + Job + Position)
其中“锻炼”是数字因变量,即锻炼的时间量。
“经济”、“工作”、“职位”都是因子变量。
“经济”是指一个人是否有工作。 (级别=就业/未就业)
“工作”是一个人所从事的工作类型。该变量有五个级别。
“职位”是一个人在职场中的地位。该变量也有五个级别。
我尝试进行线性回归并得到一个错误,
"contrasts can be applied only to factors with 2 or more levels"
我认为这个错误是由于因子水平中的 NA 造成的,因为如果“Econ”等于“失业”,则“Job”和“Position”的值就为 NA。 (因为显然失业者没有工作类型和工作职位)
如果我像下面这样分别回归两个模型,则不会发生错误。
lm(Exercise ~ Econ)
lm(Exercise ~ Job + Position)
但是,我想要一种可以根据需要自动使用变量的模型,以及一张结果表。因此,如果“Econ”是“受雇”,则“Job”、“Position”变量将用于回归。如果“Econ”为“失业”,则“Job”、“Position”变量会自动从模型中删除。
我想要一个模型而不是两个模型的原因是通过将所有变量放入模型中,我可以看到“经济”(就业或失业)对“就业”人群的影响
如果我只是回归
lm(Exercise ~ Job + Position)
不知道就业效果如何。
我想到了一个解决方案,为“工作”和“职位”的所有 NA 值设置 0 =“失业水平”,但我不确定这是否能解决问题,并认为这可能会导致多重共线性问题。
有没有办法根据其他因素变量自动/有条件地删除 NA 观测值?
下面是我的可重现的例子。
Exercise <- c(50, 30, 25, 44, 32, 50 ,22, 14)
Econ <- as.factor(c(1, 0, 1, 1, 0, 0, 1, 1))
# 0 = unemployed, 1 = employed
Job <- as.factor(c("A", NA, "B", "B", NA, NA, "A", "C"))
Position <- as.factor(c("Owner", NA,"Employee", "Owner",
NA, NA, "Employee", "Director"))
data <- data.frame(Exercise, Econ, Job, Position)
str(data)
lm(Exercise ~ Econ + Job + Position)
lm(Exercise ~ Econ)
lm(Exercise ~ Job + Position)
这里我想要的是第一个模型 lm(Exercise ~ Econ + Job + Position),但我得到一个错误,因为对于所有 Econ = 0(失业),Job 和 Position 值都是 NA。