【发布时间】:2017-12-26 08:56:00
【问题描述】:
我正在尝试估算影响纽约和芝加哥居民幸福度差异的因素。
数据如下所示。
Happiness City Gender Employment Worktype Holiday
1 60 New York 0 0 Unemployed Unemployed
2 80 Chicago 1 1 Whitecolor 1 day a week
3 39 Chicago 0 0 Unemployed Unemployed
4 40 New York 1 0 Unemployed Unemployed
5 69 Chicago 1 1 Bluecolor 2 day a week
6 90 Chicago 1 1 Bluecolor 2 day a week
7 100 New York 0 1 Whitecolor 2 day a week
8 30 New York 1 1 Whitecolor 1 day a week
幸福程度是因变量,“城市”是人们居住的地方。 “性别”编码为 0 = 男人 1 = 女人。 “就业”是 0 = 失业和 1 = 就业。 “工作类型”是三个级别的因素:“失业”、“白色”、“蓝色”。 “假期”是一个人一周休息多少天。这里的“城市”、“性别”、“工作类型”和“假期”变量都是因素。 'Happiness' 和 'Employment' 变量类型是数值型的。
我要估计的模型是
lm(Happiness ~ City + Gender + Employment:(Worktype + Holiday))
我将“Employment”值保留为数值,因此如果“Employment”等于 0(Unemployment),0:(Worktype + Holiday) = 0,则模型自动缩减为
lm(Happiness ~ City + Gender)
适用于失业人员。
但是,回归结果返回 NA 值。
Coefficients: (2 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 56.75 23.56 2.408 0.138
CityNew York -14.50 27.21 -0.533 0.647
Gender1 -2.25 35.99 -0.063 0.956
Employment:WorktypeBluecolor 25.00 43.02 0.581 0.620
Employment:WorktypeUnemployed NA NA NA NA
Employment:WorktypeWhitecolor 57.75 35.99 1.604 0.250
Employment:Holiday1 day a week -50.00 54.42 -0.919 0.455
Employment:Holiday2 day a week NA NA NA NA
这似乎是由于“Worktype”和“Holiday”变量中的“Unemployment”值造成的。但是,我不确定为什么 R 不将就业:WorktypeUnemployed 显然是 0:Worktype = 0 视为零并且不将其从模型中删除。这是因为 R 将就业:假日失业设置为基线,并且两者都是完全多重共线性的吗? (我不得不为“工作类型”和“假期”输入“失业”值,因为我想看看“工作类型”和“假期”与“失业”人相比的效果。如果我删除“失业”值,NA 会消失,但是基线将是“Whitecolor”和“每周 1 天”,因此与“失业”相比,我看不到效果。)
如果是这样,为什么我的“Employement:Holiday2 day a week”的系数会得到 NA?似乎与“失业”价值无关。
我可以在仅删除 NA 系数的同时依赖此结果吗?
以下是可重现的代码。
Happiness <- c(60, 80, 39, 40, 69, 90, 100, 30)
City <- as.factor(c("New York", "Chicago", "Chicago", "New York", "Chicago",
"Chicago", "New York", "New York"))
Gender <- as.factor(c(0, 1, 0, 1, 1, 1, 0, 1)) # 0 = man, 1 = woman.
Employment <- c(0,1, 0, 0, 1 ,1 , 1 , 1) # 0 = unemployed, 1 = employed.
Worktype <- as.factor(c("Unemployed", "Whitecolor", "Unemployed",
"Unemployed", "Bluecolor", "Bluecolor", "Whitecolor","Whitecolor"))
Holiday <- as.factor(c(0, 1, 0, 0, 2, 2, 2, 1))
levels(Holiday) <- c("Unemployed", "1 day a week", "2 day a week")
data <- data.frame(Happiness, City, Gender, Employment, Worktype, Holiday)
head(data,8)
str(data)
reg <- lm(Happiness ~ City + Gender + Employment:(Worktype + Holiday))
summary(reg)
【问题讨论】:
标签: r interaction dummy-variable