| 所在主题: | |
| 文件名: 平行趋势检验.dta | |
| 资料下载链接地址: https://bbs.pinggu.org/a-3248616.html | |
| 附件大小: | |
|
<!-- markdown css tag --><div class="pinggu_markdown">
<div class="pinggu_markdown__html"><h1 id="stata绘图(二)--多期did的平行趋势检验">Stata绘图(二) | 多期DID的平行趋势检验</h1> <blockquote> <p>作者:石器时代的大菠萝</p> </blockquote> <p>多期DID的平行趋势检验有两种等价的展示方法,一是回归法,二是绘图法,前者相对容易,而后者的操作过程稍复杂。不少人借鉴了Beck et al.(2010)的做法,但该文实际用的模型是渐进DID,即最终所有个体均实施了政策,因此相关命令需要经过一定修改才能用于一般的多期DID。本文的前半部分将会简单介绍多期DID,后半部分将会参考Beck et al.(2010)对图片的设定提供一个绘图过程。</p> <h2 id="多期did简介">多期DID简介</h2> <p>两期DID:Yit=常数+Dt+Gi+ Dt* Gi+ eit<br> ——Stata命令:reg yDG D_G 其他控制变量<br> 注:D_G是D与G的交互项</p> <p>多期DID:Yit=常数+Xit+时间虚拟变量+ ui+ eit<br> ——Stata命令:xtreg y x i.time 其他控制变量,fe</p> <p>其中,Yit是被解释变量;Dt表示政策后虚拟变量(取1表示政策之后,取0则表示政策之前);Gi表示处理变量(取1表示处理组,取0则表示控制组);Xit表示“个体i为处理组”且“时间t在政策之后”则取值为1,其他情况取值为0,有一种等价说法是——Xit表示个体i在t时间是否实施了政策。<br> 请注意:不要把Xit理解成是交互项,因为在多期DID中,控制组样本的Dt无法给出合适的定义。简单来说,控制组样本根本不存在“政策年度”一说,更谈不上样本是发生在政策“之前”还是“之后”了。</p> <p>Dt表示政策实施前后的虚拟变量,在两期DID中,因为只存在两期数据,因此其等价于时间虚拟变量。两期DID的Dt到了多期DID中,就转化为时间虚拟变量;Gi表示处理变量,由于多期DID中的个体效应ui包含了Gi的信息(Gi是ui的子集),因此同时在模型中放入Gi与ui将导致严重的多重共线性问题,应该只放入信息含量更多的ui。多期DID中的Xit来自两期DID中的Dt* Gi,尽管本文一再强调不应该把Xit理解成Dt与Gi的乘积,但是不少初学者依然会习惯性认为Xit等价于两个变量的乘积。</p> <p>综上,两期DID推导至多期DID的变化过程是:Dt→时间虚拟变量,Gi→ui,Dt*Gi→Xit。<strong>多期DID没有对政策时点是否一致性提出要求,因此多期DID还适用于政策时点不一致情形。</strong></p> <p>生成Xit的Stata过程对初学者来说可能稍有难度,有的人习惯在Excel中整理数据,有的人喜欢用merge命令把数据全部匹配到一起。由于不同人有不同的习惯,下面介绍如何在Excel和Stata中应该怎么制作出这个变量。</p> <p>第一种做法:使用Excel来制作Xit是非常直观的。</p> <p>第一步,你需要为数据添加一列policy_year,对于控制组样本应该设定为空白值,X就是最终要生成的变量。例子中一共有16个样本。<br> <img src="https://i.loli.net/2020/03/21/QiRDOyIqglrUu1c.png" alt="1.png" width="500" height="350"></p> <p>第二步,从16个样本中,筛选出policy_year为空白值的样本,然后对这些样本的X全部赋值为0。满足条件的一共有8个。<br> <img src="https://i.loli.net/2020/03/21/TPUAcwX2lsbMIa6.png" alt="3.png" width="500" height="200"></p> <p>第三步,从16个样本中,筛选出policy_year有取值的样本(一共8个样本),新变量dyear是用year减去policy_year。<br> <img src="https://i.loli.net/2020/03/22/KyfwI1iLn6YRMWU.png" alt="4.png" width="500" height="190"></p> <p>第四步,从16个样本中,筛选出dyear≥0的样本(一共5个样本),然后对这些样本的X赋值为1。<br> <img src="https://i.loli.net/2020/03/21/gvLpb6TEKDYxwc9.png" alt="5.png" width="500" height="300"><br> <img src="https://i.loli.net/2020/03/22/Qf6HvXYKIq5gLSx.png" alt="6.png" width="500" height="135"></p> <p>第五步,取消筛选功能后,你可以在X中发现仍有空白值(3个),用0填充他们,最后再把dyear删除,X就生成完毕了。<br> <img src="https://i.loli.net/2020/03/22/7anp3BRouOsbiJ9.png" alt="7.png" width="500" height="340">)<br> <img src="https://i.loli.net/2020/03/22/DIRcotMXnBy8PzT.png" alt="8.png"></p> <p>第二种做法:使用Stata来生成x,过程相对简单,如果不想一步步操作Excel可以考虑这种做法。</p> <p>第一步,数据导入Stata。<br> <img src="https://i.loli.net/2020/03/22/HwrLgEjGY8fMayu.png" alt="9.png"></p> <p>第二步,输入命令:</p> <pre class=" language-python"><code class="prismlanguage-python">gen x<span class="token operator">=</span><span class="token number">0</span> replace x<span class="token operator">=</span><span class="token number">1</span> <span class="token keyword">if</span> year<span class="token operator">>=</span> policy_year <span class="token operator">*</span>平行趋势检验还需要生成处理变量treat(处理组取<span class="token number">1</span>,控制组取<span class="token number">0</span>)。 <span class="token operator">*</span>这个变量在Excel中非常容易生成,因此方法一不详细介绍生成过程。 gen treat<span class="token operator">=</span><span class="token number">0</span> replace treat<span class="token operator">=</span><span class="token number">1</span> <span class="token keyword">if</span> policy_year<span class="token operator">!=</span><span class="token punctuation">.</span> </code></pre> <h2 id="多期did的stata命令">多期DID的Stata命令</h2> <pre class=" language-python"><code class="prismlanguage-python">xtreg y x i<span class="token punctuation">.</span>time 其他控制变量<span class="token punctuation">,</span>fe r </code></pre> <p>提示:推荐使用聚类稳健标准误进行回归,也就是加上“r”,但是这么做或许会降低系数的显著性。为什么会这样呢?这个问题与t检验的自由度有关,本帖不展开讨论这个技术细节。如果你在多期DID的回归使用了聚类稳健标准误,那么在平行趋势检验中,你应该继续使用聚类稳健标准误,从而做到前后一致。<mark>请不要低估考虑“是否使用聚类稳健标准误”的意义,它不但影响系数的显著性,还可能影响绘图策略。</mark></p> <h2 id="平行趋势检验的stata命令——回归法">平行趋势检验的Stata命令——回归法</h2> <pre class=" language-python"><code class="prismlanguage-python"><span class="token operator">*</span>变量说明:y表示被解释变量,<span class="token builtin">id</span>表示样本个体;year表示样本年份;policy_year表示政策发生年份; <span class="token operator">*</span>treat取<span class="token number">1</span>表示处理组,取<span class="token number">0</span>表示控制组。 <span class="token builtin">set</span> more off xtset <span class="token builtin">id</span> year gen distance <span class="token operator">=</span> year <span class="token operator">-</span> policy_year <span class="token operator">*</span>了解数据情况。 tab distance<span class="token punctuation">,</span> missing <span class="token operator">*</span>请确认distance变量是否存在以下两类问题: <span class="token operator">*</span><span class="token number">1</span><span class="token punctuation">.</span>样本稀疏的问题,即样本个数在某些年份非常少。<span class="token number">2.</span>distance的取值范围太宽,检验太多期的平行趋势可能是没有必要的。 <span class="token operator">*</span>你可以采用“缩尾处理策略”以应对上面两种问题: <span class="token operator">*</span>replace distance <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">4</span> <span class="token keyword">if</span> distance <span class="token operator"><</span> <span class="token operator">-</span><span class="token number">4</span> <span class="token operator">*</span>replace distance <span class="token operator">=</span> <span class="token number">5</span> <span class="token keyword">if</span> distance<span class="token operator">></span> <span class="token number">5</span> <span class="token operator">*</span>生成一系列的变量: <span class="token operator">*</span>d_j的数学含义是:若样本是”处理组“且为”政策实施前的第j期“则取值为<span class="token number">1</span>,其他情况取值为<span class="token number">0</span>。 <span class="token operator">*</span>dj的数学含义是:若样本是”处理组“且为”政策实施后的第j期“则取值为<span class="token number">1</span>,其他情况取值为<span class="token number">0</span>。 <span class="token operator">*</span>current的数学含义是:若样本是”处理组“且为”政策实施当期“则取值为<span class="token number">1</span>,其他情况取值为<span class="token number">0</span>。 <span class="token operator">*</span>例如,某个个体的政策实施于<span class="token number">2013</span>年,那么该个体在<span class="token number">2012</span>年的变量D_1取值为<span class="token number">1</span>,其余均为<span class="token number">0</span>。 </code></pre> <p>尽管上面给出的数学定义是十分清晰的,但为了照顾初学者,下面给出一个直观的数据描述。以d_1为例,若样本是”处理组“且为”政策实施前的第1期“(distance=-1)则取值为1(橘色区域所示),其余情况取值为0。<br> <img src="https://i.loli.net/2020/06/01/MDj9dAh67Cz2w8v.jpg" alt="11.jpg"></p> <pre class=" language-python"><code class="prismlanguage-python"><span class="token operator">*</span>第一步,生成变量d_j、dj、current。 <span class="token operator">*</span>(<span class="token number">1</span>)生成d_j,假设你在“tab distance<span class="token punctuation">,</span> missing”中发现,distance最小值是<span class="token operator">-</span><span class="token number">4</span>,那么生成过程如下: forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">4</span> <span class="token punctuation">{</span> gen d_`i'<span class="token operator">=</span> <span class="token number">0</span> replace d_`i<span class="token string">'= 1 if treat== 1 & distance== -`i'</span> <span class="token punctuation">}</span> <span class="token operator">*</span>(<span class="token number">2</span>)生成dj,假设你在“tab distance<span class="token punctuation">,</span> missing”中发现,distance最大值是<span class="token number">5</span>,那么生成过程如下: forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">5</span> <span class="token punctuation">{</span> gen d`i'<span class="token operator">=</span> <span class="token number">0</span> replace d`i<span class="token string">'= 1 if treat== 1 & distance== `i'</span> <span class="token punctuation">}</span> <span class="token operator">*</span>(<span class="token number">3</span>)生成current。 gen current<span class="token operator">=</span> <span class="token number">0</span> replace current <span class="token operator">=</span> <span class="token number">1</span> <span class="token keyword">if</span> treat<span class="token operator">==</span> <span class="token number">1</span> <span class="token operator">&</span> distance<span class="token operator">==</span> <span class="token number">0</span> <span class="token operator">*</span>回归法进行平行趋势检验: xtreg y d_4 d_3 d_2 d_1 d1 d2 d3 d4 d5 i<span class="token punctuation">.</span>year 控制变量<span class="token punctuation">,</span> fe r <span class="token operator">*</span>判别方法:若d_4 d_3 d_2 d_1均不显著,则表明平行趋势假设成立。 </code></pre> <p>你可能已经注意到了,current不被包含在回归模型中,尽管我们生成了它。原因是d_j、dj、current无法同时被放进模型,否则会产生严格多重共线性问题,Stata会自动在“d_4 d_3 d_2 d_1 current d1 d2 d3 d4 d5”中随机drop掉一个变量(哪个被drop掉与顺序有关)。为了进行平行趋势检验,我们应该在d_j与current中选择一个变量并手动去掉。如果你发现检验结果不理想,可以尝试调整drop对象。<mark>被drop掉的那个变量,我们称之为基期。</mark> 若d_j的回归系数是不显著的,说明d_j的系数与基期没有显著差异,从而支持了平行趋势假设。本文的例子是以current为基期,如果你希望改变基期的位置,我在49楼写了一个以d_1为基期的代码示例。</p> <p>尽管有些人还认为,可以在dj中选择一个变量去掉,但严格意义上这是不合适的。若所有d_j系数均不显著倒也无妨,同样可以说明平行趋势假定成立,但如果所有d_j的系数均显著为正(或负),那么我们无从判断d_j中任意两个回归系数是否有显著差异。另外,偶尔也会见到一些不规范的做法,比如在不采劝缩尾处理策略”情况下(前文对此策略已经用例子介绍了),只对current附近几期进行平行趋势检验,这种情况下,如果你得到了一些显著的d_j,你可能会误以为平行趋势检验没有通过。总之,基期的选择对平行趋势检验的结果是有影响的,请不要忽略这个问题。基于上述观点,tvdiff这个专门用来进行平行趋势检验的命令,由于不允许指定基期,因此价值可能有限。</p> <h2 id="平行趋势检验的stata命令——绘图法">平行趋势检验的Stata命令——绘图法</h2> <p>平行趋势检验的绘图法需要你先完成回归法的所有步骤,也就是在执行下面这条命令之后,才可以进行绘图法。下面这个回归的结果,已经可以用来判断检验是否通过了。若检验没有通过,绘图法也就没必要做了。</p> <pre class=" language-python"><code class="prismlanguage-python">xtreg y d_4 d_3 d_2 d_1 d1 d2 d3 d4 d5 i<span class="token punctuation">.</span>year 控制变量<span class="token punctuation">,</span> fe r </code></pre> <p>如果你认为以下内容有一定操作难度,那么你可以考虑放弃用绘图法来展示平行趋势检验的结果。正如前文所述,绘图法与回归法是等价的,绘图法对论文的意义只是“锦上添花”。</p> <p>方法1:采用coefplot绘制简易图形</p> <pre class=" language-python"><code class="prismlanguage-python">ssc install coefplot coefplot<span class="token punctuation">,</span>keep<span class="token punctuation">(</span> d_4 d_3 d_2 d_1 d1 d2 d3 d4 d5 <span class="token punctuation">)</span> levels<span class="token punctuation">(</span><span class="token number">90</span><span class="token punctuation">)</span> vertical lcolor<span class="token punctuation">(</span>black<span class="token punctuation">)</span> mcolor<span class="token punctuation">(</span>black<span class="token punctuation">)</span> msymbol<span class="token punctuation">(</span>circle_hollow<span class="token punctuation">)</span> ytitle<span class="token punctuation">(</span>回归系数<span class="token punctuation">,</span> size<span class="token punctuation">(</span>small<span class="token punctuation">)</span><span class="token punctuation">)</span>ylabel<span class="token punctuation">(</span><span class="token punctuation">,</span> labsize<span class="token punctuation">(</span>small<span class="token punctuation">)</span> angle<span class="token punctuation">(</span>horizontal<span class="token punctuation">)</span> nogrid<span class="token punctuation">)</span> yline<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> lwidth<span class="token punctuation">(</span>vthin<span class="token punctuation">)</span>lpattern<span class="token punctuation">(</span>solid<span class="token punctuation">)</span> lcolor<span class="token punctuation">(</span>black<span class="token punctuation">)</span><span class="token punctuation">)</span> xtitle<span class="token punctuation">(</span>政策实施相对时间<span class="token punctuation">,</span> size<span class="token punctuation">(</span>small<span class="token punctuation">)</span><span class="token punctuation">)</span> xlabel<span class="token punctuation">(</span><span class="token punctuation">,</span>labsize<span class="token punctuation">(</span>small<span class="token punctuation">)</span><span class="token punctuation">)</span>graphregion<span class="token punctuation">(</span>fcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span> lcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span> ifcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span> ilcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span><span class="token punctuation">)</span> ciopts<span class="token punctuation">(</span>recast<span class="token punctuation">(</span>rcap<span class="token punctuation">)</span><span class="token punctuation">)</span> xline<span class="token punctuation">(</span><span class="token number">10.5</span><span class="token punctuation">,</span> lwidth<span class="token punctuation">(</span>vthin<span class="token punctuation">)</span> lpattern<span class="token punctuation">(</span>solid<span class="token punctuation">)</span>lcolor<span class="token punctuation">(</span>black<span class="token punctuation">)</span><span class="token punctuation">)</span> </code></pre> <p>Stata15会出现字体问题;如果你是Stata14,字体会默认为宋体,因此推荐用Stata14来作图。</p> <p>本文使用Beck et al.(2010)提供的数据,参照上面的命令可以得到的图片大致如下,部分地方仍需要进一步手工调整。<br> <img src="https://i.loli.net/2020/03/22/DvxzspKforHnLqe.png" alt="Graph1.png" width="800" height="560"></p> <p>例如,调整x轴和y轴的标签。<br> <img src="https://i.loli.net/2020/03/22/KnH3z6g2BdAw8U1.png" alt="12.png" width="800" height="450"></p> <p>此处展示一个简单调整以后的图:<br> <img src="https://i.loli.net/2020/03/22/SVD7tWh13fQEcH9.png" alt="Graph11.png" width="800" height="570"></p> <p>上面这个图有个缺陷,就是无法在基期(current)的位置形成一个断点,优点是过程简单方便。一个可行的替代方案是,你可以将基期设定在最开头(即d_4),即回归模型设置为:</p> <pre class=" language-python"><code class="prismlanguage-python">xtreg yd_3 d_2 d_1 current d1 d2 d3 d4 d5 i<span class="token punctuation">.</span>year 控制变量<span class="token punctuation">,</span> fe r </code></pre> <p><strong>方法2:命令直接绘图(非常推荐)</strong></p> <p><strong>第一步:手工计算置信区间</strong></p> <p>首先考虑置信区间是如何被计算出来的。</p> <p>为计算90%置信区间,需要计算t统计量,最精确的命令是:gen t = invttail ( d2 , 0.05 )</p> <p>其中,参数d2是F统计量的第二个自由度,可以从前文的xtreg回归中获得这个数字。</p> <p><img src="https://i.loli.net/2020/03/22/3oPzAVS1H7QCeZy.png" alt="13.png"></p> <p><img src="https://i.loli.net/2020/03/22/qETHAD3XzQ9uI7B.png" alt="14.png"></p> <pre class=" language-python"><code class="prismlanguage-python">gen t <span class="token operator">=</span> invttail <span class="token punctuation">(</span> <span class="token number">48</span> <span class="token punctuation">,</span> <span class="token number">0.05</span> <span class="token punctuation">)</span> <span class="token operator">*</span>生成b_j的系数与置信区间(假设有<span class="token number">4</span>期,即distance最小值是<span class="token operator">-</span><span class="token number">4</span>;你可以手动调整下面命令的参数) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">4</span> <span class="token punctuation">{</span> gen b_`i<span class="token string">' = _b[d_`i'</span><span class="token punctuation">]</span> gen se_b_`i<span class="token string">' = _se[d_`i'</span><span class="token punctuation">]</span> gen b_`i<span class="token string">'LB = b_`i'</span> <span class="token operator">-</span> t <span class="token operator">*</span> se_b_`i' gen b_`i<span class="token string">'UB = b_`i'</span> <span class="token operator">+</span> t <span class="token operator">*</span> se_b_`i' <span class="token punctuation">}</span> <span class="token operator">*</span>生成bj的系数与置信区间(假设有<span class="token number">5</span>期,即distance最大值是<span class="token number">5</span>) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">5</span> <span class="token punctuation">{</span> gen b`i<span class="token string">' = _b[d`i'</span><span class="token punctuation">]</span> gen se_b`i<span class="token string">' = _se[d`i'</span><span class="token punctuation">]</span> gen b`i<span class="token string">'LB = b`i'</span> <span class="token operator">-</span> t <span class="token operator">*</span> se_b`i' gen b`i<span class="token string">'UB = b`i'</span> <span class="token operator">+</span> t <span class="token operator">*</span> se_b`i' <span class="token punctuation">}</span> </code></pre> <hr> <p><strong>第二步:将上述计算结果集中反映在三个变量中</strong></p> <pre class=" language-python"><code class="prismlanguage-python">gen b <span class="token operator">=</span> <span class="token punctuation">.</span> gen LB <span class="token operator">=</span> <span class="token punctuation">.</span> gen UB <span class="token operator">=</span> <span class="token punctuation">.</span> <span class="token operator">*</span>生成系数(政策前) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">4</span> <span class="token punctuation">{</span> replace b <span class="token operator">=</span> b_`i<span class="token string">'if distance == -`i'</span> <span class="token punctuation">}</span> <span class="token operator">*</span>生成系数(政策后) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">5</span><span class="token punctuation">{</span> replace b <span class="token operator">=</span> b`i<span class="token string">'if distance == `i'</span> <span class="token punctuation">}</span> <span class="token operator">*</span>生成系数置信区间下限(政策前) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">4</span> <span class="token punctuation">{</span> replace LB <span class="token operator">=</span> b_`i<span class="token string">'LB if distance == -`i'</span> <span class="token punctuation">}</span> <span class="token operator">*</span>生成系数置信区间下限(政策后) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">5</span> <span class="token punctuation">{</span> replace LB <span class="token operator">=</span> b`i<span class="token string">'LB if distance == `i'</span> <span class="token punctuation">}</span> <span class="token operator">*</span>生成系数置信区间上限(政策前) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">4</span> <span class="token punctuation">{</span> replace UB <span class="token operator">=</span> b_`i<span class="token string">'UB if distance == -`i'</span> <span class="token punctuation">}</span> <span class="token operator">*</span>生成系数置信区间上限(政策后) forvalues i<span class="token operator">=</span><span class="token number">1</span><span class="token operator">/</span><span class="token number">5</span> <span class="token punctuation">{</span> replace UB <span class="token operator">=</span> b`i<span class="token string">'UB if distance == `i'</span> <span class="token punctuation">}</span> </code></pre> <p><strong>第三步:删除重复值与无用的变量</strong></p> <p>绘图不会用到那么多变量与样本,只需要保留关键数据即可。</p> <pre class=" language-python"><code class="prismlanguage-python">keep distance b LB UB duplicates drop distance<span class="token punctuation">,</span>force sort distance </code></pre> <p><strong>第四步:绘制图片</strong></p> <p>下面是绘图命令,与coefplot一样,即使有了绘图设定,很多地方还是需要你手动调整。如果你了解graph editor,非常推荐直接在editor中对图片进行加工。</p> <pre class=" language-python"><code class="prismlanguage-python">twoway <span class="token punctuation">(</span>connected b distance<span class="token punctuation">,</span> sort lcolor<span class="token punctuation">(</span>black<span class="token punctuation">)</span> mcolor<span class="token punctuation">(</span>black<span class="token punctuation">)</span> msymbol<span class="token punctuation">(</span>circle_hollow<span class="token punctuation">)</span> cmissing<span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">(</span>rcap LB UB distance<span class="token punctuation">,</span> lcolor<span class="token punctuation">(</span>black<span class="token punctuation">)</span>lpattern<span class="token punctuation">(</span>dash<span class="token punctuation">)</span> msize<span class="token punctuation">(</span>medium<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span>ytitle<span class="token punctuation">(</span>Percentage change<span class="token punctuation">)</span> ytitle<span class="token punctuation">(</span><span class="token punctuation">,</span> size<span class="token punctuation">(</span>small<span class="token punctuation">)</span><span class="token punctuation">)</span>yline<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> lwidth<span class="token punctuation">(</span>vthin<span class="token punctuation">)</span> lpattern<span class="token punctuation">(</span>dash<span class="token punctuation">)</span> lcolor<span class="token punctuation">(</span>teal<span class="token punctuation">)</span><span class="token punctuation">)</span> ylabel<span class="token punctuation">(</span><span class="token punctuation">,</span> labsize<span class="token punctuation">(</span>small<span class="token punctuation">)</span> angle<span class="token punctuation">(</span>horizontal<span class="token punctuation">)</span> nogrid<span class="token punctuation">)</span> xtitle<span class="token punctuation">(</span>Years relative to branch deregulation<span class="token punctuation">)</span> xtitle<span class="token punctuation">(</span><span class="token punctuation">,</span> size<span class="token punctuation">(</span>small<span class="token punctuation">)</span><span class="token punctuation">)</span> xline<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> lwidth<span class="token punctuation">(</span>vthin<span class="token punctuation">)</span> lpattern<span class="token punctuation">(</span>dash<span class="token punctuation">)</span> lcolor<span class="token punctuation">(</span>teal<span class="token punctuation">)</span><span class="token punctuation">)</span>xlabel<span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token number">2</span><span class="token punctuation">,</span> labsize<span class="token punctuation">(</span>small<span class="token punctuation">)</span><span class="token punctuation">)</span>xmtick<span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token number">2</span><span class="token punctuation">,</span> nolabels ticks<span class="token punctuation">)</span>legend<span class="token punctuation">(</span>off<span class="token punctuation">)</span>graphregion<span class="token punctuation">(</span>fcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span> lcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span> ifcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span> ilcolor<span class="token punctuation">(</span>white<span class="token punctuation">)</span><span class="token punctuation">)</span> </code></pre> <p><img src="https://i.loli.net/2020/03/22/a8iRqbp7TJLnXl6.png" alt="Graph2.png"><br> 优点是图片美观,基期位置生成了一个断点,这是coefplot无法做到的。最重要的是,这种方法允许你以任意d_j为基期,并且也允许你相应位置形成断点(本帖没有给如何在d_j位置形成断点的方法)。缺点是整个绘图过程比较麻烦。</p> <p>当政策时点一致时,不少论文选择用两期DID的设定(即Dt、Gi、Dt<em>Gi)来回归多期数据,这是一种不合适的处理方法。如果你用的命令是reg,那么信息多的ui就会被信息少的Gi取代,内生性问题可能很严重;如果你用的命令是xtreg-,fe,那么Gi的系数将会无法被固定效应模型估计出系数,因为Gi通常不随时间改变,所以不少求助帖子会问分组变量Gi的系数为什么ommited了。一种不好的做法可能是这样的,以reg Dt、Gi、Dt</em>Gi i.year对多期数据进行回归,模型中还额外控制了时间虚拟变量。正如前文所述,Dt与时间虚拟变量存在很强的联系,因此如果同时在模型中放入两者,容易导致Dt、Dt<em>Gi的方差膨胀因子增大,进而使Dt和Dt</em>Gi系数的显著性下降。如果你的政策实施时点是一致的,你也希望用多期DID进行回归(实际上也本应如此),那么你的实际操作过程会更简单,但是本文没有把这种特例单独列出来讨论。你可以按照本文的思路照搬照做,就当它是时点不一致,只需要在最后一步绘图中做出修改,将x轴可以直接写某某年,而不是“-1”“-2”这样子。最后需要指出的是,两期DID只是多期DID的特例,切勿用两期DID的思想套到多期DID身上,这句话很重要,再怎么强调也不过分。但是,你可以拿多期DID的思想直接套在两期DID上,如果你能“反套”成功,那就真的理解了多期DID了。</p> <pre><code></code></pre> <p><strong>参考文献</strong><br> Beck T, Levine R, Levkov A. Big bad banks? The winners and losers from bank deregulation in the United States[J]. The Journal of Finance, 2010, 65(5): 1637-1667.</p> </div> </div> |
|
熟悉论坛请点击新手指南
|
|
| 下载说明 | |
|
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。 2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。 3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。 (如有侵权,欢迎举报) |
|
京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明