Stata:配对对象的均值 (俄罗斯方块移动)

作者:连玉君 (知乎 | | 码云)

  • Stata连享会 精彩推文1 || 精彩推文2
Stata:配对对象的均值 (俄罗斯方块移动)_第1张图片

1. 问题背景

在 伍德里奇先生的问题:PSM 分析中的配对——小蝌蚪找妈妈 一文中,我们介绍了几种配对方法。今天,又遇到了一个有点相似但又不完全相同的问题。最终看来,处理方法却迥异。

我们手头有如下数据:

     +----------------+
     | year   g0    y |
     |----------------|
  1. | 2016    0   10 |
     |----------------|
  2. | 2016    1   20 |
  3. | 2016    1   30 |
  4. | 2016    1   40 |
     |----------------|
  5. | 2017    0   50 |
  6. | 2017    0   60 |
  7. | 2017    0   70 |
     |----------------|
  8. | 2017    1   80 |
  9. | 2017    1   90 |
     +----------------+

想得到如下结果(即生成 ym 和 ym_peer 两个新变量):

     +-------------------------------+
     | year   g0    y   ym   ym_peer |
     |-------------------------------|
  1. | 2016    0   10   10        30 |
     |-------------------------------|
  2. | 2016    1   20   30        10 |
  3. | 2016    1   30   30        10 |
  4. | 2016    1   40   30        10 |
     |-------------------------------|
  5. | 2017    0   50   60        85 |
  6. | 2017    0   60   60        85 |
  7. | 2017    0   70   60        85 |
     |-------------------------------|
  8. | 2017    1   80   85        60 |
  9. | 2017    1   90   85        60 |
     +-------------------------------+

我们需要完成的工作图示如下:


Stata:配对对象的均值 (俄罗斯方块移动)_第2张图片
image.png

2. 处理思路

  • ym 变量:只需借助 egen 命令的 mean() 函数即可实现;
  • ym_peer 稍微复杂一些,可以借助虚拟变量 (哑变量) 的 开关 功能,以及 egen 命令的 max() 函数实现数据的扩充。

3. 代码及思路展示

clear
input ///
    year   g0    y  
    2016    0   10  
    2016    1   20  
    2016    1   30  
    2016    1   40  
    2017    0   50  
    2017    0   60  
    2017    0   70  
    2017    1   80  
    2017    1   90  
end

*- ym
bysort year g0: egen ym = mean(y)  
*- ym_peer (一部分)
gen g1 = 1-g0
gen ymxg0 = ym*g0
bysort year: egen ymxg0full = max(ymxg0)
gen ymp0 = ymxg0full*(1-g0)
Stata:配对对象的均值 (俄罗斯方块移动)_第3张图片
Stata处理思路图示

4. 完整代码

clear
input ///
    year   g0    y  
    2016    0   10  
    2016    1   20  
    2016    1   30  
    2016    1   40  
    2017    0   50  
    2017    0   60  
    2017    0   70  
    2017    1   80  
    2017    1   90  
end

list year g0 y, sepby(year g0)

bysort year g0: egen ym = mean(y)

gen g1 = 1-g0
gen ymxg0 = ym*g0
bysort year: egen ymxg0full = max(ymxg0)
gen ymp0 = ymxg0full*(1-g0)

gen ymxg1 = ym*g1
bysort year: egen ymxg1full = max(ymxg1)
gen ymp1 = ymxg1full*(1-g1)

gen ym_peer = ymp0 + ymp1

keep y year g0 ym ym_peer
list, sepby(year g0) noobs

结果如下:

. list, sepby(year g0) noobs

  +-------------------------------+
  | year   g0    y   ym   ym_peer |
  |-------------------------------|
  | 2016    0   10   10        30 |
  |-------------------------------|
  | 2016    1   20   30        10 |
  | 2016    1   30   30        10 |
  | 2016    1   40   30        10 |
  |-------------------------------|
  | 2017    0   50   60        85 |
  | 2017    0   60   60        85 |
  | 2017    0   70   60        85 |
  |-------------------------------|
  | 2017    1   80   85        60 |
  | 2017    1   90   85        60 |
  +-------------------------------+

关于我们

  • Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。
  • 公众号推文同步发布于 【-Stata连享会】 和 【知乎-连玉君Stata专栏】。可以在知乎中搜索关键词StataStata连享会后关注我们。
  • 推文中的相关数据和程序,以及 Markdown 格式原文 可以在 【Stata连享会-码云】 中获取。【Stata连享会-码云】 中还放置了诸多 Stata 资源和程序。如 Stata命令导航 || stata-fundamentals || Propensity-score-matching-in-stata || Stata-Training 等。

联系我们

  • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
  • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 联系邮件: [email protected]

Stata连享会 精彩推文1 || 精彩推文2


Stata:配对对象的均值 (俄罗斯方块移动)_第4张图片
欢迎加入Stata连享会(公众号: StataChina)

你可能感兴趣的:(Stata:配对对象的均值 (俄罗斯方块移动))