如何在Julia中提取面板数据后的平均边际效应(或预测值)?

3
我正在使用这个实用的包https://github.com/FixedEffects/FixedEffectModels.jl在Julia中运行固定效应模型。
不过,我有一个问题,就是我不确定如何在使用该软件包后提取交互变量的平均边际效应或预测值。例如,下面两行展示了如何在Stata中提取平均边际效应。
xtreg chronic_illness age country_birth social_class#macro_unemployment, fe
margins crisis, dydx(social_class)

以下是如何在R中提取它们的方法: 如何使用R运行面板数据中个体固定效应的预测概率(或平均边际效应)?

不知道是否有Julia语言的类似版本?

以下是我在Julia中正在运行的模型:

m= reg(df1, @formula(chronic_illness ~ status+ age + social_class*crisis + fe(id) + fe(year) + fe(country)), contrasts=contr,save=true)
 

慢性病是一个二元变量(0=无慢性病),危机是一个二元变量(0=无财务危机)。这个想法是要看不同社会阶层在没有危机和有危机时的慢性疾病得分差异。这里的模型只显示相互作用效应,但我对基线值很感兴趣。

以下是输出结果:

                                         Fixed Effect Model                                           
========================================================================================================
Number of obs:                              1468882  Degrees of freedom:                          459252
R2:                                           0.703  R2 Adjusted:                                  0.567
F-Stat:                                     62.8378  p-value:                                      0.000
R2 within:                                    0.001  Iterations:                                      18
========================================================================================================
cillness                           |    Estimate  Std.Error     t value Pr(>|t|)   Lower 95%   Upper 95%
-------------------------------------------------------------------------------------------------------
status: Unemployed                 |   0.0145335 0.00157535     9.22556    0.000   0.0114459   0.0176212
status: missing                    | -0.00702545  0.0136504    -0.51467    0.607  -0.0337797   0.0197288
age                                |  0.00178437    2.79058 0.000639427    0.999    -5.46766     5.47123
class: Lower-middle class          |  0.00458331    250.251  1.83149e-5    1.000    -490.478     490.487
class: Working class               |   0.0286466    163.324 0.000175398    1.000    -320.081     320.138
crisis                             | -0.00600744 0.00156138    -3.84753    0.000 -0.00906768 -0.00294719
class: Lower-middle class & crisis | -0.00189866 0.00192896   -0.984289    0.325 -0.00567936  0.00188205
class: Working class & crisis      | -0.00332881 0.00170221    -1.95558    0.051  -0.0066651  7.46994e-6

你能展示一个最小工作示例或者你正在尝试估计的 @formula 吗?我不知道 FixedEffects.jl 中是否有任何特定的包或功能,但我并不是那些非常有经验的用户。这难道不只是构建一个 newdata 数据框并将其乘以 coef 向量的问题吗?就像你选择其他 X 的某个级别并预测 social_classmarco_unemployment 的范围一样?抱歉,我可能没有正确理解。 - Florian Oswald
谢谢您的回答,我在模型方面加入了更多的解释。 - Jack
1个回答

1
我不确定Julia中是否有与emmeans完全匹配的功能,但您可能会对Effects.jl包感兴趣。从文档中可以看到:
回归模型很有用,但解释起来可能有些棘手。变量居中和对比编码可能会掩盖主要效应的含义。交互项,特别是高阶交互项,只会增加解释的难度。在这里,我们介绍了Effects.jl,它将拟合的模型(包括估计的不确定性)转换回数据空间。使用Effects.jl,可以生成效果图,快速可视化和解释回归模型。
另外,您的模型中似乎存在二元响应,因此您可能不应该拟合线性模型,而应该选择适合您的数据的模型,以便您可以将系数解释为概率/对数几率的变化,例如logit或probit模型。(请注意,如果您的数据不太大,FixedEffectsModels不支持这些模型,您必须退回到GLM.jl或GLFixedEffectModels)。

谢谢Nils的回复,我的另一个结果是连续的,那只是一个例子。我之前联系过Effects.jl的作者关于同样的问题,他告诉我他的包不支持FixedEffects.jl,只支持MixedModels.jl。他也不认为他会为FixedEffects.jl做一个版本,因为这需要大量时间。我只是想知道是否有其他人知道如何在Julia中实现它... - Jack
有150万个观测值,你可能只需要在GLM中处理它们?像Florian一样,我也不太明白你的问题——如果你只想要特定变量水平组合的预测结果,你可以使用predict(m, x),其中x是一个包含你想要的特征组合的DataFrame。 - Nils Gudat
df = Dict(:class => ["工人阶级","上层中产阶级"],:crisis => [0:1; 0:1]) 在运行 predict(m, df) 的时候,我遇到了以下错误:'type NamedTuple has no field status Stacktrace: [1] #164 @ ./none:0 [inlined] [2] iterate(::Base.Generator{UnitRange{Int64}, Base.var"#164#167"{(:status, :age, :class, :binary), NamedTuple{(:binary, :class), Tuple{Vector{Int64}, Vector{String}}}}}) @ Base ./generator.jl:47' - Jack
你正在构建一个字典而不是数据框架吗?此外,如果您想进行预测,您需要提供所有协变量。 - Nils Gudat
请问您能否给我展示一个如何实现的例子,这样我就可以在我的代码中复现它?我对Julia并不是很熟练,所以不确定如何执行这些步骤。 - Jack
1
你需要类似于 pred_df = DataFrame(status = X, age = X, social_class = X, crisis = X, id = X, year = X, country = X) 这样的东西,其中 X 是你设置的所需值。如果你想创建不同变量水平的所有组合(例如 DataFrame(Iterators.product(["Working class", "Middle class"], 0:1))),请查看 Iterators.product - Nils Gudat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接