我想运行中的R多项式Logit并使用了两个库,nnet并且mlogit,其产生不同的结果和报告不同类型的统计数据.我的问题是:
什么是系数和报告标准误差之间discrepency的来源nnet和那些报道mlogit?
我想用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输出:
这是我想要的"宽"格式.注意不同的系数和标准误差.
我对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) 我想获得具有标准误差的多项式 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) 长话短说:
我需要运行多项logit回归与R.我个人和时间固定效应想到可以用包mlogit和survival这一宗旨,但我不能找到一种方法,包括固定效应。
现在是长篇大论:
我在各种与堆栈相关的网站上发现了许多关于此主题的问题,但没有一个能够提供答案。此外,我注意到关于什么是具有固定效应的多项 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) 我正在尝试使用 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) 我收到了一些很好的帮助,我的数据格式正确,在这里用mlogit生成一个多项逻辑模型(格式化mlogit的数据)
但是,我现在正在尝试分析协变量在我的模型中的影响.我发现帮助文件mlogit.effects()不是很有用.其中一个问题是该模型似乎产生了大量的NA(见下文index(mod1)).
mlogit.effects使用下面的数据吗?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 函数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) 我一直在努力解决这个问题,但我根本找不到任何解决问题的方法。希望这里有人可以提供帮助。
我正在尝试为具有以下结构的某些数据创建个人选择矩阵:
# 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估计一个嵌套的logit模型.作为这类问题的标准包我使用的是"mlogit".现在我想估计一个模型,不仅仅是一个阶段.问题如下:
我已经使用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 包来解决具有可变选择集的离散选择模型。我相信这项工作应该与:
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 与不同的选择集一起使用的好例子,所以很可能我指定的模型或数据不正确。有任何想法吗?谢谢。
mlogit ×10
r ×9
multinomial ×3
statistics ×2
choice ×1
python ×1
r-markdown ×1
scikit-learn ×1
stargazer ×1
stata ×1
tibble ×1