全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 统计软件培训班VIP答疑区
1945 2
2012-07-10

现在要确定一个研究样本的配对公司,
具体条件有如下四个:
(1)同年度year。
(2)同行业ind。
(3)asset最接近,即对照组与试验组asset的差的绝对值最小。
(4)每个对照组观测值只能配对一次,不同年份之间也不能重复。


请问如何通过stata程序实现,非常感谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-7-11 21:30:53
我是连老师,如下是“Stata学术论文专题视频”中 Chang and Wong (2009, JCF) 文中的代码,你可以看看原文的分析过程。等周一视频发布了,你可以对照视频理解这些代码的含义。时间有限,只能解释到这个地步了,见谅。

Chang, E. C., S. M. L. Wong, 2009, Governance with multiple objectives: Evidence from top executive turnover in China, Journal of Corporate Finance, 15 (2): 230-244.

*-------------------
*-9.3 寻找配对公司

  *-规则: 0.8(T)<=ROA(C)<=1.2(T)  C:配对组; T:CEO变更组
  *-寻找范围:同年度、同行业
        dropvars yesT
        gen yesT = (t!=.)  // 标示变更组(=1)和潜在配对组(=0)
       
  *-9.3.1 配对组公司至少要有 4 年[t=0,1,2,3]以上的资料, 否则删除

    dropvars T_obs
    bysort id: egen T_obs = count(id)
        drop if (T_obs<4 & yesT==0)
  
  *-9.3.2 开始配对       
  
    dropvars IND  //数字类型的行业代码
    encode industry, gen(IND) label(IND_lab)
        tab IND
        label list IND_lab
  
        local r "roa"      // [填入] 业绩指标
        dropvars nn Control ratio_* n_match match_id
        gen Control = .    //最关键的变量, 随后填入 1(表示配对对象), 0(表示变更公司)
        gen ratio_roa = .  //业绩匹配规则变量
        gen ratio_size = . //公司规模匹配规则变量  
        gen n_match = .    //仅考虑 roa[-20%,+20%] 规则时,符合条件的公司数目
        gen match_id =.    //匹配公司的代码       
        gsort -TO_force
        gen nn = _n if TO_force==1
        browse id year TO_force nn roa
        qui sum nn
        local N=r(N)      //待匹配的公司数目
        forvalues i=1/`N'{
          local roa_t0 = `r'[`i']   //变更公司的业绩
          local IND_t0 = IND[`i']   //变更公司所处的行业
          local size_t0 = size[`i'] //变更公司的公司规模
          local yr_t0 = year[`i']   //变更年份
          local id_t0 = id[`i']     //变更公司的代码
          replace ratio_roa = `r'/`roa_t0'  ///
                if (year==`yr_t0' & IND==`IND_t0' & yesT==0)
          dis in red "count"
          count if (ratio_roa>0.8&ratio_roa<1.2) & ///
                   (year==`yr_t0') & (IND==`IND_t0') //配对公司个数
          replace n_match = r(N) if nn==`i'
      * set trace on            //解析程序运行过程-begin-
          if r(N)>1{
             replace ratio_size = abs(size/`size_t0'-1) ///
                    if (ratio_roa>0.8&ratio_roa<1.2) & (year==`yr_t0') &  ///
                           (yesT==0) & (IND==`IND_t0')
                 sum ratio_size  ///
                    if (ratio_roa>0.8&ratio_roa<1.2) & (year==`yr_t0') &  ///
                           (yesT==0) & (IND==`IND_t0') //找到最小值
                 replace Control=1 if ratio_size==r(min) & (year==`yr_t0') & (Control!=1)
                                                    *-(Control!=1) 已经设为配对组的公司不会被覆盖掉
                 replace match_id=`id_t0'    ///
                    if ratio_size==r(min) & (year==`yr_t0')
          }
          else{
             replace Control=1  ///
                if (ratio_roa>0.8&ratio_roa<1.2) & (year==`yr_t0') &  ///
                           (IND==`IND_t0') & (Control!=1)
                 replace match_id=`id_t0'  ///
                    if (ratio_roa>0.8&ratio_roa<1.2) & (year==`yr_t0') &  ///
                           (IND==`IND_t0')
          }
      * set trace off           //解析程序运行过程-over-
        }
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-16 10:14:41
好的,谢谢连老师!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群