gpt4 book ai didi

r - 多项式 logit : estimation on a subset of alternatives in R

转载 作者:行者123 更新时间:2023-12-04 23:12:52 27 4
gpt4 key购买 nike

McFadden (1978)表明,如果多项 logit 模型中的备选方案数量大到无法计算,则通过对备选方案进行随机子集来获得一致估计仍然是可行的,因此每个个体的估计概率基于所选备选方案和 C其他随机选择的替代品。在这种情况下,每个人的备选方案子集的大小是 C+1。

我的问题是关于这个算法在 R 中的实现。它是否已经嵌入到任何多项 logit 包中?如果没有——这似乎很可能基于我目前所知道的——如何在不广泛重新编码的情况下将程序包含在预先存在的包中?

最佳答案

不确定问题是否更多地是关于对备选方案进行抽样,还是在对备选方案进行抽样后对 MNL 模型的估计。据我所知,到目前为止还没有 R 包可以对替代品(前者)进行抽样,但后者可以使用现有的包,例如 mlogit。我相信原因是采样过程因数据的组织方式而异,但使用一些您自己的代码相对容易。下面是改编自我用于 this paper 的代码.

library(tidyverse)
# create artificial data
set.seed(6)
# data frame of choser id and chosen alt_id
id_alt <- data.frame(
id = 1:1000,
alt_chosen = sample(1:30, 1)
)
# data frame for universal choice set, with an alt-specific attributes (alt_x2)
alts <- data.frame(
alt_id = 1:30,
alt_x2 = runif(30)
)

# conduct sampling of 9 non-chosen alternatives
id_alt <- id_alt %>%
mutate(.alts_all =list(alts$alt_id),
# use weights to avoid including chosen alternative in sample
.alts_wtg = map2(.alts_all, alt_chosen, ~ifelse(.x==.y, 0, 1)),
.alts_nonch = map2(.alts_all, .alts_wtg, ~sample(.x, size=9, prob=.y)),
# combine chosen & sampled non-chosen alts
alt_id = map2(alt_chosen, .alts_nonch, c)
)

# unnest above data.frame to create a long format data frame
# with rows varying by choser id and alt_id
id_alt_lf <- id_alt %>%
select(-starts_with(".")) %>%
unnest(alt_id)

# join long format df with alts to get alt-specific attributes
id_alt_lf <- id_alt_lf %>%
left_join(alts, by="alt_id") %>%
mutate(chosen=ifelse(alt_chosen==alt_id, 1, 0))

require(mlogit)
# convert to mlogit data frame before estimating
id_alt_mldf <- mlogit.data(id_alt_lf,
choice="chosen",
chid.var="id",
alt.var="alt_id", shape="long")
mlogit( chosen ~ 0 + alt_x2, id_alt_mldf) %>%
summary()

当然,不使用 purrr::map 也是可能的。函数,通过使用 apply变体或循环遍历 id_alt 的每一行.

关于r - 多项式 logit : estimation on a subset of alternatives in R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51458223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com