【发布时间】:2021-08-18 10:19:43
【问题描述】:
我正在尝试在 Stata 的 mlogit 中运行具有年份固定效应的多项 logit(面板数据:年份国家),但我没有得到某些模型的标准错误。当我在 R 中使用 multinom 运行相同的模型时,我得到了系数和标准误差。
我不经常使用 Stata,所以我可能会遗漏一些东西,或者我可能在 Stata 和 R 中运行不同的模型,因此不应该首先比较它们。可能会发生什么?
关于感兴趣模型的简单版本的一些细节:
我创建了一个数据示例来说明问题所在
-
具有-1、0、1(无序和0作为参考)3个类别的因变量(将其称为DV1)
-
自变量:2 个连续变量,3 个二元变量,3 个二元变量中的 2 个的交互作用
-
年份:1995-2003
-
模型中的观察次数:900
在 R 中,我运行代码并获得系数和标准误差,如下所示。
创建数据和运行模型的R版本代码:
## Fabricate example data
library(fabricatr)
data <- fabricate(
N = 900,
id = rep(1:900, 1),
IV1 = draw_binary(0.5, N = N),
IV2 = draw_binary(0.5, N = N),
IV3 = draw_binary(0.5, N = N),
IV4 = draw_normal_icc(mean = 3, N = N, clusters = id, ICC = 0.99),
IV5 = draw_normal_icc(mean = 6, N = N, clusters = id, ICC = 0.99))
library(AlgDesign)
DV = gen.factorial(c(3), 1, center=TRUE, varNames=c("DV"))
year = gen.factorial(c(9), 1, center=TRUE, varNames=c("year"))
DV = do.call("rbind", replicate(300, DV, simplify = FALSE))
year = do.call("rbind", replicate(100, year, simplify = FALSE))
year[year==-4]= 1995
year[year==-3]= 1996
year[year==-2]= 1997
year[year==-1]= 1998
year[year==0]= 1999
year[year==1]= 2000
year[year==2]= 2001
year[year==3]= 2002
year[year==4]= 2003
data1=cbind(data, DV, year)
data1$DV1 = relevel(factor(data1$DV), ref = "0")
## Save data as csv file (to use in Stata)
library(foreign)
write.csv(data1, "datafile.csv", row.names=FALSE)
## Run multinom
library(nnet)
model1 <- multinom(DV1 ~ IV1 + IV2 + IV3 + IV4 + IV5 + IV1*IV2 + as.factor(year), data = data1)
当我在 Stata 中使用 mlogit(没有固定效应)运行模型时,我得到了系数和标准误差。
所以我尝试使用 Stata 三种不同的方式在模型中包含年份固定效应,但均未奏效:
femlogit
- 不允许使用因子变量和时间序列运算符
- depvar 和 indepvars 不得包含因子变量或时间序列运算符
mlogit
- fe 选项:fe 不允许
- 使用 i.year:省略某些变量和/或不给我标准误差,只显示系数(下面代码中的示例)
* Read file
import delimited using "datafile.csv", clear case(preserve)
* Run regression
mlogit DV1 IV1 IV2 IV3 IV4 IV5 IV1##IV2 i.year, base(0) iterate(1000)
xtmlogit
- 错误 - 不运行
- 错误信息:排列总数为 2,389,461,218;这么多排列需要大量内存,并且可能导致运行时间过长;使用选项 force 继续,或考虑使用选项 rsample()
【问题讨论】:
-
这些问题很难问也很难回答,这里真的假设一些读者对这个领域的 Stata 和 R 的功能有非常详细的了解(不是我)。通用建议:使用最少的数据示例和足以看到问题的代码使您的问题自成一体。我怀疑最小的例子需要六个预测变量。另外,不要一次问几个问题:你的最后一段出现了不同的内容。
-
感谢您的评论,我进行了编辑以包含一个数据示例以使我的问题更加清晰。
-
您的
mlogitStata 结果不收敛,可能是因为您的随机数据中 $y$ 和 $X$ 之间没有关系。对于您观察到的数据,multinom和femlogit可能会给出不同的结果,因为它们估计不同的模型(并且可能具有不同的收敛标准)。据我所知,femlogit(现在是xtmlogit)是公共 Stata、R 和 Python 包中唯一的固定效应多项式 logit 命令/函数。如果您遵循@Danferno 的回答,我认为femlogit会收敛(如果可以收敛的话)。
标签: stata fixed multinomial mlogit