我想在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)
有人可以向我提供有关如何操作的详细步骤和说明吗?我确信这个例子(如果经过充分讨论和解决)也会帮助我和其他人很多!
感谢您的帮助!!!
答案 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