【发布时间】:2013-09-12 16:17:05
【问题描述】:
这是我今天的问题:
目前我正在自学计量经济学并使用逻辑回归。 我有一些 SAS 代码,我想确保在尝试将其转换为 R 之前先理解它。(我没有,我也不知道 SAS)。在这段代码中,我想模拟一个人成为“失业员工”的概率。我的意思是“年龄”在 15 到 64 岁之间,“机智”=“失业”。我想尝试使用以下变量来预测这个结果:性别、年龄和 idnat(国籍号码)。 (其他条件相同)。
SAS 代码:
/* Unemployment rate : number of unemployment amongst the workforce */
proc logistic data=census;
class sex(ref="Man") age idnat(ref="spanish") / param=glm;
class tact (ref=first);
model tact = sex age idnat / link=logit;
where 15<=age<=64 and tact in ("Employee" "Jobless");
weight weight;
format age ageC. tact $activity. idnat $nat_dom. inat $nationalty. sex $M_W.;
lsmeans sex / obsmargins ilink;
lsmeans idnat / obsmargins ilink;
lsmeans age / obsmargins ilink;
run;
这是数据库应该是什么样子的示例:
idnat sex age tact
[1,] "english" "Woman" "42" "Employee"
[2,] "french" "Woman" "31" "Jobless"
[3,] "spanish" "Woman" "19" "Employee"
[4,] "english" "Man" "45" "Jobless"
[5,] "english" "Man" "34" "Employee"
[6,] "spanish" "Woman" "25" "Employee"
[7,] "spanish" "Man" "39" "Jobless"
[8,] "spanish" "Woman" "44" "Jobless"
[9,] "spanish" "Man" "29" "Employee"
[10,] "spanish" "Man" "62" "Retired"
[11,] "spanish" "Man" "64" "Retired"
[12,] "english" "Woman" "53" "Jobless"
[13,] "english" "Man" "43" "Jobless"
[14,] "french" "Man" "61" "Retired"
[15,] "french" "Man" "50" "Employee"
这是我希望得到的结果:
Variable Modality Value ChiSq Indicator
Sex Women 56.6% 0.00001 -8.9%
Men 65.5%
Nationality
1:Spanish 62.6%
2:French 51.2% 0.00001 -11.4%
3:English 48.0% 0.00001 -14.6%
Age
<25yo 33.1% 0.00001 -44.9%
Ref:26<x<54yo 78.0%
55yo=< 48.7% 0.00001 -29.3%
(我对上述内容的解释如下:在其他条件相同的情况下,女性与男性相比有 -8.9% 的就业机会,而 25 岁以下的人比 26 至 54 岁的人有 -44.9% 的就业机会) .
所以如果我理解得很好,最好的方法是使用二元逻辑回归 (link=logit)。这使用引用“男性与女性”(性别)、“员工与失业”(来自“机智”变量)......我认为“机智”会被 SAS 自动转换为二进制 (0-1) 变量。
这是我在 R 中的第一次尝试。我还没有检查它(需要我自己的电脑):
### before using multinom function
### change all predictors to factors and relevel
recens$sex <- relevel(factor(recens$sex), ref = "Man")
recens$idnat <- relevel(factor(recens$idnat), ref = "spanish")
recens$TACT <- relevel(factor(recens$TACT), ref = "employee")
### Calculations of the probabilities with function multinom,
### formatted variables, and conditions with subset
glm1 <- glm(TACT ~ sex + age + idnat, data=census,
+ weights = weight, subset=age[(15<=recens$age|recens$age<=64)] & TACT %in%
+ c("Employee","Jobless"), family=binomial())
我的问题:
目前,似乎有许多函数可以在 R 中执行逻辑回归,例如 glm,这似乎很合适。
但是在访问了许多论坛之后,似乎很多人建议不要尝试完全重现 SAS PROC LOGISTIC,尤其是函数 LSMEANS 函数。 Franck Harrel 博士,(package:rms 的作者)之一。
也就是说,我想我的大问题是LSMEANS 及其选项Obsmargins 和ILINK。即使反复阅读了它的描述,我也很难理解它是如何工作的。
到目前为止,我对Obsmargin 的理解是它尊重数据库总人口的结构(即根据总人口的比例进行计算)。 ILINK 似乎用于获取每个预测变量(例如女性然后男性)的预测概率值(失业率、就业率),而不是(指数)模型找到的值?
简而言之,如何通过 R 使用 rms 函数如 lrm 来完成?
我真的迷失在这一切中。如果有人可以更好地向我解释并告诉我我是否走在正确的轨道上,那会让我很开心。
感谢您的帮助,并对所有错误表示歉意,我的英语有点生疏。
平
【问题讨论】:
标签: r sas rms multinomial