3

我想在 R 中运行嵌套逻辑回归,但我在网上找到的示例并没有太大帮助。我阅读了这个网站上的一个例子(关于如何在 R 中运行嵌套逻辑回归的逐步过程),这与我的问题相似,但我发现它最终似乎没有解决(提问者报告了错误,我没有看不到更多答案)。

所以我有 9 个预测变量(连续分数)和 1 个分类因变量(DV)。DV被称为“效果”,它可以分为2大类:“负(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”和“nests”是什么......

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

有人可以为我提供有关如何操作的详细步骤和说明吗?我相信这个例子(如果得到很好的讨论和解决)也会对我和其他人有很大帮助!

谢谢你的帮助!!!

4

1 回答 1

0

我可以帮助您了解 mlogit 结构。使用mlogit.data()命令时,指定choice = yourchoicevariableid.var = respondentid如果您有面板数据集,即您有来自同一个人的多个响应)以及shape='wide'参数。创建的新 data.frame 将采用长格式,每种选择情况都有一条线,消极的、身体的、精神的。因此,您将有 3 行,而您只有一个宽数据格式。无论您的 MN 选择变量是什么,它现在都将是一列逻辑值,其中TRUE包含受访者选择的行。行名称现在将采用格式observation#.level(choice variable)因此在您的情况下,如果您的数据集的第一行该人的响应为否定,您将看到:

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

也不是每个选择的实际因子水平都存储在名为altmlogit.data.frame 的索引中,您可以通过该索引查看该索引,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()另请注意,仍然必须根据包文档使用参数指定一个嵌套。如果您指定参数,则生成的模型将具有嵌套之间的 iv 估计值,或者如果 您可能发现Kenneth Train 的示例有用un.nest.el=T,则为嵌套特定估计值un.nest.el=F

于 2014-10-22T11:30:48.233 回答