数据形状和指定模型在mlogit为R

时间:2018-01-25 23:03:13

标签: r multinomial mlogit

我正在尝试使用R中的mlogit包进行一些分析。不幸的是,我对如何根据我拥有的数据类型指定适当的模型感到困惑。

具体来说,我的数据属于以下类型:

Individual   Choice1  Choice2   Choice3 ...
A             1.24e4      256        17 ...
B                792      531       420 ...
C                 26    1.8e5       930 ...
...              ...      ...       ... ...

基本上是一个交叉表,显示每个人做出特定选择的次数。以下是重现我的问题的代码:

library(mlogit)
data(Fishing)
otherFrame <- as.data.frame(xtabs(rep(1,1182) ~ income + mode, data = Fishing))
otherFrame$income <- as.numeric(as.character(otherFrame$income))
otherFrame <- otherFrame[otherFrame$Freq > 0, ] 


Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
Fish2 <- mlogit.data(otherFrame, "mode", shape = "wide")

summary(mlogit(mode ~ 1 | income, data = Fish)) #model from mlogit examples
summary(mlogit(mode ~ 1 |income, data = Fish2, weights = Freq)) #my attempt to re-create the model with differently shaped data

基本上,我的数据(未显示)可以与otherFrame形状相同,但是我无法将它们放入mlogit示例中使用的形状中(因为那里)是数以百计的选择和数百万的观察,因此大小是令人望而却步的。 otherFrame列的关键是Freq列,其中显示了在给定其他变量(此处为mode)的情况下选择(income)的次数。

我遇到的问题是最后两行代码会产生不同的结果。我假设第一行(直接来自mlogit示例)给出了正确的估计值和标准误差。我认为第二个模型规范,我指定weights = Freq的替代数据“Fish2”应该给出相同的结果。不幸的是,虽然估计的斜率是相同的,但它们的标准误差却大不相同。我认为这是不正确的。

有人可以帮我正确指定模型吗?或许我的规范是正确的,估计的标准误差应该是不同的?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我的理解是weights论证并不代表通常为调查观察而开发的案例权重。但是,它会更正总市场份额或Frequencies of alternatives以及您获得相同估算值的原因。

mlogitotherFrame视为包含57条记录(即length(weights)而非sum(weights))的数据,而实际上它包含1182条记录的数据。换句话说,通过聚合数据而不包括案例权重来丢失信息 - 这解释了更高的标准错误。看看两个拟合模型的vcov矩阵。

将第二个模型的t-stats乘以sqrt(sum(weights) / length(weights)),可以更准确地估算出正确的t-stats。请注意,出于同样的原因,第二个模型中的对数似然(因此rho平方值)也不正确。

其他商业软件如Stata和alogit都有例程来考虑离散选择模型的案例权重。

希望有所帮助!