6

データを適切にフォーマットして、ここで mlogit を使用して多項ロジスティック モデルを生成するための良い助けを受け取りました ( mlogit のデータのフォーマット)

ただし、現在、モデルの共変量の影響を分析しようとしています。のヘルプ ファイルmlogit.effects()はあまり有益ではありません。問題の 1 つは、モデルが多くの NA 行を生成するように見えることです (以下を参照index(mod1))。

  1. 私のデータがこれらの NA を生成している理由を明確にすることはできますか?
  2. mlogit.effects以下のデータを操作するのを手伝ってくれる人はいますか?
  3. 分析を にシフトすることを検討しmultinom()ます。ただし、使用する数式に合わせてデータをフォーマットする方法がわかりませんmultinom()。私のデータは、7 つの異なる項目 (アクセシブル、情報、トレードオフ、討論、ソーシャル、レスポンシブ) の一連のランキングです。最初のランクとして選択したものをモデル化し、他のランクで選択したものを無視しますか? 私はその情報を得ることができます。

再現可能なコードは次のとおりです。

#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 incomplete cases
dat$X <- seq(1,nrow(dat),1)

#Tidy data to get it into long format
dat.out <- dat %>%
  gather(Open, Rank, -c(1,9:12)) %>%
  arrange(X, Open, Rank)

#Create mlogit object
mlogit.out <- mlogit.data(dat.out, shape='long',alt.var='Open',choice='Rank', ranked=TRUE,chid.var='X')

#Fit Model
mod1 <- mlogit(Rank~1|gender+age+economic+Job,data=mlogit.out)

これは、ヘルプ ファイルに示されているものと同様のデータ フレームをセットアップする試みです。うまくいきません。私はapplyファミリーをよく知っていますが、tapplyは私には曖昧です。

with(mlogit.out, data.frame(economic=tapply(economic, index(mod1)$alt, mean)))

ヘルプから比較:

data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
m <- mlogit(mode ~ price | income | catch, data = Fish)

# compute a data.frame containing the mean value of the covariates in
# the sample data in the help file for effects
z <- with(Fish, data.frame(price = tapply(price, index(m)$alt, mean),
                       catch = tapply(catch, index(m)$alt, mean),
                       income = mean(income)))

# compute the marginal effects (the second one is an elasticity
effects(m, covariate = "income", data = z)
4

2 に答える 2