您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 如何用stata做事件研究
用stata做事件研究时间研究通常被用来检验市场对附带相应利益事件的反应。事件研究通常包括以下几步:(1)净化数据(提出无关和无法研究以及其他原因)和计算事件窗口(2)估计正常表现(3)计算异常表现和累积超额回报(4)显著性检验(5)全部事件交叉检验(相当于稳健性检验)这个文章旨在帮助你用stata来开展事件研究。假设你已经拥有一个时间变量(date)和公司标识(company_id),如果你需要准备你的数据或者想要利用我们的数据尝试一下相应的命令,去datapreparation页面。我们同时也假设你对stata有一个基本的了解。如果你需要和stata命令相关的帮助,你可以从here找到更多。如果你从一个可执行文件中进入命令,你的任务就会简单的多,因为可执行文件中包含了一系列的stata命令。净化数据并计算事件窗口和估计窗口你很可能获取了超出你需要的每个公司的观察值,也有可能有一些公司的观察值不充分。在你开展下一步前,你必须确保你的分析是建立在正确的观察值之上。为了实现这一点,你需要设立一个变量dif,它将会计算从观察(相当于估计期)到事件期的天数,这即有可能是节假日,也有可能是交易日。就交易日天数:sortcompany_iddatebycompany_id:gendatenum=_nbycompany_id:gentarget=datenumifdate==event_dateegentd=min(target),by(company_id)droptargetgendif=datenum-td就节假日:gendif=date-event_date由上可以看出,计算交易日天数比计算节假日天数稍微复杂一点。对于交易日,我们首先需要设立一个变量,这个变量是用来计算每一个公司标识范围内的天数,然后我们再确定哪些观测值发生在事件期内。我们设立一个和事件天数有关的变量。这个事件天数建立在company_id范围内的所有观察值的基础上。最后,我们选取二者之间的差异来设立一个变量dif,以计算每一个个体观测值和事件期之间的天数。下一步,我们需要确定我们事件期前后的最小观察期天数以及事件窗口之前的估计窗口的最小观察期天数。比如我们想要一个事件期前后两天的窗口(总共5天的事件期)以及一个30天的估计窗口(你可以改变这些数字以适应你的分析)。bycompany_id:genevent_window=1ifdif=-2&dif=2egencount_event_obs=count(event_window),by(company_id)bycompany_id:genestimation_window=1ifdif-30&dif=-60egencount_est_obs=count(estimation_window),by(company_id)replaceevent_window=0ifevent_window==.replaceestimation_window=0ifestimation_window==.确定事件窗口和估计窗口的程序是相同的。首先,我们设立一个变量,当观测值在特定的日期内等于1;其次,我们设立另一个变量来计算,在每一个公司标识范围内,有多少观测值的变量值等于1;最后,我们用0代替所有的缺省值,设立一个哑变量。此时,你就可以确定哪个公司没有充分的观测值。tabcompany_idifcount_event_obs5tabcompany_idifcount_est_obs30Tab命令将会产生一个公司标识符的列表,这个列表中包含的就是没有足够的事件窗口及估计窗口观察值窗口的公司,同时还会报告这些公司的总的观测值的数量,为了排除这些公司使用如下命令:dropifcount_event_obs5dropifcount_est_obs30你必须确保在删除任何观察值之前,样本已经用另一个名字保存。此时,你也可以剔除一些你不需要的变量。估计正常表现现在我们到了真正分析的地方。首先,我们需要一种途径和方法来估计正常表现。为了实现这一点,我们将会利用估计窗口中的数据来对每个公司进行单变量回归,并保存(常数项)和(解释变量的系数),随后我们会使用这个保存的回归系数来预测事件窗口的正常表现。就回报这个回归中的被解释变量来讲,它仅仅是针对既定股票回报的CRSR变量,而我们用来预测ret的解释变量,使一个对于任何股票的指数加权回报。对你的样本集使用等价变量。setmoreoff/*thiscommandjustkeepsstatafrompausingaftereachscreenofoutput*/genpredicted_return=.egenid=group(company_id)/*formultipleeventdates,use:egenid=group(group_id)*/forvaluesi=1(1)N{/*note:replaceNwiththehighestvalueofid*/lidcompany_idifid==`i'&dif==0regretmarket_returnifid==`i'&estimation_window==1predictpifid==`i'replacepredicted_return=pifid==`i'&event_window==1dropp}这儿,我们设立了一个变量id,以计算公司数量(从1到实际数)。N代表的是包含完整数据的公司——事件联合体数目(即事件有关的有完整数据的公司的数目)。这个过程通过在公司间重复,并对每一个公司在估计窗口开展回归,然后用回归结果来预测事件窗口的正常回报。异常表现和累积超额回报现在我们可以用我们的数据计算异常表现和累积超额回报。日异常回报等于事件窗口中的每天的实际回报减预期回报。整个事件窗口的超额回报的总额就是累积超额回报。sortiddategenabnormal_return=ret-predicted_returnifevent_window==1byid:egencumulative_abnormal_return=sum(abnormal_return)此处我们仅仅计算了事件窗口中每个样本观测值的超额回报,随后我们将CAR等于所有公司的超额回报之和。显著性检验我们将计算一个检验统计量(t值)来确定每支股票平均的超额回报是否显著不等于0。AR即超额回报,AR_SD是超额回报的标准差。如果t统计量的绝对值大于1.96,那么平均的超额回报在5%的水平显著不等于0.1.96这个值来自于均值为0,标准差为1的标准正态分布,其中正态分布95%的部分分布在±1.96之间。sortiddatebyid:egenar_sd=sd(abnormal_return)gentest=(1/sqrt(numberofdaysineventwindow))*(cumulative_abnormal_return/ar_sd)listcompany_idcumulative_abnormal_returntestifdif==0Note:thistestusesthesamplestandarddeviation.Alessconservativealternativeistousethepopulationstandarddeviation.ToderivethisfromthesamplestandarddeviationproducedbyStata,multiplyar_sdbythesquarerootofn-1/n;inourexample,bythesquarerootof4/5.这会将你的事件研究的结果生成一项Excel文件。outsheetcompany_idevent_datecumulative_abnormal_returntestusingstats.csvifdif==0,commaname全部事件交叉检验除了观察每个公司的平均超额回报,你可能还想计算将所有公司视为一个整体的累积超额回报,代码如下:regcumulative_abnormal_returnifdif==0,robust从回归中得到的系数的P值可以告诉你,所有公司的累积超额回报的显著性。此时,P检验比T检验更可靠,因为它更允许你使用一个强的标准误差。进一步的阅读发展中国家资本市场对环境表现的反应,大部分事件研究方法论来自于世界银行的workingpaper
本文标题:如何用stata做事件研究
链接地址:https://www.777doc.com/doc-2845094 .html