Stata:邊際效應分析


作者:連玉君 | 楊柳 ( 知乎 | 簡書 | 碼雲 )

Stata 現場培訓報名中…… (點擊下方【閱讀原文】查看)

1. 邊際效應簡介

1.1 引言

  • 考研復試結束后,你和閨蜜決定去成都旅游。當你和閨蜜正在品嘗當地最有名氣的麻辣火鍋時,你們感覺心情非常愉快。此時,麻辣火鍋將有助於有一個好心情,它對心情的邊際效應是正值;當你們吃到一半時,手機上收到了一條消息,是考研復試的排名結果,打開消息后,發現你們倆都榜上有名。你們看到被錄取的消息后萬分高興,吃的更high了,又多點了一些菜,並決定吃完后再去KTV慶祝下。此時,考研成功的結果極大的增加了吃火鍋對心情的邊際效應值。

  • 研究生入學后,你和閨蜜都十分努力學習,認真的完成導師布置的課題任務並將課題研究內容整理成小論文投到了一個C刊上,但遭到拒稿。此時,努力學習對科研成果的邊際效應是負值。不過你們沒有就此停止努力,繼續請教導師、按照意見認真修改並寫成英文投到了一個SSCI期刊上,結果被錄用了。此時,隨着努力程度的增加,它對科研成果的邊際效應變為正值。

  • 總結上面的例子,我們發現吃麻辣火鍋(x1)對心情(y)的邊際效應受到其他變量(x2:考研成功)的調節作用,使得該邊際效應值增加了。一開始,努力學習(x3)對科研成果的邊際效應為負,但隨着努力程度的增加(x3值的增加),它對科研成果的邊際效應變為正值。

1.2 邊際效應分析的必要性

  • 雖然 回歸結果表格 中的變量的系數估計值反映了該變量對被解釋變量影響作用的大小,並且一直是學者們交流回歸模型結果的重要方式,但是,當回歸模型中包含 類別變量交乘項 或者 回歸模型為非線性(諸如 Logit, Probit 等非線性模型)時,對系數估計值的解釋就非常具有挑戰性。這時,就需要計算變量的 邊際效應 或者計算 預測邊際值, 以探求 自變量變化因變量變化影響作用 或分析比較不同情況時的因變量預測邊際值的大小。

  • 下面,我們就一起來學習如何在stata中計算邊際效應並繪制圖形。

1.3 邊際效應的定義

  • 所謂 邊際效應 是從已有擬合模型結果中計算出來的統計量,該數值表示 自變量的變化因變量的變化影響作用大小

  • 在對模型結果進行分析時,可以計算 連續變量取某一個值 時,連續變量因變量 的邊際效應,也可以計算 連續變量平均值處 的邊際效應,或者還可以計算 其他變量取均值連續變量因變量 的平均邊際效應。

2. 計算邊際效應命令(margins)與繪圖命令(marginsplot)

2.1 margins 命令

  • margins 命令的語法如下所示:
margins [marginlist] [if] [in] [weight] [, response_options options]
  • 命令含義:
    圖1 margins命令解釋.png

Note: 有關如何使用因子變量的介紹請參見 往期推文:stata中因子變量的使用方法

2.2 marginsplot 繪圖命令

  • 使用 marginsplot 命令可以將之前剛剛計算的邊際效應的結果以圖的形式展示出來。語法如下:

    marginsplot [, options]
  • 命令含義:

圖2 marginsplot命令解釋.png

3. margins與marginsplot命令舉例

3.1 基礎案例

  • 在美國的種族文化中,不可否認白人與黑人之間的差異性。例如,存在着白人與黑人在行業類別與工資方面差異的現象。於是,我們想檢驗種族是否為工資的顯著影響因素,還想了解當行業類別相當時,不同種族的工資的平均水平分別是多少,它們之間的差別有多少。

  • 接下來,我們使用 stata 的自帶數據 nlsw88.dta (1988年美國婦女小時工資) ,以 wage (婦女的小時工資) 作為被解釋變量、以 industry (行業類別)race (種族類別) 作為解釋變量建立線性回歸模型。

  • race 變量為 類別變量,它包括三個類別,分別為 whiteblackother。可以使用 因子變量 的語法格式,在變量前面加上前綴 i. 生成虛擬變量 (i.race),基准組為第一個類別 whiteindustry 變量也同樣使用 因子變量 的語法格式生成虛擬變量 (i.industry),基准組為第一個類別 Ag/Forestry/Fisheriesstata 中的回歸命令和結果如下所示:

.   sysuse "nlsw88.dta", clear
(NLSW, 1988 extract)

.   reg wage i.race i.industry

      Source | SS df MS Number of obs = 2,232
-------------+----------------------------------   F(13, 2218)     =     13.00
       Model | 5246.90865 13 403.608358 Prob > F = 0.0000
    Residual | 68870.3701 2,218 31.0506628 R-squared = 0.0708
-------------+----------------------------------   Adj R-squared   =    0.0653
       Total | 74117.2788 2,231 33.2215503 Root MSE = 5.5723

------------------------------------------------------------------------------------------
                    wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------------+----------------------------------------------------------------
                    race |
                  black  | -1.099771 .2743495 -4.01 0.000 -1.63778 -.5617626
                  other  | .1317467 1.103937 0.12 0.905 -2.033111 2.296604
                         |
                industry |
                 Mining  | 9.469702 3.097312 3.06 0.002 3.395767 15.54364
           Construction  | 1.832193 1.702718 1.08 0.282 -1.506895 5.17128
          Manufacturing  | 2.021802 1.382963 1.46 0.144 -.6902358 4.733841
 Transport/Comm/Utility  | 5.891929 1.473775 4.00 0.000 3.001807 8.782052
 Wholesale/Retail Trade  | .4639784 1.38559 0.33 0.738 -2.25321 3.181167
Finance/Ins/Real Estate  | 4.10511 1.410372 2.91 0.004 1.339321 6.870898
    Business/Repair Svc  | 1.888596 1.479264 1.28 0.202 -1.01229 4.789483
      Personal Services  | -.9699527 1.466554 -0.66 0.508 -3.845914 1.906009
  Entertainment/Rec Svc  | 1.038595 1.911355 0.54 0.587 -2.709638 4.786828
  Professional Services  | 2.252467 1.365435 1.65 0.099 -.4251976 4.930132
  Public Administration  | 3.602952 1.415632 2.55 0.011 .8268485 6.379055
                         |
                   _cons | 5.879891 1.353025 4.35 0.000 3.226563 8.533219
------------------------------------------------------------------------------------------
  • 回歸結果顯示:婦女種族為 black 的系數值為 -1.099 並在1%的水平上顯著;婦女種族為 other 的系數值為 0.131 但在統計上不顯著。上述結果表明:當控制各行業類別變量時,黑人婦女的小時工資比白人婦女的小時工資低 1.099個單位。我們還想進一步了解當控制行業類別變量時,各個種族類別(white, black, other)的婦女的小時工資的平均水平是多少。於是,我們使用 margins 命令附加 atmeans 的選項就可以計算當 其他變量取均值時不同種族的婦女 的小時工資的 預測邊際值stata 命令和結果如下所示:
.   margins i.race, atmeans    //前綴 i. 可省略不寫

Adjusted predictions                            Number of obs     =      2,232
Model VCE    : OLS

Expression   : Linear prediction, predict()
at           : 1.race          =    .7289427 (mean)
               2.race          =    .2594086 (mean)
               3.race          =    .0116487 (mean)
               1.industry      =    .0076165 (mean)
               2.industry      =    .0017921 (mean)
               3.industry      =    .0129928 (mean)
               4.industry      =    .1644265 (mean)
               5.industry      =    .0403226 (mean)
               6.industry      =    .1491935 (mean)
               7.industry      =    .0860215 (mean)
               8.industry      =    .0385305 (mean)
               9.industry      =    .0434588 (mean)
               10.industry     =    .0076165 (mean)
               11.industry     =    .3691756 (mean)
               12.industry     =     .078853 (mean)

------------------------------------------------------------------------------
             |            Delta-method | Margin Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- race | white | 8.067219 .1387997 58.12 0.000 7.795028 8.33941 black | 6.967447 .2345358 29.71 0.000 6.507515 7.42738 other | 8.198965 1.094967 7.49 0.000 6.051697 10.34623 ------------------------------------------------------------------------------
  • 計算結果表明:當行業類別變量取均值時,白人婦女的小時工資的預測邊際值為 8.067、黑人婦女的小時工資的預測邊際值為 6.967、其他種族的婦女的小時工資的預測邊際值為 8.198

  • 我們還想將邊際效應的計算結果用圖的形式表示。使用 marginsplot 命令就可以很方便的實現這個想法。stata 命令如下所示:

marginsplot
  • marginsplot 命令的輸出圖片如下所示:
    圖3 各種族類別的婦女小時工資的預測邊際值.png

3.2 交乘項案例

  • 下面,繼續以研究婦女工資的影響因素為例對計算交乘項的邊際效應的使用方法進行說明。

3.2.1 類別變量與類別變量交乘

  • 從3.1節案例的回歸結果中,我們已知道種族 race 是婦女工資 wage 的影響因素之一。但是,除此之外,還有諸多因素會影響婦女工資,例如是否大學畢業 collgrad。因此,我們想探究是否大學畢業 collgrad 能否調節種族 race 對婦女工資 wage 的影響作用。於是,擬在回歸模型中加入這兩個變量的 交乘項 來檢驗是否存在調節效應。

  • 使用 stata 的自帶數據 nlsw88.dta (1988年美國婦女小時工資),以 wage (婦女的小時工資) 作為被解釋變量、以 industry (行業類別)collgrad (是否大學畢業)race (種族類別)race (種族類別)collgrad (是否大學畢業)交乘項 建立線性回歸模型。

  • 使用 因子變量 的語法格式,collgrad##i.race 表示在模型中既包括 collgradrace 變量,還包括 collgradrace 變量的 交乘項stata 中的回歸命令和結果如下所示:

.    reg wage i.industry collgrad##i.race

      Source | SS df MS Number of obs = 2,232
-------------+----------------------------------   F(16, 2215)     =     23.20
       Model | 10639.3304 16 664.958149 Prob > F = 0.0000
    Residual | 63477.9484 2,215 28.658216 R-squared = 0.1435
-------------+----------------------------------   Adj R-squared   =    0.1374
       Total | 74117.2788 2,231 33.2215503 Root MSE = 5.3533

------------------------------------------------------------------------------------------
                    wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------------+----------------------------------------------------------------
                industry |
                 Mining  | 10.14131 2.976152 3.41 0.001 4.304972 15.97765
           Construction  | 2.198272 1.636227 1.34 0.179 -1.010428 5.406972
          Manufacturing  | 2.419311 1.329182 1.82 0.069 -.187261 5.025884
 Transport/Comm/Utility  | 6.12037 1.41599 4.32 0.000 3.343563 8.897177
 Wholesale/Retail Trade  | .7578957 1.331357 0.57 0.569 -1.852943 3.368734
Finance/Ins/Real Estate  | 4.258568 1.355005 3.14 0.002 1.601355 6.915781
    Business/Repair Svc  | 1.894149 1.421387 1.33 0.183 -.8932415 4.681539
      Personal Services  | -.3136217 1.410269 -0.22 0.824 -3.07921 2.451967
  Entertainment/Rec Svc  | .7577804 1.837152 0.41 0.680 -2.84494 4.3605
  Professional Services  | 1.399826 1.313806 1.07 0.287 -1.176593 3.976246
  Public Administration  | 3.367397 1.360314 2.48 0.013 .6997726 6.035021
                         |
                collgrad |
           college grad  | 3.346222 .3197178 10.47 0.000 2.719244 3.9732
                         |
                    race |
                  black  | -1.279729 .2951157 -4.34 0.000 -1.858461 -.7009966
                  other  | -.3266847 1.31086 -0.25 0.803 -2.897328 2.243959
                         |
           collgrad#race |
     college grad#black | 2.098549 .6590111 3.18 0.001 .8062049 3.390893
     college grad#other | .7141623 2.2373 0.32 0.750 -3.673262 5.101587
                         |
                   _cons | 5.20828 1.301126 4.00 0.000 2.656726 7.759834
------------------------------------------------------------------------------------------
  • 回歸結果顯示:大學畢業與黑人的交乘項 collgrad#black 的系數顯著為正,而黑人 black 的系數顯著為負,表明大學畢業 collgrad 對黑人 black 與 婦女的小時工資 wage 之間的影響關系具有調節作用。因此,我們想進一步了解 大學畢業(collgrad)種族(race) 交乘項的 各個類別婦女的小時工資 (wage) 的邊際效應分別是多少。於是,我們使用 margins 附加 atmeans 的選項就可以計算當 其他變量取均值時collgrad 與race交乘項的各個類別 的小時工資的 預測邊際值stata 命令和結果如下所示:
.    margins collgrad#i.race, atmeans

Adjusted predictions                            Number of obs     =      2,232
Model VCE    : OLS

Expression   : Linear prediction, predict()
at           : 1.industry      =    .0076165 (mean)
               2.industry      =    .0017921 (mean)
               3.industry      =    .0129928 (mean)
               4.industry      =    .1644265 (mean)
               5.industry      =    .0403226 (mean)
               6.industry      =    .1491935 (mean)
               7.industry      =    .0860215 (mean)
               8.industry      =    .0385305 (mean)
               9.industry      =    .0434588 (mean)
               10.industry     =    .0076165 (mean)
               11.industry     =    .3691756 (mean)
               12.industry     =     .078853 (mean)
               0.collgrad      =    .7629928 (mean)
               1.collgrad      =    .2370072 (mean)
               1.race          =    .7289427 (mean)
               2.race          =    .2594086 (mean)
               3.race          =    .0116487 (mean)

-----------------------------------------------------------------------------------------
                        |            Delta-method
                        |     Margin   Std. Err.      t    P>|t|     [95% Conf. Interval]
------------------------+----------------------------------------------------------------
          collgrad#race |
not college grad#white | 7.226442 .156204 46.26 0.000 6.92012 7.532763
not college grad#black | 5.946713 .2504188 23.75 0.000 5.455632 6.437793
not college grad#other | 6.899757 1.300669 5.30 0.000 4.349098 9.450416
    college grad#white | 10.57266 .273137 38.71 0.000 10.03703 11.10829
    college grad#black | 11.39148 .5335905 21.35 0.000 10.34509 12.43787
    college grad#other | 10.96014 1.789176 6.13 0.000 7.451503 14.46878
-----------------------------------------------------------------------------------------
  • 計算結果表明:當其他變量處於均值水平時,當婦女沒有大學畢業時,白人婦女的小時工資的預測邊際值最大,為 7.226,而當婦女為大學畢業時,黑人婦女的小時工資的預測邊際值最大,為 11.391

  • 我們使用 marginsplot 命令將計算結果用圖的形式表示。stata 命令如下所示:

. marginsplot
  • 輸出圖片如下所示:
    圖4 collgrad與race交乘項各個類別的婦女小時工資的預測邊際值.png

  • 此外,我們還可以進一步計算在 不同種族類別下(race)大學畢業(collgrad=1)非大學畢業(collgrad=0)婦女小時工資 (wage) 的預測邊際值的差值是多少。於是,我們使用 margins 附加 dydxatatmeans 的選項來實現 。stata 命令和結果如下所示:

.    margins, dydx(collgrad) at(race=(1 2 3)) atmeans

Conditional marginal effects                    Number of obs     =      2,232
Model VCE    : OLS

Expression   : Linear prediction, predict()
dy/dx w.r.t. : 1.collgrad

1._at        : 1.industry      =    .0076165 (mean)
               2.industry      =    .0017921 (mean)
               3.industry      =    .0129928 (mean)
               4.industry      =    .1644265 (mean)
               5.industry      =    .0403226 (mean)
               6.industry      =    .1491935 (mean)
               7.industry      =    .0860215 (mean)
               8.industry      =    .0385305 (mean)
               9.industry      =    .0434588 (mean)
               10.industry     =    .0076165 (mean)
               11.industry     =    .3691756 (mean)
               12.industry     =     .078853 (mean)
               0.collgrad      =    .7629928 (mean)
               1.collgrad      =    .2370072 (mean)
               race            =           1

2._at        : 1.industry      =    .0076165 (mean)
               2.industry      =    .0017921 (mean)
               3.industry      =    .0129928 (mean)
               4.industry      =    .1644265 (mean)
               5.industry      =    .0403226 (mean)
               6.industry      =    .1491935 (mean)
               7.industry      =    .0860215 (mean)
               8.industry      =    .0385305 (mean)
               9.industry      =    .0434588 (mean)
               10.industry     =    .0076165 (mean)
               11.industry     =    .3691756 (mean)
               12.industry     =     .078853 (mean)
               0.collgrad      =    .7629928 (mean)
               1.collgrad      =    .2370072 (mean)
               race            =           2

3._at        : 1.industry      =    .0076165 (mean)
               2.industry      =    .0017921 (mean)
               3.industry      =    .0129928 (mean)
               4.industry      =    .1644265 (mean)
               5.industry      =    .0403226 (mean)
               6.industry      =    .1491935 (mean)
               7.industry      =    .0860215 (mean)
               8.industry      =    .0385305 (mean)
               9.industry      =    .0434588 (mean)
               10.industry     =    .0076165 (mean)
               11.industry     =    .3691756 (mean)
               12.industry     =     .078853 (mean)
               0.collgrad      =    .7629928 (mean)
               1.collgrad      =    .2370072 (mean)
               race            =           3

------------------------------------------------------------------------------
             |            Delta-method | dy/dx Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- 0.collgrad | (base outcome) -------------+---------------------------------------------------------------- 1.collgrad | _at | 1 | 3.346222 .3197178 10.47 0.000 2.719244 3.9732 2 | 5.444771 .5929386 9.18 0.000 4.281997 6.607545 3 | 4.060384 2.212164 1.84 0.067 -.2777476 8.398516 ------------------------------------------------------------------------------ Note: dy/dx for factor levels is the discrete change from the base level.
  • 計算結果顯示:大學畢業(collgrad=1) 黑人婦女的小時工資的預測邊際值與 非大學畢業(collgrad=0) 黑人婦女的小時工資的預測邊際值的差值是最大的,為 5.444,結果表明,上大學將在很大程度上提高黑人婦女工資。

  • 同樣的,我們使用 marginsplot 命令將計算結果用圖的形式表示。stata 命令如下所示:

. marginsplot
  • 輸出圖片如下所示:
    圖5 不同種族的大學畢業與非大學畢業的婦女小時工資的預測邊際值的差別.png

3.2.2 類別變量與連續型變量交乘

  • 影響婦女工資的因素較多,下面我們就來檢驗諸如 hours (每周工作時間)union (是否工會成員) 這兩個變量的 交乘項 是否會對婦女工資產生影響,其中 hours 為連續型變量, union 為類別變量。

  • 使用 stata 的自帶數據 nlsw88.dta (1988年美國婦女小時工資),以 wage (婦女的小時工資) 作為被解釋變量、以 industry (行業類別)union (是否工會成員)hours (每周工作小時數)union (是否工會成員)hours (每周工作小時數)交乘項 建立線性回歸模型。

  • 使用 因子變量 的語法格式,i.union##c.hours 表示在模型中既包括 unionhours 變量,還包括 unionhours 變量的 交乘項stata 中的回歸命令和結果如下所示:

.    reg wage i.industry c.hours##i.union

      Source | SS df MS Number of obs = 1,864
-------------+----------------------------------   F(14, 1849)     =     19.48
       Model | 4165.55214 14 297.539439 Prob > F = 0.0000
    Residual | 28235.7439 1,849 15.2708188 R-squared = 0.1286
-------------+----------------------------------   Adj R-squared   =    0.1220
       Total | 32401.296 1,863 17.392 Root MSE = 3.9078

------------------------------------------------------------------------------------------
                    wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------------+----------------------------------------------------------------
                industry |
                 Mining  | 1.965311 2.98501 0.66 0.510 -3.889033 7.819655
           Construction  | 2.944549 1.427687 2.06 0.039 .1445001 5.744598
          Manufacturing  | .8876583 1.149997 0.77 0.440 -1.367771 3.143088
 Transport/Comm/Utility  | 4.66455 1.206553 3.87 0.000 2.298201 7.030899
 Wholesale/Retail Trade  | -.2176107 1.15411 -0.19 0.850 -2.481107 2.045886
Finance/Ins/Real Estate  | 2.714369 1.171926 2.32 0.021 .4159324 5.012805
    Business/Repair Svc  | 1.261646 1.238032 1.02 0.308 -1.166442 3.689734
      Personal Services  | -1.602596 1.231961 -1.30 0.193 -4.018775 .8135844
  Entertainment/Rec Svc  | 1.454197 1.537525 0.95 0.344 -1.561271 4.469666
  Professional Services  | 1.454095 1.137893 1.28 0.201 -.7775962 3.685785
  Public Administration  | 2.658987 1.171222 2.27 0.023 .3619308 4.956043
                         |
                   hours | .0565515 .0104406 5.42 0.000 .0360748 .0770282
                         |
                   union |
                  union  | 3.761049 .8990725 4.18 0.000 1.997745 5.524353
                         |
           union#c.hours |
                  union  | -.0747591 .0226682 -3.30 0.001 -.1192171 -.0303012
                         |
                   _cons | 3.864411 1.193668 3.24 0.001 1.523332 6.20549
------------------------------------------------------------------------------------------
  • 回歸結果顯示 hours(每周工作小時數) 的系數值顯著為正,為 0.056union(是否工會成員) 的系數值顯著為正,為 3.761,而 工會成員的每周工作小時(union#c.hours) 的系數值顯著為負,為 -0.074,表明 hours (每周工作小時數)wage (婦女的小時工資) 的邊際效應會受到 union (是否工會成員) 的影響;union (是否工會成員)wage (婦女的小時工資) 的邊際效應也會受到 hours (每天工作小時數) 的影響。

  • 我們使用 margins 命令附加 dydx 選項與 at 選項來計算當婦女為工會成員或非工會成員時,hourswage 的平均邊際效應分別為多少。stata 中的命令和結果如下所示:

.    margins, dydx(hour) at(union=(0 1))

Average marginal effects                        Number of obs     =      1,864
Model VCE    : OLS

Expression   : Linear prediction, predict()
dy/dx w.r.t. : hours

1._at        : union           =           0
2._at        : union           =           1

------------------------------------------------------------------------------
             |            Delta-method | dy/dx Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- hours | _at | 1 | .0565515 .0104406 5.42 0.000 .0360748 .0770282 2 | -.0182076 .020211 -0.90 0.368 -.0578463 .0214312 ------------------------------------------------------------------------------
  • 計算結果表明:當婦女為工會成員時,每周工作小時數增加 1 個單位,則小時工資下降0.018個單位,但在統計上不顯著;當婦女為非工會成員時,每周工作小時增加 1 個單位,則小時工資將顯著增加 0.056 個單位。

  • 使用 marginsplot 命令將計算結果用圖的形式表示。stata 命令如下所示:

. marginsplot
  • 輸出圖片如下所示:
    圖6 是否工會成員的工作小時數對婦女小時工資的平均邊際效應.png

  • 我們還可以計算當婦女每周工作小時數不同時,unionwage 的邊際效應分別為多少。可以使用 margins 命令附加 dydx 選項與 at 選項。在計算之前,我們需要事先知道 hours 變量的取值范圍,可使用 sum命令查看。 stata 中的命令和結果如下所示:

.    keep if e(sample)
(382 observations deleted)

.    sum hours

    Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
       hours | 1,864 37.62071 9.959845 1 80

.    margins, dydx(union) at(hours=(1(5)80))

Average marginal effects                        Number of obs     =      1,864
Model VCE    : OLS

Expression   : Linear prediction, predict()
dy/dx w.r.t. : 1.union

1._at        : hours           =           1
2._at        : hours           =           6
3._at        : hours           =          11
4._at        : hours           =          16
5._at        : hours           =          21
6._at        : hours           =          26
7._at        : hours           =          31
8._at        : hours           =          36
9._at        : hours           =          41
10._at       : hours           =          46
11._at       : hours           =          51
12._at       : hours           =          56
13._at       : hours           =          61
14._at       : hours           =          66
15._at       : hours           =          71
16._at       : hours           =          76

------------------------------------------------------------------------------
             | Delta-method
             | dy/dx Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
0.union      | (base outcome)
-------------+----------------------------------------------------------------
1.union      |
         _at |
          1  | 3.68629 .8771081 4.20 0.000 1.966064 5.406516
          2  | 3.312494 .7678999 4.31 0.000 1.806452 4.818536
          3  | 2.938699 .6600865 4.45 0.000 1.644105 4.233292
          4  | 2.564903 .5544822 4.63 0.000 1.477426 3.65238
          5  | 2.191107 .4526359 4.84 0.000 1.303376 3.078838
          6  | 1.817312 .3577712 5.08 0.000 1.115634 2.51899
          7  | 1.443516 .2771526 5.21 0.000 .8999512 1.987081
          8  | 1.06972 .2265375 4.72 0.000 .6254243 1.514017
          9  | .6959248 .2269741 3.07 0.002 .2507724 1.141077
         10  | .3221292 .2782222 1.16 0.247 -.2235335 .8677918
         11  | -.0516665 .3591522 -0.14 0.886 -.7560529 .6527199
         12  | -.4254621 .4541644 -0.94 0.349 -1.316191 .4652668
         13  | -.7992578 .5560869 -1.44 0.151 -1.889882 .2913665
         14  | -1.173053 .6617344 -1.77 0.076 -2.470879 .1247717
         15  | -1.546849 .7695742 -2.01 0.045 -3.056175 -.0375234
         16  | -1.920645 .8787996 -2.19 0.029 -3.644189 -.1971008
------------------------------------------------------------------------------
Note: dy/dx for factor levels is the discrete change from the base level.
  • 計算結果表明:相對於非工會成員,隨着 hours 取值的增加,工會成員對婦女工資的邊際效應逐漸減小;當 hours大於等於51小時,工會成員的婦女工資的預測邊際值比非工會成員的低。

  • 為了更直觀的顯示結果,我們使用 marginsplot 命令進行繪圖。stata 命令如下所示:

. marginsplot
  • 輸出圖片如下所示:
    圖7 工會成員與非工會成員的工作小時對婦女小時工資的邊際效應的差別.png

3.2.3 連續型變量與連續型變量交乘

  • 在實證研究中常常會分析兩個連續型變量的交乘項的影響作用和變量的調節作用。例如,當車輛重量 weight 與每加侖汽油行駛的距離 mpg 增加時,汽車價格 price 會有所增加。現在,我們想進一步了解每加侖汽油行駛距離 mpg 能否調節車輛重量 weight 與汽車價格 price 之間的影響關系。於是,擬在回歸模型中加入這兩個 連續變量交乘項,然后再計算當每加侖汽油行駛距離 mpg 取不同的數值時,車輛重量 weight 對汽車價格 price 的邊際效應。

  • 使用 stata 的自帶數據 auto.dta (1978年美國汽車數據),以 price (汽車價格) 作為被解釋變量、以 foreign (是否進口車)mpg (每加侖汽油能夠行駛的英里數)weight (汽車重量)mpg (每加侖汽油能夠行駛的英里數)weight (汽車重量)交乘項 作為解釋變量建立線性回歸模型。

  • 使用 因子變量 的語法格式,c.mpg##c.weight 表示在模型中既包括 mpgweight 變量,還包括 mpgweight 變量的 交乘項stata 中的回歸命令和結果如下所示:

.    sysuse "auto.dta", clear
(1978 Automobile Data)

.    reg price foreign c.mpg##c.weight

      Source | SS df MS Number of obs = 74
-------------+----------------------------------   F(4, 69)        =     18.96
       Model | 332566402 4 83141600.6 Prob > F = 0.0000
    Residual | 302498994 69 4384043.39 R-squared = 0.5237
-------------+----------------------------------   Adj R-squared   =    0.4961
       Total | 635065396 73 8699525.97 Root MSE = 2093.8

--------------------------------------------------------------------------------
         price | Coef. Std. Err. t P>|t| [95% Conf. Interval]
---------------+----------------------------------------------------------------
       foreign | 3369.814 691.4218 4.87 0.000 1990.466 4749.163
           mpg | 292.8295 162.2982 1.80 0.076 -30.94655 616.6056
        weight | 5.382755 1.198909 4.49 0.000 2.990997 7.774512
               |
c.mpg#c.weight | -.1189117 .0636245 -1.87 0.066 -.2458392 .0080157
               |
         _cons | -10105.04 4023.204 -2.51 0.014 -18131.11 -2078.967
--------------------------------------------------------------------------------
  • 回歸結果顯示 mpgweight 的系數值顯著為正,而 c.mpg#c.weight 的系數值顯著為負 -0.118,表明 mpg (每加侖汽油能夠行駛的英里數) 能夠調節 weight (汽車重量)汽車價格 (price) 的邊際效應。

  • 下面,我們計算當 mpg (每加侖汽油能夠行駛的英里數) 取不同數值時,weight (汽車重量)price (汽車價格) 的邊際效應。使用 margins 命令附加 dydx 選項與 at 選項來計算。首先,需要知道 mpg (每加侖汽油能夠行駛的英里數) 的取值范圍,因此,先使用 sum 命令查看該變量的基本統計量,再使用 margins 命令附加 dydx 選項與 at 選項。stata 中的命令和結果如下所示:

. keep if e(sample)
(0 observations deleted)

. sum mpg  //查看 mpg 的基本統計量

 Variable | Obs Mean Std. Dev. Min Max -------------+---------------------------------------------------------
 mpg | 74 21.2973 5.785503 12 41

. margins, dydx(weight) at(mpg=(12(2)41))

Average marginal effects                        Number of obs     =         74
Model VCE    : OLS

Expression   : Linear prediction, predict()
dy/dx w.r.t. : weight

1._at : mpg = 12 2._at        : mpg             =          14
3._at : mpg = 16 4._at        : mpg             =          18
5._at : mpg = 20 6._at        : mpg             =          22
7._at : mpg = 24 8._at        : mpg             =          26
9._at : mpg = 28 10._at       : mpg             =          30
11._at : mpg = 32 12._at       : mpg             =          34
13._at : mpg = 36 14._at       : mpg             =          38
15._at : mpg = 40 ------------------------------------------------------------------------------ | Delta-method | dy/dx Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- weight | _at | 1 | 3.955814 .6732094 5.88 0.000 2.612798 5.29883 2 | 3.71799 .6344514 5.86 0.000 2.452294 4.983686 3 | 3.480167 .6198636 5.61 0.000 2.243573 4.716761 4 | 3.242343 .6311243 5.14 0.000 1.983285 4.501402 5 | 3.00452 .6669255 4.51 0.000 1.67404 4.335 6 | 2.766696 .7236338 3.82 0.000 1.323086 4.210306 7 | 2.528873 .7967979 3.17 0.002 .9393044 4.118441 8 | 2.291049 .8823336 2.60 0.011 .530842 4.051257 9 | 2.053226 .9769968 2.10 0.039 .1041705 4.002281 10 | 1.815402 1.078387 1.68 0.097 -.3359202 3.966725 11 | 1.577579 1.184777 1.33 0.187 -.7859873 3.941145 12 | 1.339755 1.294937 1.03 0.304 -1.243573 3.923084 13 | 1.101932 1.407981 0.78 0.437 -1.706913 3.910777 14 | .8641083 1.523268 0.57 0.572 -2.174727 3.902944 15 | .6262849 1.640324 0.38 0.704 -2.646072 3.898641 ------------------------------------------------------------------------------
  • 為了使結果更加直觀的顯示出來,可使用 marginsplot 命令進行繪圖。stata 命令和結果如下所示:
marginsplot
  • 輸出圖片如下:
    圖8 mpg取值不同時,weight對price的平均邊際效應.png

  • 計算結果表明:當 mpg 小於28時,隨着 mpg 增加,weightprice 的邊際效應逐漸減小且在統計上顯著;當 mpg 大於28時,weightprice 的邊際效應逐漸減小在統計上不顯著。

3.3 非線性模型案例 (Logit Model)

  • 由於在非線性模型的回歸結果中,例如 Logit Model,自變量的系數值不能直接代表該變量對因變量的邊際效應值,因此,我們需要借助 margins 命令來計算邊際效應。

  • 使用 stata 的自帶數據 auto.dta (1978年美國汽車數據),以 foreign (是否進口車) 作為被解釋變量、以 mpg (每加侖汽油能夠行駛的英里數)weight (汽車重量) 作為解釋變量建立Logit回歸模型。stata 中的回歸命令和結果如下所示:

.    sysuse "auto.dta", clear
(1978 Automobile Data)

.    logit foreign mpg weight

Iteration 0:   log likelihood =  -45.03321  
Iteration 1:   log likelihood = -29.238536  
Iteration 2:   log likelihood = -27.244139  
Iteration 3:   log likelihood = -27.175277  
Iteration 4:   log likelihood = -27.175156  
Iteration 5:   log likelihood = -27.175156  

Logistic regression                             Number of obs     =         74
                                                LR chi2(2)        =      35.72
                                                Prob > chi2       =     0.0000
Log likelihood = -27.175156                     Pseudo R2         =     0.3966

------------------------------------------------------------------------------
     foreign |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         mpg |  -.1685869   .0919175    -1.83   0.067    -.3487418     .011568
      weight |  -.0039067   .0010116    -3.86   0.000    -.0058894    -.001924
       _cons |   13.70837   4.518709     3.03   0.002     4.851859    22.56487
------------------------------------------------------------------------------
  • 回歸結果顯示 mpgweight 的系數值顯著為負,表明當車輛的 mpgweight 增加時,該車輛是進口車的概率減小。但從這兩個變量的系數值無法直接看出 mpgweight車輛是進口車的概率 的邊際效應。於是,我們可以使用 margins 命令附加 dydx 選項來進行計算。stata 中的命令和結果如下所示:
. margins, dydx(mpg)

Average marginal effects                        Number of obs     =         74
Model VCE    : OIM

Expression   : Pr(foreign), predict()
dy/dx w.r.t. : mpg

------------------------------------------------------------------------------
             |            Delta-method | dy/dx Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- mpg | -.0197187 .0096987 -2.03 0.042 -.0387277 -.0007096 ------------------------------------------------------------------------------ . margins, dydx(weight) Average marginal effects Number of obs = 74 Model VCE : OIM

Expression   : Pr(foreign), predict()
dy/dx w.r.t. : weight

------------------------------------------------------------------------------
             |            Delta-method | dy/dx Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- weight | -.0004569 .0000571 -8.01 0.000 -.0005688 -.0003451 ------------------------------------------------------------------------------
  • 計算結果顯示:當 mpg 增加 1 個單位時,車輛為進口車的概率減少 1.97%;當 weight 增加 1 個單位時,車輛為進口車的概率減少 0.04%

4. marginscontplot命令及舉例

4.1 命令簡介

  • marginscontplot 命令可以計算當 連續變量 取值不同、其他變量取均值時,被解釋變量的預測邊際值並繪制圖形(同樣適用於分類變量)。該命令可適用於絕大部分的回歸命令,諸如 regresslogitprobitpoissonglmstcoxstregxtreg 等。

  • marginscontplot (可簡寫為 mcp)命令將 margins 命令的計算功能與 marginsplot 命令的繪圖功能整合在一起,並且能夠識別 連續變量 的取值范圍,無須在計算之前使用 sum 命令確定 該連續變量的取值范圍 。因此,marginscontplot 命令使用起來更加便捷。

  • 更為方便的是,當回歸模型中的 連續變量 進行了線性或非線性的數值轉換后,marginscontplot 命令可以在圖形的坐標軸上顯示連續變量的 原始取值

4.2 語法

  • marginscontplot 命令的語法如下所示:
{marginscontplot|mcp} xvar1 [(xvar1a [xvar1b ...])] [xvar2 [(xvar2a [xvar2b ...])]] [if] [in] [, options]
  • 命令含義:
  • 當分析一個變量 (xvar1) 時,由 at1() 選項和 var1() 選項來確定;當分析兩個變量時 (xvar1xvar2),還需加入 var2()at2() 選項。

圖9 marginscontplot命令解釋.png

4.3 安裝

  • 由於 marginscontplot 命令是由 Patrick Royston 編寫的外部命令 (Patrick Royston, 2013),因此使用前需要安裝該命令。
  • 首先在命令窗口中搜索 marginscontplot, 點擊搜索結果中的安裝包鏈接進行安裝后即可使用。

4.4 使用案例

4.4.1 單個變量

  • 下面,仍以研究婦女工資的決定因素為例進行說明。在3.2.2節中,我們使用了 stata 的自帶數據 nlsw88.dta (1988年美國婦女小時工資),以 wage (婦女的小時工資) 作為被解釋變量、以 industry (行業類別)union (是否工會成員)hours (每周工作小時數)union (是否工會成員)hours (每周工作小時數)交乘項 建立線性回歸模型。stata 中的回歸命令和結果見3.2.2節所述。

  • 現在,我們使用 marginscontplot 命令來計算當其他變量取均值時, hours 取不同值時, wage 的預測邊際值,附加95%的置信區間並呈現圖形。此時,無需提前使用 sum 命令查看 hours 變量的取值范圍,也無需在計算完預測邊際值之后使用 marginsplot 命令繪圖,直接在 stata 中使用 marginscontplot 命令即可完成計算和繪圖,命令和結果如下所示:

.    sysuse "nlsw88.dta", clear
(NLSW, 1988 extract)

.    reg wage i.industry c.hours##i.union

      Source | SS df MS Number of obs = 1,864
-------------+----------------------------------   F(14, 1849)     =     19.48
       Model | 4165.55214 14 297.539439 Prob > F = 0.0000
    Residual | 28235.7439 1,849 15.2708188 R-squared = 0.1286
-------------+----------------------------------   Adj R-squared   =    0.1220
       Total | 32401.296 1,863 17.392 Root MSE = 3.9078

------------------------------------------------------------------------------------------
                    wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------------+----------------------------------------------------------------
                industry |
                 Mining  | 1.965311 2.98501 0.66 0.510 -3.889033 7.819655
           Construction  | 2.944549 1.427687 2.06 0.039 .1445001 5.744598
          Manufacturing  | .8876583 1.149997 0.77 0.440 -1.367771 3.143088
 Transport/Comm/Utility  | 4.66455 1.206553 3.87 0.000 2.298201 7.030899
 Wholesale/Retail Trade  | -.2176107 1.15411 -0.19 0.850 -2.481107 2.045886
Finance/Ins/Real Estate  | 2.714369 1.171926 2.32 0.021 .4159324 5.012805
    Business/Repair Svc  | 1.261646 1.238032 1.02 0.308 -1.166442 3.689734
      Personal Services  | -1.602596 1.231961 -1.30 0.193 -4.018775 .8135844
  Entertainment/Rec Svc  | 1.454197 1.537525 0.95 0.344 -1.561271 4.469666
  Professional Services  | 1.454095 1.137893 1.28 0.201 -.7775962 3.685785
  Public Administration  | 2.658987 1.171222 2.27 0.023 .3619308 4.956043
                         |
                   hours | .0565515 .0104406 5.42 0.000 .0360748 .0770282
                         |
                   union |
                  union  | 3.761049 .8990725 4.18 0.000 1.997745 5.524353
                         |
           union#c.hours |
                  union  | -.0747591 .0226682 -3.30 0.001 -.1192171 -.0303012
                         |
                   _cons | 3.864411 1.193668 3.24 0.001 1.523332 6.20549
------------------------------------------------------------------------------------------

.    marginscontplot hours, ci 

圖10 當其他變量取均值,hours取不同值時,wage的預測邊際值.png

  • 我們還可以將 hours 變量的取值范圍均勻的分為若干個區間,計算在各區間節點上的 wage 的預測邊際值。例如,計算 hours 取4個不同數值時 wage 的預測邊際值,並且這4個數值均勻分布於 hours 變量的取值范圍中,stata 中的命令和結果如下所示:
.    marginscontplot hours, ci var1(4)

圖11 當其他變量取均值,hours取值為4個數值時(均勻分布於hours變量的取值范圍)wage的預測邊際值.png

  • 此外,我們還可以指定計算 hours 變量的取值范圍與間隔。例如,指定 hours 變量的取值范圍為10至40,間隔為5,stata 中的命令和結果如下所示:
.    marginscontplot hours, ci at1(10(5)40)

圖12 當其他變量取均值,hours取值為10至50之間時,wage的預測邊際值.png

4.4.2 兩個變量

在3.2.2節案例中,由於加入了 unionhours 的交乘項並且該系數在統計上顯著,由此,我們還想分別計算當 hours 取值不同時,工會成員與非工會成員的 wage 的預測邊際值。因此,需要在 marginscontplot 命令中加入兩個變量,stata 中的命令和結果如下所示:

.    marginscontplot hours union, ci at1(1(5)80)
*-或寫為
.    marginscontplot hours union, ci at1(1(5)80) at2(0 1)

圖13 當其他變量取均值,hours取不同值時,工會與非工會成員的wage的預測邊際值.png

4.4.3 對變量的數值轉換

  • 假設婦女工資 wage 與每周工作小時數 hours 變量取對數之后(記為 lnhours)存在線性關系。現需要計算 lnhours 變量對 wage 的影響作用並在圖形的坐標軸上顯示 hours 變量的原始取值。於是,我們以 wage 作為被解釋變量,以 lnhours 作為解釋變量,並以 industry(行業類別)collgrad (是否大學畢業)union (是否工會成員) 作為控制變量,建立線性回歸模型。stata 中的命令和結果如下所示:
.    gen lnhours = ln(hours)
(4 missing values generated)

.    reg wage i.industry collgrad union lnhours

      Source | SS df MS Number of obs = 1,864
-------------+----------------------------------   F(14, 1849)     =     43.37
       Model | 8010.08706 14 572.149076 Prob > F = 0.0000
    Residual | 24391.209 1,849 13.1915679 R-squared = 0.2472
-------------+----------------------------------   Adj R-squared   =    0.2415
       Total | 32401.296 1,863 17.392 Root MSE = 3.632

------------------------------------------------------------------------------------------
                    wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------------------+----------------------------------------------------------------
                industry |
                 Mining  | 2.610535 2.774693 0.94 0.347 -2.831325 8.052395
           Construction  | 2.840079 1.326651 2.14 0.032 .2381882 5.441971
          Manufacturing  | 1.231468 1.069077 1.15 0.250 -.865257 3.328193
 Transport/Comm/Utility  | 4.943764 1.121633 4.41 0.000 2.743963 7.143564
 Wholesale/Retail Trade  | -.1333967 1.07259 -0.12 0.901 -2.237011 1.970218
Finance/Ins/Real Estate  | 2.806101 1.089317 2.58 0.010 .6696813 4.942521
    Business/Repair Svc  | .9528829 1.150232 0.83 0.408 -1.303006 3.208772
      Personal Services  | -1.255364 1.144976 -1.10 0.273 -3.500946 .9902172
  Entertainment/Rec Svc  | 1.157725 1.428893 0.81 0.418 -1.644688 3.960138
  Professional Services  | .4944097 1.058875 0.47 0.641 -1.582307 2.571126
  Public Administration  | 2.404413 1.088813 2.21 0.027 .2689805 4.539845
                         |
                collgrad | 3.701502 .2091694 17.70 0.000 3.291269 4.111735
                   union | .6846933 .2044257 3.35 0.001 .2837639 1.085623
                 lnhours | .4712976 .2119332 2.22 0.026 .0556441 .8869511
                   _cons | 3.742689 1.285111 2.91 0.004 1.222268 6.26311
------------------------------------------------------------------------------------------
  • 現在使用 marginscontplot 命令計算當其他變量取均值、對均勻分布於 hours 變量的取值范圍中的20個值取對數時,wage 的預測邊際值。此時,需要在命令中加入原始變量 hours 與變量取對數后 lnhours 的對應關系,stata 中的命令和結果如下所示:
. keep if e(sample)
(382 observations deleted)

. sum hours

 Variable | Obs Mean Std. Dev. Min Max -------------+---------------------------------------------------------
 hours | 1,864 37.62071 9.959845 1 80

. range h r(min) r(max) 20
(1,844 missing values generated)

. gen lnh = ln(h)
(1,844 missing values generated)

. marginscontplot hours(lnhours), ci var1(h(lnh))

圖14 對hours變量取對數后wage的預測邊際值.png

5. 相關閱讀資料

關於我們

  • Stata 連享會(公眾號:StataChina)】由中山大學連玉君老師團隊創辦,旨在定期與大家分享 Stata 應用的各種經驗和技巧。
  • 公眾號推文同步發布於 【簡書-Stata連享會】【知乎-連玉君Stata專欄】。可以在簡書知乎中搜索關鍵詞StataStata連享會后關注我們。
  • 點擊推文底部【閱讀原文】可以查看推文中的鏈接並下載相關資料。
  • Stata 現場培訓報名中

聯系我們

  • 歡迎賜稿: 歡迎將您的文章或筆記投稿至Stata連享會(公眾號: StataChina),我們會保留您的署名;錄用稿件達五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
  • 意見和資料: 歡迎您的寶貴意見,您也可以來信索取推文中提及的程序和數據。
  • 招募英才: 歡迎加入我們的團隊,一起學習 Stata。合作編輯或撰寫稿件五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
  • 聯系郵件: StataChina@163.com

往期精彩推文

Stata連享會推文列表

Stata 現場培訓報名中

連玉君Stata現場班報名中


歡迎加入Stata連享會(公眾號: StataChina)


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com