r语言 - "margins"如何计算线性模型中的边际效应?



我有一个线性模型(lm对象(,并使用margins来计算回归量的边际效应。据我了解,如果回归器在模型中只有一次,这相当于部分效应。对于"孩子"来说也是如此。

library("car")
library("plm")
data("LaborSupply", package = "plm")
# Regression
lm1 <- lm(lnwg ~ kids + age + I(age^2), data = LaborSupply)
# kids is once in the model
summary(lm1)           # partial effect of kids  -2.182e-02
summary(margins(lm1))  # equals marginal effect  -0.0218

输出:

Coefficients:
Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.218e+00  1.228e-01   9.921  < 2e-16 ***
kids        -2.182e-02  5.398e-03  -4.043 5.36e-05 ***
age          6.704e-02  6.392e-03  10.488  < 2e-16 ***
I(age^2)    -7.465e-04  7.936e-05  -9.406  < 2e-16 ***
factor     AME     SE       z      p   lower   upper
age  0.0089 0.0007 12.0683 0.0000  0.0075  0.0104
kids -0.0218 0.0054 -4.0426 0.0001 -0.0324 -0.0112

但为什么年龄的边际效应不等同于:

6.704e-02 + 2*-7.465e-04 = 0.065547

我的意思是,它不应该等于我的模型公式中的偏导数吗?

您说得对,它应该是该术语的偏导数,但请记住,如果您将公式与年龄区分开来,您会得到:

beta1 + 2*(beta2)*age

其中 beta1 是年龄系数,beta2 是从模型获得的年龄系数^2。

这意味着年龄的边际效应会随着年龄而变化。使用边距包,他们将返回所有年龄值的边际效应的平均值,相当于:

lm1 <- lm(lnwg ~ kids + age + I(age^2), data = LaborSupply)
mean(coefficients(lm1)[3] + 2*LaborSupply$age*coefficients(lm1)[4])
[1] 0.008938904

要更清楚地看到这一点,请执行以下操作:

lm2 <- lm(lnwg ~ age + I(age^2), data = LaborSupply)
margins(lm2)
Average marginal effects
lm(formula = lnwg ~ age + I(age^2), data = LaborSupply)
age
0.009625

系数不同(因为我们没有包括孩子(,但您将在输出中看到上面返回的消息。

最新更新