多项式Logit固定效应:Stata和R

多项式Logit固定效应:Stata和R,stata,fixed,multinomial,mlogit,Stata,Fixed,Multinomial,Mlogit,我试图在Stata(面板数据:年份国家)中的mlogit中运行具有年份固定效应的多项式logit,但我没有得到某些模型的标准误差。当我在R中使用multinom运行同一个模型时,我得到了系数和标准误差 我不经常使用Stata,所以我可能遗漏了一些东西,或者我可能在Stata和R中运行不同的模型,不应该首先比较它们。可能会发生什么 关于兴趣模型的简单版本的一些细节: 我创建了一个数据示例来说明问题所在 因变量(将称之为DV1),包括-1、0、1三类(无序和0作为参考) 自变量:2个连续变量,3

我试图在Stata(面板数据:年份国家)中的
mlogit
中运行具有年份固定效应的多项式logit,但我没有得到某些模型的标准误差。当我在R中使用
multinom
运行同一个模型时,我得到了系数和标准误差

我不经常使用Stata,所以我可能遗漏了一些东西,或者我可能在Stata和R中运行不同的模型,不应该首先比较它们。可能会发生什么

关于兴趣模型的简单版本的一些细节:

我创建了一个数据示例来说明问题所在

  • 因变量(将称之为DV1),包括-1、0、1三类(无序和0作为参考)

  • 自变量: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)

  • xtmlogit
    • 错误-不运行
    • 错误消息:置换总数为2389461218;这许多排列需要相当大的内存量,并可能导致长时间运行;无论如何使用选项力,或者考虑使用选项rSAMPLE()

    固定效果和非线性模型(如logits)是一种笨拙的组合。在线性模型中,您可以简单地添加假人/人物,以消除特定于组的截距,但在非线性模型中,这一切都不起作用。我的意思是,你可以在技术上做到这一点(我认为这就是R代码所做的),但从概念上来说,这实际上是什么还不清楚

    计量经济学者在这方面花了很多时间,这导致了一些变通方法,通常被称为条件逻辑。IIRC这是在femlogit中实现的。我认为代码中的错误在于,您试图通过虚拟规范(I.year)包含固定效果。相反,您应该xtset您的数据,然后在没有假人的情况下运行femlogit

    xtset year
    femlogit DV1 IV1 IV2 IV3 IV4 IV5 IV1##IV2
    

    请注意,这些条件logit模型可能非常慢。就个人而言,我更喜欢运行两个一对全线性回归(1=1和0/-1设置为零,然后-1=1和0/1设置为零)。然而,意见分歧(Wooldridge似乎也是一位粉丝,其他很多人则不然)。

    这些问题很难问,也很难回答,这里假设一些读者非常详细地了解了Stata和R在这一领域的功能(不是我)。一般建议:用最少的数据示例和代码使您的问题自包含,这些示例和代码足以看到问题。我怀疑这个最小的例子是否需要六个预测因子。另外,不要一次问几个问题:你的最后一段插入了一些不同的内容。感谢你的评论,我编辑了一个数据示例以增加问题的清晰度。你的
    mlogit
    Stata结果不一致,可能是因为你的随机数据中的$y$和$X$之间没有关系。根据您观察到的数据,
    multinom
    femlogit
    可能会给出不同的结果,因为它们估计不同的模型(并且可能有不同的收敛标准)。据我所知,
    femlogit
    (现在是
    xtmlogit
    )是public Stata、R和Python包中唯一固定效果的多项式logit命令/函数。我认为如果你遵循@Danferno的答案,
    femlogit
    将收敛(如果可能的话)。你也可以使用
    ,group(year)
    选项指定固定效果,以
    femlogit
    。关于收敛速度,Pforr在本报告第3.2节中讨论了计算问题。
    xtset year
    femlogit DV1 IV1 IV2 IV3 IV4 IV5 IV1##IV2