R中使用多项式函数的多项式回归

时间:2014-03-10 06:34:53

标签: r probability logistic-regression multinomial

我正考虑在Cross-Validated中发布我的问题,但决定来这里。我正在使用nnet软件包中的multinom()函数来估计因年龄和受教育程度而变得就业,失业或失业的可能性。我需要一些帮助解释。

我有一个依赖的分类变量就业状态(EmpSt)的数据集和两个独立的分类变量:年龄(年龄)和教育程度(教育)。

>head(df)
               EmpSt   Age                         Education
1           Employed   61+   Less than a high school diploma
2           Employed 50-60 High school graduates, no college
3 Not in labor force 50-60   Less than a high school diploma
4           Employed 30-39       Bachelor's degree or higher
5           Employed 20-29  Some college or associate degree
6           Employed 20-29  Some college or associate degree

以下是关于级别的摘要:

>summary(df)
                EmpSt          Age                                    Education    
 Not in universe   :    0   16-19: 6530   Less than a high school diploma  :14686  
 Employed          :61478   20-29:16031   High school graduates, no college:30716  
 Unemployed        : 3940   30-39:16520   Some college or associate degree :28525  
 Not in labor force:38508   40-49:17403   Bachelor's degree or higher      :29999  
                            50-60:20779                                            
                            61+  :26663                                    
  • 首先,什么是估算方程(模型)

我想确定调用的估算方程(模型)是什么

df$EmpSt<-relevel(df$EmpSt,ref="Employed") multinom(EmpSt ~ Age + Education,data=df)

所以我可以在我的研究论文中写下来。根据我的理解,Employed是基本级别,此调用的logit模型是:

enter image description here enter image description here

其中i和n分别是变量年龄和教育的类别(对于令人困惑的表示法而言)。如果我对multinom()产生的逻辑模型的理解不正确,请纠正我。我不会包含测试摘要,因为它有很多输出,所以下面我只是包含调用>test的输出:

> test
Call:
multinom(formula = EmpSt ~ Age + Education, data = ml)

Coefficients:
                   (Intercept)   Age20-29   Age30-39   Age40-49   Age50-60     Age61+
Unemployed           -1.334734 -0.3395987 -0.7104361 -0.8848517 -0.9358338 -0.9319822
Not in labor force    1.180028 -1.2531405 -1.6711616 -1.6579095 -1.2579600  0.8197373
                   EducationHigh school graduates, no college EducationSome college or associate degree
Unemployed                                         -0.4255369                                 -0.781474
Not in labor force                                 -0.8125016                                 -1.004423
                   EducationBachelor's degree or higher
Unemployed                                    -1.351119
Not in labor force                            -1.580418

Residual Deviance: 137662.6 
AIC: 137698.6 

鉴于我对multinom()生成的logit模型的理解是正确的,系数是基础级别为Employed的记录几率。为了得到实际的几率,我通过电话exp(coef(test))给出了实际的赔率:

> exp(coef(test))
                   (Intercept)  Age20-29  Age30-39  Age40-49  Age50-60    Age61+
Unemployed           0.2632281 0.7120560 0.4914298 0.4127754 0.3922587 0.3937724
Not in labor force   3.2544655 0.2856064 0.1880285 0.1905369 0.2842333 2.2699035
                   EducationHigh school graduates, no college EducationSome college or associate degree
Unemployed                                          0.6534189                                 0.4577308
Not in labor force                                  0.4437466                                 0.3662560
                   EducationBachelor's degree or higher
Unemployed                                    0.2589504
Not in labor force                            0.2058891

这让我想到了下一个问题。

  • 第二,概率

我想知道是否有办法根据年龄和教育程度的结合获得失业与就业的实际概率,例如,如果我22岁并且拥有高中毕业证书,失业的可能性是多少。抱歉这个冗长的问题。谢谢你的帮助。如果需要进一步说明,请与我们联系。

1 个答案:

答案 0 :(得分:5)

关于您的第一个问题,我对multinom分类变量有疑问(这是我的问题:Multinom with Matrix of Counts as Response)。

根据用户在该问题中回复的内容以及您发布的>test的输出,我猜您编写的数学部分是正确的:实际上,只有当预测变量是连续的或二分的时,多项模型才有效(即,值只有0或1),似乎当multinom将分类变量作为预测变量时,就像在您的示例中一样,R会自动将它们转换为虚拟变量(仅0或1)。

参考您的示例,仅考虑Age预测变量,我们应该ln(\frac{Pr(unemployed)}{Pr(employed}) = \beta_0 + \beta_1*Age20-29 + \beta_2*Age30-39 + ...Pr(not in labor force)的类似公式,但具有不同的\beta系数。

关于你的第二个问题:是的,有办法。使用predict(test, newdata, "probs"),其中newdata是一个数组Age20-29High school graduates, no college作为条目(给出您的示例)。