Stata:展示OLS和GLM的交乘项(一)-icalc

发布时间:2023-01-17 阅读 335

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:陈美琪 (宁波诺丁汉大学)
邮箱438508741@qq.com


目录


1. 简介

本文主要介绍 Stata 中用以帮助解释广义线性模型交互作用的 icalc 命令包。该命令由 Temple University 名誉教授 Robert Kaufman 编写。它是一个由五个命令组成的工具包,用于帮助解释和报告广义线性模型中的交互效应。

2. 命令介绍

命令安装:

copy "https://file.lianxh.cn/data/i/icalc.zip" "icalc.zip", replace
unzipfile icalc, replace 
net install icalc.pkg, from("D:/Stata17/icalc") replace // 更换地址

// 或者: https://econpapers.repec.org/software/bocbocode/s459052.htm

主要命令包括:intspecgfisigregeffdispoutdisp。具体来看,intspec 是一个设置命令,在使用其他命令之前,必须要定义好交互的内容。其语法为:

intspec focal(varname) 
    main((varlist1, suboptions)(varlist2, suboptions) … ) 
    int2vars(varlist) 
    [ int3vars(varlist) 
      dvname(string) 
      eqname(string) 
      ndigits(#)
      nrange(#) 
      abbrevn(#) 
      sumwgt(string) 
    ]

其中,

  • focal():用于设置焦点变量的名称;
  • main():设定焦点变量和调节变量;
  • int2vars(varlist):列出了二维相互作用条件,必须按 focal-by-moderator#1 focal-by-moderator#2 的顺序排列;
  • int3vars(varlist):如果有的话,列出三维交互项,必须按照 focal-by-moderator#1-by-moderator#2 的顺序排列;
  • dvname(string):因变量的显示名称,默认是因变量的名称;
  • eqname(string):用于多方程模型,字符串指定分析哪个方程的系数;
  • ndigits(#):如果没有指定 range(),默认显示值标签中使用的数字的个数,默认为 ndig(2)
  • nrange(#):范围 (minmax) 中的 # 个增量,默认为 5 个增量;
  • abbrevn(#):指定用于缩写名字的字符长度,必须是一个整数,默认为 abbrevn(12)
  • sumwgt(string)sumwgt(no) 指定不使用估计命令的权重来计算汇总统计。

gfi 当焦点变量随调节变量变化时,gfi 生成其效果的代数表达式,对效果进行符号变化分析,并在路径样式图中进行可选的可视化。运行前必须运行 intspecgfi。其基本语法为:

gfi, [ factorchg ndigits(#) 
       path(type , title(string) 
       name(string) 
       boxwidth(#) 
       ygap(#) 
       xgap(#) 
       ndigits(#) ) 
     ]

其中,

  • factorchg:如果指定,焦点变量的代数表达式也显示为因子变化。
  • ndigits(#):表示代数表达式和符号变化表中效果和系数小数后的位数,默认值 = 4。
  • title(string):路径图的标题;
  • name(string):保存为名为 string 的内存图;
  • ndigits(#):报告图表中系数值的位数;
  • boxwidth(#)ygap(#)xgap(#):用来美化图表,设定箱子的宽度、垂直距离与水平距离。

effdisp 命令可以生成折线图、落线图、误差条图或等高线图,显示焦点变量对建模结果的影响,因为它随调节因子的值而变化。线形图和等高线图可以选择性地显示焦点变量的调节效应是显著的还是不显著的。同样地,必须在运行 effdisp 之前运行 intspec。其基本语法为:

effdisp , [ plot(type(plottype) name(graphname) keep save(filepath) freq(base)) 
            effect(type(suboptions)) 
            cilev(#, adjtype) 
            ndigits(#) 
            pltopts(string) 
            sigmark 
            ccuts(numlist) 
            heatmap 
          ]

其中,

  • plot(type(plottype) suboptions):是制定绘图类型,可选的图形有 cbound (置信区间图),errbar (误差条图),line (折线图),drop (下降线图),contour (等高线图);
  • name(graphname):将图保存为名称为 graphname 的图;
  • save(filepath):将绘图数据和频率分布保存到 Excel 文件中,文件名和位置由 filepath 给出;
  • freq(base):在图表中添加第一调节变量或第一调节变量与第二调节变量的相对频率分布;
  • effect(type(suboptions)):显著性区域表中报告的重点变量 delta 单位变化的系数值的类型;
  • cilev(#, adjtype):# 是置信区间水平 (0.95 代表 95% 的 CI);
  • ndigits(#):y 轴标签的位数,默认=4;
  • sigmark(#) 表示直线图、下降线图或等高线图上的显著和非显著效应。
  • heatmap:热力图的选项。

3. Stata 实操

首先,我们选用作者提供的 SIPP_Wealth.dta,进行一个调节效应的 OLS 回归。

. use ./icalc/SIPP_Wealth.dta, clear
. reg netw10k metro i.edcat i.hoh##c.kids   ///
>     c.age##c.age retired nilf hhld_income 

      Source |       SS           df       MS      Number of obs   =    14,237
-------------+----------------------------------   F(15, 14221)    =    320.85
       Model |  1460168.38        15  97344.5585   Prob > F        =    0.0000
    Residual |  4314653.45    14,221  303.400144   R-squared       =    0.2529
-------------+----------------------------------   Adj R-squared   =    0.2521
       Total |  5774821.82    14,236  405.649187   Root MSE        =    17.418
-------------------------------------------------------------------------------
      netw10k | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
--------------+----------------------------------------------------------------
        metro |      0.491      0.332     1.48   0.139       -0.160       1.142
              |
        edcat |
          HS  |      4.579      0.497     9.21   0.000        3.605       5.553
    SomeColl  |      6.223      0.544    11.44   0.000        5.156       7.289
    CollGrad  |      8.728      0.606    14.41   0.000        7.541       9.916
    PostGrad  |     10.066      0.619    16.26   0.000        8.852      11.279
              |
          hoh |
  Single_man  |     -1.699      0.499    -3.41   0.001       -2.677      -0.721
Single_woman  |     -3.770      0.438    -8.61   0.000       -4.628      -2.911
              |
         kids |     -0.968      0.173    -5.59   0.000       -1.307      -0.628
              |
   hoh#c.kids |
  Single_man  |      0.062      0.706     0.09   0.930       -1.323       1.446
Single_woman  |      1.677      0.390     4.30   0.000        0.912       2.443
              |
          age |      0.386      0.062     6.25   0.000        0.265       0.507
              |
  c.age#c.age |     -0.000      0.001    -0.15   0.884       -0.001       0.001
              |
      retired |      1.281      0.582     2.20   0.028        0.141       2.422
         nilf |      5.764      0.755     7.63   0.000        4.283       7.244
  hhld_income |      2.804      0.072    38.96   0.000        2.663       2.945
        _cons |    -21.119      1.546   -13.66   0.000      -24.149     -18.089
-------------------------------------------------------------------------------

可以看到 hohkid 的交互项中,single_woman 组显著为正,系数为 1.677。然后我们看一下如何设置家庭领导变量的交互效应以及查看它的具体的交互作用效果图。


. intspec focal(i.hoh) main((c.kids, name(Children) range(0/10))  ///
>     (i.hoh, name(Headship_Type) range(0/2))) int2(i.hoh#c.kids) ///
>     ndig(0) abbrevn(14)

Interaction Effects on netw10k Specified as
     Main effect terms: 1.hoh 2.hoh  kids 
     Two-way interaction terms: i.hoh#c.kids 
  These will be treated as: Focal variable = 1.hoh 2.hoh ("Headship_Type")
    moderated by interaction(s) with
        kids ("Children")

. gfi, ndig(3)

Effect of Single_man = 
   -1.699 + 0.062*kids
Effect of Single_woman = 
   -3.770 + 1.677*kids
 Sign Change Analysis of Effect of Headship_Type
 on g(netw10k), Moderated by Children (MV)
 ------------------------------------------------------------
              |  Headship_Type
 When         |  ------------------------------------------
 Children=    |    Single_man          Single_woman
 -------------+----------------------------------------------
          0   | Neg b =     -1.699    Neg b =     -3.770
          1   | Neg b =     -1.637    Neg b =     -2.092
          2   | Neg b =     -1.575    Neg b =     -0.415
          3   | Neg b =     -1.513    Pos b =      1.263
          4   | Neg b =     -1.452    Pos b =      2.940
          5   | Neg b =     -1.390    Pos b =      4.617
          6   | Neg b =     -1.328    Pos b =      6.295
          7   | Neg b =     -1.266    Pos b =      7.972
          8   | Neg b =     -1.204    Pos b =      9.650
          9   | Neg b =     -1.143    Pos b =     11.327
         10   | Neg b =     -1.081    Pos b =     13.004
 -------------+----------------------------------------------
 Sign Changes |        Never           when MV= 2.247275
 -------------+----------------------------------------------
 % Positive   |          0.0                   8.0
 ------------------------------------------------------------

. effdisp, plot(type(line) freq(tot)) ndig(0)

Effect type Specified
   Effect type = b   (Δ = 1) 
Plot Options Specified
   type =  line
   freq =  tot
   sigmark =  No
95% Confidence intervals calculated with critical value F =    3.842 .

在以上代码中,intspec 表示设定 hoh (家庭领导变量) 为焦点变量,设定 kids 为调节项,并命名为 Children,增量范围从 0 点到 10。

设定家庭领导变量为调节项,并命名为“领导类型”,值范围从 0-2,关注家庭领导变量和孩子数量的二维交互效果。其中格式上,ndig 表示默认显示中值标签的整数个数,abbrevn 表示缩写名字的字符长度。

gfi 的执行结果显示了家庭领导类型对家庭财富净值的影响效果受到孩子数量的影响。effdisp 显示了家庭领导类型对结果的影响如何受到孩子数量的调节。

然后我们看一下如何设置孩子数量与家庭领导类型的交互效应以及查看它的交互作用效果图,以区别于上文提到的以家庭领导变量为焦点。

. intspec focal(c.kids) main((c.kids, name(Children) range(0/2 4(2)10))  ///
>     (i.hoh, name(Headship_Type) range(0/2))) ///
>     int2(i.hoh#c.kids) ndig(0) abbrevn(14)
. gfi, ndig(3)

GFI Information from Interaction Specification of
Effect of Children on g(netw10k) from Linear Regression
----------------------------------------------------------------------

Effect of kids = 
   -0.968 + 0.062*Single_man + 1.677*Single_woman
 Sign Change Analysis of Effect of Children
 on g(netw10k), Moderated by Headship_Type (MV)
 --------------------------------------
              |       Children
 When         |  --------------------
 Headship_Type=|             
 -------------+------------------------
     Couple   | Neg b =     -0.968
 Single_man   | Neg b =     -0.906
 Single_w~n   | Pos b =      0.710
 -------------+------------------------
 Sign Changes |       Sometimes   
 -------------+------------------------
 % Positive   |         26.9
 --------------------------------------

. effdisp, plot(type(drop) freq(tot)) ndig(1)

我们可以看到小孩的数量对于家庭财富净值的影响受到家庭领导类型的调节,当家庭为单亲母亲领导时小孩的数量对于家庭财富净值的影响更大。

4. 结语

如上文的例子,icalc 工具包非常清晰地显示了 OLS 中交乘项的效果,也可用于 GLM。下一期将介绍 icalc 工具包中另外两个 sigregoutdisp 命令。

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 调节 交乘, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh