在R中运行嵌套logit回归

时间:2013-03-27 04:26:38

标签: r nested regression logistics multinomial

我想在R中运行嵌套逻辑回归,但我在网上找到的例子并没有多大帮助。我从这个网站(Step by step procedure on how to run nested logistic regression in R)读了一个与我的问题相似的例子,但我发现它最终似乎没有得到解决(提问者报告了错误而我没有看到更多答案)。

所以我有9个预测因子(连续分数)和1个分类因变量(DV)。 DV被称为“效果”,它可以分为两大类:“负(0)”和“正(1)”。我知道如何运行简单的二进制logit回归(使用一般分组方式,即负(0)和正(1)),但这还不够。 “积极”可以进一步分为两类:“物理(1)”和“心理(2)”。所以我想运行一个包含这3个类别(负(0),物理(1)和精神(2))的嵌套模型,并反映“物理”和“心理”嵌套在“积极”中的本质。也许R可以将这两种模型(一般与详细)进行比较?所以我创建了两个新列,一个叫做“效果一般”,其中个别得分是“负(0)”和“正(1)”;另一个被称为“效果详细”,其中包含3个值 - 负(0),物理(1)和心理(2)。我只使用“效果一般”运行了简单的二进制logit回归,但我不知道如何为“效果详细”运行嵌套的logit模型。

从我搜索过的例子和其他材料来看,R包“mlogit”似乎是正确的,但我仍然坚持如何使它适用于我的数据。我不太了解R-help中的例子,这部分来自我之前提到的这个网站的例子(... shape ='long',alt.var ='town.list',nests = list(town .list)...)让我很困惑:我可以看到我的数据形状应该是“宽”,但我不知道“alt.var”和“嵌套”是什么......

我还查看了mlogit手册的第19页,了解嵌套logit模型调用的示例。但我还是无法根据选项来决定我需要什么。 (http://cran.r-project.org/web/packages/mlogit/mlogit.pdf

有人可以向我提供有关如何操作的详细步骤和说明吗?我确信这个例子(如果经过充分讨论和解决)也会帮助我和其他人很多!

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

我可以帮助您理解mlogit结构。使用mlogit.data()命令时,如果您有面板数据集,则指定choice = yourchoicevariable(和id.var = respondentid,即您有来自同一个人的多个响应),以及shape='wide'参数。创建的新data.frame将采用长格式,每个选择情况都有一行,负面,物理,精神。所以你将拥有3行,你只有一行宽数据格式。无论您的MN选择var是什么,它现在都是一列逻辑值,而TRUE表示受访者选择的行。行名称现在将采用observation#.level(choice variable)的格式。因此,在您的情况下,如果您的数据集的第一行的响应为负数,您会看到:

row.name   | choice
1.negative | TRUE
1.physical | FALSE
1.mental   | FALSE

也不是每个选项的实际因子水平存储在mlogit.data.frame的alt的索引中,您可以通过index(your.data.frame)和观察编号(即行号)看到来自您的宽格式data.frame)存储在chid中。这实际上是row.name告诉你的内容,即chid.alt。另请注意,如果您的数据是宽格式,只有长格式,则不必指定alt.var。正如我刚才所描述的那样,mlogit.data函数可以帮助您。基本上,当您指定选择变量并为您创建unique(choice)时,它需要alt.var,因此如果您的数据是宽格式的,则它是多余的。

然后通过在mlogit()命令中添加这样的嵌套命名列表来指定嵌套,假设您的因子级别只是'0','1','2':

mlogit(..., nests = c(negative = c('0'), positive = c('1','2')

或者如果因子水平是'负面','物理','心理',它将是这样的:

mlogit(..., nests = c(negative = c('negative'), positive = c('physical','mental')

另请注意,每个包文档仍必须使用c()参数指定一个嵌套。如果您指定un.nest.el=T参数,则生成的模型将在嵌套之间进行iv估计,或者如果un.nest.el=F,则嵌套特定估计值 您可以找到Kenneth Train's Examples useful