我如何估算R中的潜在类logit模型?

问题描述 投票:0回答:1

我对使用R是陌生的。我正在尝试使用面板数据来估计潜在类logit模型。我尝试按照以下示例进行操作:https://rpubs.com/msarrias1986/335556。有人告诉我以下代码应该起作用:

df01 <- mlogit.data(data, 
                      id = "ID", 
                      choice = "Choice", 
                      varying = 3:17, 
                      shape = "wide", 
                      sep = "")

lc <- gmnl(Choice ~ COST + REN + NUCL + OUTAGE180 + OUTAGE360 | 0 | 0 | 0 | 1 , 
           data = df01,
           model = 'lc', 
           Q = 3, 
           panel = TRUE,
           method = "bhhh")

具有17列的基本数据文件(见图),它可以工作。但是,当我再添加一列,例如性别的虚拟变量时,会出现2个错误:

  1. 在第一个命令中,出现错误“ reshapeLong(数据,idvar = idvar,timevar = timevar,variable =变量,错误:'varying'参数必须具有相同的长度”。我注意到我可以得到通过声明'varying = list(3:18)'而不是'varying = 3:18'来消除错误,但是我不确定这是否是正确的处理方式。

  2. 在第二个命令中,出现错误“ eval(predvars,data,env)中的错误:找不到对象'COST'”。 “ COST”确实不是变量,但“ COST_1”(即第一个替代方案的费用),“ COST_2”和“ COST_3”是变量。我希望“成本”的系数表示选择替代方案时成本的重要性。所有其他变量都类似。

我很好奇,仅向数据文件添加1列会导致这些错误。我希望有人能提供一些好的建议。感谢您的帮助!

((包含的图像中我的数据的示例)。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9qT3o4aC5wbmcifQ==” alt =“在此处输入图像说明”>

r reshape mlogit varying
1个回答
0
投票

我保留了'varying = 3:17'命令,并将代码更改为:

df01 <- mlogit.data(data, 
                      id = "ID", 
                      choice = "Choice",
                      varying = 3:17, 
                      shape = "wide", 
                      sep = "",
                      alt.levels = c("FOSS","REN","NUCL","COST","OUTAGE"))

lc <- gmnl(Choice ~ COST + REN + NUCL + OUTAGE | MALE | 0 | 0 | 1 , 
           data = df01,
           model = 'lc', 
           Q = 3, 
           panel = TRUE,
           method = "bhhh")

对于少于13个单个变量,这似乎可行。

© www.soinside.com 2019 - 2024. All rights reserved.