【问题标题】:Multinomial regression using multinom function in R在 R 中使用多项式函数进行多项式回归
【发布时间】:2014-03-10 06:34:53
【问题描述】:

我正在考虑在 Cross-Validated 中发布我的问题,但决定来这里。我正在使用 nnet 包中的 multinom() 函数来估计受年龄和教育程度影响的就业、失业或失业的几率。我需要一些翻译方面的帮助。

我有以下数据集,其中包含一个因分类变量就业状况 (EmpSt) 和两个自分类变量:年龄 (Age) 和教育水平 (Education)。

>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 模型是:

其中 i 和 n 分别是变量年龄和教育的类别(对不起,符号混乱)。如果我对 multinom() 产生的逻辑模型的理解不正确,请纠正我。我不打算包含测试的摘要,因为它有很多输出,所以下面我只包含调用&gt;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 模型的理解是正确的,因此系数是使用基本级别的记录几率。为了获得实际赔率,我通过调用 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 岁并且拥有高中文凭,那么失业的概率是多少。很抱歉这个冗长的问题。谢谢你的帮助。如果需要进一步说明,请告诉我。

【问题讨论】:

    标签: r probability logistic-regression multinomial


    【解决方案1】:

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

    根据用户在该问题中的回答和您发布的&gt;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-29 和High school graduates, no college 作为条目的数组(以您的示例为例)。

    【讨论】:

    • 感谢您对数学的更正。忽略了这一点。关于概率: predict() 也是我在网上找到的。我发现了一篇很棒的文章,详细介绍了 R 中的 multinom() (ats.ucla.edu/stat/r/dae/mlogit.htm)。值得一提的是链接中描述的 fit() 函数。它接受多项模型并输出概率,但我不知道是什么样的概率。无论如何,谢谢。
    • 很好的链接!拟合函数适用于您用于拟合的数据。我在关于 logit 函数的回答中犯了一个错误,即 ln(\frac{Pr(unused)}{Pr(employed}),因此关于基类 Employed(正如您在问题中正确写的那样)。
    • 再次关于拟合函数:例如在提供的链接中,在 head(pp
    • 对不起,我把符号弄乱了。在我的最后一条评论中,概率是链接示例的概率,因此是 Pr(academic)、Pr(general) 和 Pr(vocation)。
    猜你喜欢
    • 2015-10-03
    • 2019-01-13
    • 2019-07-20
    • 1970-01-01
    • 2014-08-03
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多