首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中运行混合logit模型时的公式误差

在R中运行混合logit模型时的公式误差
EN

Stack Overflow用户
提问于 2021-11-12 03:10:04
回答 1查看 84关注 0票数 3

我为混合logit模型创建了模拟数据。它涉及N个垂钓者进行两次旅行,其中每一个可以到其中一个两个地点。下面是创建模拟数据的代码:

代码语言:javascript
复制
library(data.table)
library(mlogit)

### Angler choice probabilities for site a
N <- 1e4
beta <- rnorm(N, mean = 0.5)
val <- runif(N)
p <- exp(1 + beta*val)/(1+ exp(1 + beta*val))

### Choice for trip 1
Y11 <- rbinom(N, 1, p)
Y10 <- 1 - Y11

### Choice for trip 2
Y21 <- rbinom(N, 1, p)
Y20 <- 1 - Y21

### Data set
id <- as.character(1:N)
sim <- data.table(angler = rep(id, 4), 
                  trip = paste(id, rep(1:2, each = 2*N), sep = "_"),
                  site = c(rep(letters[1:2], each = N),
                           rep(letters[1:2], each = N)),
                  is_choice = as.logical(c(Y11, Y10, Y21, Y20)),
                  term = c(val, rep(0, N), val, rep(0, N)))
sim[, term2 := ifelse(site == "a", 1, 0)]

当我运行mlogit时,会得到以下错误:

代码语言:javascript
复制
> mlogit(is_choice ~ 1, sim, shape = "long", alt.var = "site", chid.var = "trip", id.var = "angler")
Error in str2lang(x) : <text>:2:0: unexpected end of input
1: . ~   . |  
  ^

我可以从vignette中运行示例,因此似乎没有安装问题。

我污染了什么?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-12 05:30:21

这个问题可以用data.frame而不是data.table来解决。

代码语言:javascript
复制
sim2 <- as.data.frame(sim)
mlogit(is_choice ~ 1, sim2, shape = "long", alt.var = "site", chid.var = "trip", id.var = "angler")

Call:
mlogit(formula = is_choice ~ 1, data = sim2, shape = "long",     alt.var = "site", chid.var = "trip", id.var = "angler", method = "nr")

Coefficients:
(Intercept):b  
      -1.1595 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69937494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档