标签: mlogit

R中的多项logit:mlogit与nnet

我想运行中的R多项式Logit并使用了两个库,nnet并且mlogit,其产生不同的结果和报告不同类型的统计数据.我的问题是:

  1. 什么是系数和报告标准误差之间discrepency的来源nnet和那些报道mlogit

  2. 我想用Latex文件将结果报告给文件stargazer.这样做时,存在一个有问题的权衡:

    • 如果我使用mlogit从那时开始的结果,我得到了我想要的统计数据,例如psuedo R平方,但输出是长格式的(见下面的例子).

    • 如果我使用nnet那时的结果,格式是预期的,但它报告我不感兴趣的统计数据,如AIC,但不包括,例如,psuedo R平方.

    我想在我使用时mlogit的格式化中报告统计数据.nnetstargazer

这是一个可重复的示例,有三种选择:

library(mlogit)

df = data.frame(c(0,1,1,2,0,1,0), c(1,6,7,4,2,2,1), c(683,276,756,487,776,100,982))
colnames(df) <- c('y', 'col1', 'col2')
mydata = df

mldata <- mlogit.data(mydata, choice="y", shape="wide")
mlogit.model1 <- mlogit(y ~ 1| col1+col2, data=mldata)
Run Code Online (Sandbox Code Playgroud)

编译时的tex输出是我所说的"长格式",我认为这是不希望的:

在此输入图像描述

现在,使用nnet:

library(nnet)
mlogit.model2 = multinom(y ~ 1 + col1+col2, data=mydata)
stargazer(mlogit.model2)
Run Code Online (Sandbox Code Playgroud)

给出tex输出:

在此输入图像描述

这是我想要的"宽"格式.注意不同的系数和标准误差.

r multinomial stargazer mlogit non-linear-regression

10
推荐指数
2
解决办法
4161
查看次数

R中的多项Logit选择模型与mnlogit()

我对mnlogitR中的包有疑问,我会在StackOverflow上询问它与特定语言和库有关,但是如果有人决定将其移动到Cross Validated我将不会被冒犯(这是一个艰难的选择StackExchange网站是最合适的).

我只是想确保我理解它是如何工作的,因为文档不是太详细,我在这个软件包上看到一些令人困惑/冲突的博客条目,并且因为我已经处理了选择已经有几年了楷模.

示例用法mnlogit基本如下:

> require(mnlogit)
> data(Fish)
> head(Fish)
           mode   income     alt   price  catch chid
1.beach   FALSE 7083.332   beach 157.930 0.0678    1
1.boat    FALSE 7083.332    boat 157.930 0.2601    1
1.charter  TRUE 7083.332 charter 182.930 0.5391    1
1.pier    FALSE 7083.332    pier 157.930 0.0503    1
2.beach   FALSE 1250.000   beach  15.114 0.1049    2
2.boat    FALSE 1250.000    boat  10.534 0.1574    2
> fm <- formula(mode ~ price | income | catch)
> result <- mnlogit(fm, Fish, "alt", ncores = …
Run Code Online (Sandbox Code Playgroud)

r choice mlogit

8
推荐指数
1
解决办法
1627
查看次数

如何使用多项 logit 模型的标准误差获得平均边际效应 (AME)?

我想获得具有标准误差的多项式 logit 模型的平均边际效应 (AME)。为此,我尝试了不同的方法,但到目前为止还没有达到目标。

最好的尝试

我最好的尝试是使用mlogit我在下面显示的手动获取 AME 。

library(mlogit)
ml.d <- mlogit.data(df1, choice="Y", shape="wide")  # shape data for `mlogit()`
ml.fit <- mlogit(Y ~ 1 | D + x1 + x2, reflevel="1", data=ml.d)  # fit the model

# coefficient names
c.names <- names(ml.fit$model)[- c(1, 5:6)]

# get marginal effects
ME.mnl <- sapply(c.names, function(x) 
  stats::effects(ml.fit, covariate=x, data=ml.d), 
  simplify=FALSE) 

# get AMEs
(AME.mnl <- t(sapply(ME.mnl, colMeans)))
#              1            2            3           4          5
# D  -0.03027080 -0.008806072 0.0015410569 0.017186531 0.02034928
# x1 …
Run Code Online (Sandbox Code Playgroud)

r multinomial mlogit marginal-effects

8
推荐指数
1
解决办法
1658
查看次数

如何在 R 中运行具有个体和时间固定效应的多项 logit 回归

长话短说:

我需要运行多项logit回归与R.我个人和时间固定效应想到可以用包mlogitsurvival这一宗旨,但我不能找到一种方法,包括固定效应。

现在是长篇大论:

我在各种与堆栈相关的网站上发现了许多关于此主题的问题,但没有一个能够提供答案。此外,我注意到关于什么是具有固定效应的多项 logit 回归(人们使用不同的名称)以及实现此函数的 R 包存在很多混淆。所以我认为在进入正题之前提供一些背景是有益的。

考虑以下。在多项选择题中,每位受访者选择一项。受访者每年都会被问到同样的问题。t 时刻的选择受 t-1 时刻的选择影响的程度没有先验。现在想象有一个面板数据记录这些选择。数据看起来像这样:

set.seed(123)
# number of observations
n <- 100
# number of possible choice
possible_choice <- letters[1:4]
# number of years
years <- 3
# individual characteristics
x1 <- runif(n * 3, 5.0, 70.5)
x2 <- sample(1:n^2, n * 3, replace = F)
# actual choice at time 1
actual_choice_year_1 <- possible_choice[sample(1:4, n, replace = T, prob = rep(1/4, 4))]
actual_choice_year_2 <- possible_choice[sample(1:4, n, replace …
Run Code Online (Sandbox Code Playgroud)

r multinomial mlogit

8
推荐指数
0
解决办法
1349
查看次数

多项 Logit 模型 Python 和 Stata 不同结果

我正在尝试使用 python 和 stata 构建多项 logit 模型。我的数据如下:

    ses_type prog_type  read  write  math  prog  ses 
0        low   Diploma  39.2   40.2  46.2     0     0
1     middle   general  39.2   38.2  46.2     1     1
2       high   Diploma  44.5   44.5  49.5     0     2
3        low   Diploma  43.0   43.0  48.0     0     0
4     middle   Diploma  44.5   36.5  45.5     0     1
5       high   general  47.3   41.3  47.3     1     2
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用ses read write 和 math预测prog。其中 ses 代表社会经济地位并且是一个名义变量,因此我使用以下命令在 stata 中创建了我的模型:

mlogit prog i.ses read write …
Run Code Online (Sandbox Code Playgroud)

python statistics stata scikit-learn mlogit

7
推荐指数
1
解决办法
3235
查看次数

多项Logistic模型对mlogit的影响

我收到了一些很好的帮助,我的数据格式正确,在这里用mlogit生成一个多项逻辑模型(格式化mlogit的数据)

但是,我现在正在尝试分析协变量在我的模型中的影响.我发现帮助文件mlogit.effects()不是很有用.其中一个问题是该模型似乎产生了大量的NA(见下文index(mod1)).

  1. 任何人都可以澄清我的数据产生这些NA的原因吗?
  2. 任何人都可以帮助我mlogit.effects使用下面的数据吗?
  3. 我会考虑将分析转移到multinom().但是,我无法弄清楚如何格式化数据以适合使用的公式multinom().我的数据是七个不同项目(可访问,信息,权衡,辩论,社交和响应)的一系列排名我是否只是模拟他们选择的第一个等级并忽略他们在其他等级中选择的内容?我可以得到这些信息.

可重现的代码如下:

#Loadpackages 
library(RCurl)
library(mlogit)
library(tidyr)
library(dplyr)
#URL where data is stored
dat.url <- 'https://raw.githubusercontent.com/sjkiss/Survey/master/mlogit.out.csv'

#Get data
dat <- read.csv(dat.url)

#Complete cases only as it seems mlogit cannot handle missing values or tied data which in this case you might get because of median imputation
dat <- dat[complete.cases(dat),]

#Change the choice index variable (X) to have no interruptions, as a result of removing some …
Run Code Online (Sandbox Code Playgroud)

r mlogit

6
推荐指数
1
解决办法
887
查看次数

R中的多项式逻辑回归:nnet包中的多项式结果与mlogit包中的mlogit不同?

R 函数multinom(package nnet) 和mlogit(package mlogit) 都可用于多项逻辑回归。但为什么这个例子返回不同的系数 p 值结果呢?

#prepare data

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
mydata$gre[1:10] = rnorm(10,mean=80000)
Run Code Online (Sandbox Code Playgroud)

#multinom

test = multinom(admit ~ gre + gpa + rank, data = mydata)
z <- summary(test)$coefficients/summary(test)$standard.errors
# For simplicity, use z-test to approximate t test.
pv <- (1 - pnorm(abs(z)))*2 
pv
# (Intercept)         gre         gpa       rank2       rank3       rank4 
# 0.00000000  0.04640089  0.00000000  0.00000000  0.00000000  0.00000000 
Run Code Online (Sandbox Code Playgroud)

#mlogit

mldata = mlogit.data(mydata,choice = 'admit', shape = …
Run Code Online (Sandbox Code Playgroud)

r mlogit

6
推荐指数
1
解决办法
6821
查看次数

mlogit.data() 错误:分配的数据 `ids` 必须与现有数据兼容

我一直在努力解决这个问题,但我根本找不到任何解决问题的方法。希望这里有人可以提供帮助。

我正在尝试为具有以下结构的某些数据创建个人选择矩阵:

# A tibble: 2,152 x 32
     age choice canton  lr_s dist_svp dist_fdp dist_bdp dist_cvp dist_glp dist_sp
   <dbl> <fct>  <fct>  <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>   <dbl>
 1    39 sp     GE         3       49       25       25        4       16       1
 2    67 sp     ZH         0      100       49       64        4       25       0
 3    42 svp    ZH         7        4        4        1       36        4      36

   dist_gps pid_svp pid_fdp pid_bdp pid_cvp pid_glp pid_sp pid_gps french italian
      <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>  <dbl>   <dbl>  <dbl> …
Run Code Online (Sandbox Code Playgroud)

r r-markdown mlogit tibble

6
推荐指数
1
解决办法
1万
查看次数

多级嵌套Logit R.

我想用语言R估计一个嵌套的logit模型.作为这类问题的标准包我使用的是"mlogit".现在我想估计一个模型,不仅仅是一个阶段.问题如下:

  1. 阶段:人们决定是否要迁移到美国.
  2. 阶段:对于所有决定迁移的人,他们必须决定他们想去的美国哪个地区(美国分为6个地区)
  3. 阶段:在该地区内,他们决定他们想要居住的地区; urba与农村

我已经使用mlogit.data()转换了我的数据.

data <- mlogit.data(data = usa_canada_uk, choice = "migrant"))
Run Code Online (Sandbox Code Playgroud)

这就是"数据"的样子:

                sex   marst numperhh_cat age_cat   famsize                               nchlt5 labour_code sample                               nchlt10
3888.no  female married          1-5     16+         1          no chiled aged 5 or younger not working   8262          no chiled aged 10 or younger
12874.no female married          1-5     16+ 2 or more at least one child aged 5 or younger   ancillary   8262 at least one child aged 10 or younger
13084.no female married          1-5     16+ 2 or more at …
Run Code Online (Sandbox Code Playgroud)

r mlogit

5
推荐指数
0
解决办法
216
查看次数

mlogit 变量选择集

我正在尝试使用 R 中的 mlogit 包来解决具有可变选择集的离散选择模型。我相信这项工作应该与:

library(mlogit)
mydata = read.table("data.csv",sep = ",", header=TRUE)
routes <- mlogit.data(mydata, shape = "long", choice="choice", alt.var = "alternative", chid.var = "individual")
routeChoice <- mlogit(choice ~ num_stations + num_interchanges | 0 | 0, routes)
predictions <- predict(routeChoice,newdata=routes)
Run Code Online (Sandbox Code Playgroud)

其中 data.csv 是:

individual,alternative,choice,num_stations,num_interchanges,count,prop
1,AB,1,1.0,0.0,2,0.04742587317756678
1,ACB,0,5.0,1.0,2,0.04742587317756678
2,AB,0,1.0,0.0,48,0.9525741268224331
2,ACB,1,5.0,1.0,48,0.9525741268224331
3,AC,1,2.0,0.0,6,0.11920292202211755
3,ABC,0,4.0,1.0,6,0.11920292202211755
4,AC,0,2.0,0.0,44,0.8807970779778824
4,ABC,1,4.0,1.0,44,0.8807970779778824
5,BC,1,3.0,0.0,13,0.2689414213699951
5,BAC,0,3.0,1.0,13,0.2689414213699951
6,BC,0,3.0,0.0,37,0.7310585786300049
6,BAC,1,3.0,1.0,37,0.7310585786300049
Run Code Online (Sandbox Code Playgroud)

即我正在考虑一个与铁路网络中的路线选择相关的综合示例,该路线选择基于路线中的车站数量和交汇处的数量。

当我检查预测时,我发现选择集之外的路线被分配了非零概率。

我还没有找到将 mlogit 与不同的选择集一起使用的好例子,所以很可能我指定的模型或数据不正确。有任何想法吗?谢谢。

statistics r logistic-regression mlogit

5
推荐指数
0
解决办法
685
查看次数