R套餐保证金默认为计算平均边际效应。 使用选项dydx(*)
在STATA中计算平均边际效应那是:
STATA:
margins, dydx(*)
给出与
相同的结果R:
margins(model)
我们是参与STATA课程的几个R用户,其中使用的边距命令只是
STATA:
margins
我们尝试过许多不同的方法来重现默认的STATA输出,但没有运气。有人可以帮助我们或链接我们相关指南吗? R-package“margin”的插图仅使用带有“dydx(*)”选项的示例。
任何帮助表示感谢。
答案 0 :(得分:2)
Stata的margins
命令执行两项任务:
当您指定margins VARNAME
时,您将获得预测边距,这是数据集反事实版本中的平均预测值,其中VARNAME
固定为可能的值。请考虑以下内容:
webuse margex, clear
quietly regress y i.sex i.group
. margins sex
Predictive margins Number of obs = 3,000
Model VCE : OLS
Expression : Linear prediction, predict()
------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
sex |
male | 60.56034 .5781782 104.74 0.000 59.42668 61.69401
female | 78.88236 .5772578 136.65 0.000 77.7505 80.01422
------------------------------------------------------------------------------
您可能会认为这等同于简单地获取所有病例的预测值,然后获取男性和女性的亚组平均值,但是:
predict y_star
tabstat y_star, by(sex)
Summary for variables: y_star
by categories of: sex
sex | mean
-------+----------
male | 64.5721
female | 74.88129
-------+----------
Total | 69.73357
------------------
实际发生的是:
replace sex = 0
predict p_male
replace sex = 1
predict p_female
mean p_male p_female
Mean estimation Number of obs = 3,000
--------------------------------------------------------------
| Mean Std. Err. [95% Conf. Interval]
-------------+------------------------------------------------
p_male | 60.56034 .1301116 60.30523 60.81546
p_female | 78.88236 .1301117 78.62725 79.13748
--------------------------------------------------------------
因此,该功能为您提供了反事实平均预测。
您可以在R中获得相同的结果:
library("prediction")
library("webuse")
webuse::webuse("margex")
m <- lm(y ~ sex + group, data = margex)
prediction(m, at = list(sex = c(0,1)))
Average predictions for 3000 observations:
at(sex) value
0 60.51
1 78.93
不幸的是,预测没有提供预测边距的差异,只是边距本身。
如果您指定, dydx(*)
,则要求边际效应。如您已经知道的那样,可以使用margins::margins()
以与Stata相同的方式获得它。