首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mlogit的格式化数据

mlogit的格式化数据
EN

Stack Overflow用户
提问于 2015-06-15 18:15:18
回答 2查看 2.2K关注 0票数 3

我在通过mlogit获取多项逻辑分析的数据集方面有一段时间。我的数据集可以从下面的代码中的url获得。

我得到了以下错误:

row.names<-.data.frame中的错误(*tmp*,value = c("1.Accessible",“1.Accessible”),:重复的'row.names‘是不允许的

我在其他地方查过了,这个问题似乎出现了。我尝试过使用alt.levels而不是alt.var参数,但这是行不通的。

代码语言:javascript
复制
#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),]
#Tidy data to get it into long format
dat.out<-dat %>%
gather(Open, Rank, -c(1,9:12)) 
#Try to replicate code on pp.26-27 of http://cran.r-   project.org/web/packages/mlogit/vignettes/mlogit.pdf
mlogit.out<-mlogit.data(dat.out, shape='long',alt.var='Open',choice='Rank', id.var='X',ranked=TRUE)
#Try this option as per a discussion on stackexchange
mlogit.out<-mlogit.data(dat.out,     shape='long',alt.levels='Open',choice='Rank', id.var='X',ranked=TRUE)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-15 21:37:30

代码语言:javascript
复制
dat.out<-dat %>%
gather(Open, Rank, -c(1,9:12)) %>%    
arrange(X, Open, Rank)
    mlogit.out<-mlogit.data(dat.out, shape='long',alt.var='Open',choice='Rank', ranked=TRUE,child.var='X')

head(mlogit.out)
              X economic gender  age                     Job        Open  Rank
1.Accessible  1        5   Male 1970 Professional journalist  Accessible FALSE
1.Information 1        5   Male 1970 Professional journalist Information FALSE
1.Responsive  1        5   Male 1970 Professional journalist  Responsive  TRUE
1.Debate      1        5   Male 1970 Professional journalist      Debate FALSE
1.Officials   1        5   Male 1970 Professional journalist   Officials FALSE
1.Social      1        5   Male 1970 Professional journalist      Social FALSE
票数 -1
EN

Stack Overflow用户

发布于 2015-06-15 19:16:56

我的建议是在nnet包中尝试多点()函数。它不需要特殊格式的mlogit或mnlogit。

代码语言:javascript
复制
library(RCurl)
library(nnet)

Data<-getURL("https://raw.githubusercontent.com/sjkiss/Survey/master/mlogit.out.csv")
Data<-read.csv(text=Data,header=T)
Data<-na.omit(Data) # Get rid of NA's
Data<-as.data.frame(Data)
# relevel the dependent variable (must be a factor)
Data$Job<-factor(Data$Job)
# Using "Online Blogger" as the reference, substitute with your choice
Data$Job<-relevel(Data$Job,ref="Online blogger")
# Run the multinomial logistic regression
# (seems like an awful lot of variables btw)
Data<-multinom(formula=Job~Accessible+Information+Responsive+Debate+Officials+Social+Trade.Offs+economic+gender+age,data=Data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30852155

复制
相关文章

相似问题

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