建设团队网站,教育网站建设策划书,松原市新闻,建设工程标准 免费下载网站文章目录算法评估DID原理简单实例Python实现算法评估
作为一名算法出身的人#xff0c;曾长期热衷于算法本身的设计和优化。至于算法的效果评估#xff0c;通常使用公开数据集做测试#xff0c;然后对比当前已公开的结果#xff0c;便可得到结论。
但是在实际落地过程中曾长期热衷于算法本身的设计和优化。至于算法的效果评估通常使用公开数据集做测试然后对比当前已公开的结果便可得到结论。
但是在实际落地过程中却遇到了问题没有公开数据集即便有也依然有必要在实际场景下再做验证毕竟公开数据集和实际场景往往都有很大区别。
理论上来说新研发了一个算法后需要和业务已经在使用的人工经验被理解为一种特殊的策略做对比算法迭代后前后两个版本的算法也需要做对比。
不失一般性假设在某个区域内评价指标为最大化JJJ此前使用算法A当前有了新算法B该如何评估B相比A是否能更好地促进JJJ的提升呢
理想情况下是在该区域的两个平行时空中一个使用算法A另一个使用算法B分别得到指标JAJ_AJA和JBJ_BJB。然后比较两个指标的优劣如果JBJ_BJB指标更好那么算法B可以被认为是更有利于指标JJJ的提升。
但在任意给定的时间点该区域实际上只能处于一种状态即只使用算法A或者只使用算法B因此只能观察到JAJ_AJA或JBJ_BJB。
因此需要寻找两个相同的区域然后分别使用A算法和B算法再基于得到的指标进行算法优劣的评估。当然要找到两个相同的区域在现实中是很困难的但是如果区域不同无论控制其多少个参数相同都有可能让JJJ受到某些未观测参数的影响。
如果退而求其次不要求完全相同是否还有机会去科学地评估算法A和B呢答案是有的就是本文即将介绍的双重差分法difference-in-differencesDID。
DID原理
DID的原理如下图所示。选定两个区域1和2以算法B的干预时刻为基准将时间定义为干预前和干预后。在干预后区域1保持不变继续使用算法A最终可以得到A增量区域2使用算法B后得到的B增量可以被拆解为两个部分区域2的自然增量A’以及算法B带来的纯增量B‘。A’可以理解为不使用算法B时区域2的增量。如果在干预前两个区域针对指标JJJ的变化趋势保持一致那么我们可以基于A和此前的变化趋势估计出A’即做出反事实推断。由于区域2实际的增量B是已知的因此算法B带来的纯增量为 B′B−A′BB-AB′B−A′ 此时我们发现不再刻意要求区域1和区域2完全相同只要求两者的历史指标变化区域保持一致即可这显著降低了区域选取的难度。
如果使用数学表达式可以描述为 YitαδDiλTtβ(Di×Tt)ϵitY_{it}\alpha\delta D_i\lambda T_t\beta(D_i \times T_t)\epsilon_{it}YitαδDiλTtβ(Di×Tt)ϵit 其中YitY_{it}Yit为JJJ变量α\alphaα为截距δ\deltaδ、λ\lambdaλ和β\betaβ为系数值 DiD_iDi为算法B干预前为0干预后为1TtT_tTt为时间干预前为0干预后为1Di×TtD_i \times T_tDi×Tt为交叉项ϵit\epsilon_{it}ϵit为随机项。
对上式取条件期望后算法增量上图中的B’为β\betaβ计算过程如下表所示。
E(Y∣D,T)E(Y|D,T)E(Y∣D,T)T0T0T0T1T1T1Δ\DeltaΔD0D0D0α\alphaααλ\alpha\lambdaαλλ\lambdaλD1D1D1αδ\alpha\deltaαδαδλβ\alpha\delta\lambda\betaαδλβλβ\lambda\betaλβΔ\DeltaΔδ\deltaδδβ\delta\betaδββ\betaβ
显然如果β0\beta0β0则认为算法B对指标JJJ有正向促进作用反之则认为有负向抵制作用。
简单实例
那么如何求解β\betaβ值呢
目前大部分DID的代码都是基于stata实现的。因此本节主要参考半块土豆切丝的视频给出一个简单实例的计算过程。
实例描述为A和B为历史指标的变化保持一致的两个地区在1994年B区实行了一项新政策目标是评估新政策对指标yyy的影响。相关数据如下。
countryyearyA19901342787840A1991-1899660544A1992-11234363A19932645775360A19943008334848A19953229574144A19962756754176A19972771810560A19983397338880A199939770336B19901342787840B1991-1518985728B19921912769920B19931345690240B19942793515008B19951323696384B1996254524176B19973297033216B19983011820800B19993296283392
此处先直接给出stata代码如下
// stata代码gen period (year1994) !missing(year) // 生成时间虚拟变量D1994年前为0,反之为1
gen treat (country1) !missing(country) // 生成区域的虚拟变量T干预为1反之为0
gen did period * treat // 生成交叉项D·Tdiff y, t(treat) p(period) // DID回归diff方式为了更好地理解上述代码把基本公式再抄写一遍 YitαδDiλTtβ(Di×Tt)ϵitY_{it}\alpha\delta D_i\lambda T_t\beta(D_i \times T_t)\epsilon_{it}YitαδDiλTtβ(Di×Tt)ϵit 对应到该实例DDD是政策变量treatB地区为1A地区为0上述第2行代码实现TTT是时间变量period1994-1999年为11990-1993年为0第1行代码实现Di×TtD_i \times T_tDi×Tt是交叉项did第3行代码实现β\betaβ的计算由第4行代码实现。
先看一下计算结果。
Number of observations in the DIFF-IN-DIFF: 20Before After Control: 4 6 10Treated: 4 6 108 12
--------------------------------------------------------Outcome var. | y | S. Err. | |t| | P|t|
----------------------------------------------------
Before | | | | Control | 5.2e08| | | Treated | 7.7e08| | | Diff (T-C) | 2.5e08| 1.0e09| 0.24 | 0.811
After | | | | Control | 2.5e09| | | Treated | 2.3e09| | | Diff (T-C) | -2.0e08| 8.4e08| 0.24 | 0.812| | | |
Diff-in-Diff | -4.6e08| 1.3e09| 0.34 | 0.737
--------------------------------------------------------
R-square: 0.31
* Means and Standard Errors are estimated by linear regression
**Inference: *** p0.01; ** p0.05; * p0.1
输出内容看起来挺复杂我们主要关注DIFF-in-Diff行、y列和P|t|列的数值分别是-4.6e8和0.737。其中-4.6e8即为我们要计算的β\betaβ值0.737表征的是所得到β\betaβ值的靠谱程度一般命名为ppp。该值如果小于0.05表明β\betaβ值是有参考价值的反之无论β\betaβ值为多少均认为无显著变化。所有情况罗列一遍
p0.05p0.05p0.05p0.05p0.05p0.05β0\beta0β0无显著效果显著正向效果β0\beta0β0无显著效果显著负向效果
所以在该实例中可以得到结论该新政策对指标y并没有显著效果。
Python实现
事实上有了多组period、treat、did和y值之后要计算β\betaβ本质就是一个最小二乘法的优化问题。只不过此处还需要求解ppp值。庆幸的是该功能并不需要自己编写代码去实现可以调用statsmodels工具包来求解。
以下为Python计算β\betaβ值的代码
import statsmodels.formula.api as smf
import pandas as pdif __name__ __main__:df pd.read_excel(test_data_101_1.xlsx)// 生成时间虚拟变量D1994年前为0,反之为1df[period] df[year].apply(lambda x: 1 if x 1994 else 0)// 生成区域的虚拟变量T干预为1反之为0df[treat] df[country].apply(lambda x: 1 if x B else 0)// 生成交叉项D·Tdf[did] df[period] * df[treat]// 调用smf计算beta值df df[[period, treat, did, y]]model smf.ols(formulay ~ period treat did, datadf).fit()print(model.summary())运行以上代码可以得到 OLS Regression Results Dep. Variable: y R-squared: 0.313
Model: OLS Adj. R-squared: 0.184
Method: Least Squares F-statistic: 2.430
Date: Sun, 05 Mar 2023 Prob (F-statistic): 0.103
Time: 22:27:31 Log-Likelihood: -448.21
No. Observations: 20 AIC: 904.4
Df Residuals: 16 BIC: 908.4
Df Model: 3
Covariance Type: nonrobust
coef std err t P|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 5.194e08 7.31e08 0.711 0.488 -1.03e09 2.07e09
period 2.015e09 9.44e08 2.135 0.049 1.42e07 4.01e09
treat 2.511e08 1.03e09 0.243 0.811 -1.94e09 2.44e09
did -4.556e08 1.33e09 -0.341 0.737 -3.28e09 2.37e09Omnibus: 2.990 Durbin-Watson: 2.288
Prob(Omnibus): 0.224 Jarque-Bera (JB): 2.423
Skew: -0.814 Prob(JB): 0.298
Kurtosis: 2.494 Cond. No. 7.66主要看did行、coef列和P|t|列的数值。显然该结果和stata的计算结果是完全一致的。 文章转载自: http://www.morning.dtnyl.cn.gov.cn.dtnyl.cn http://www.morning.kfclh.cn.gov.cn.kfclh.cn http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn http://www.morning.qzglh.cn.gov.cn.qzglh.cn http://www.morning.pqcbx.cn.gov.cn.pqcbx.cn http://www.morning.gyfwy.cn.gov.cn.gyfwy.cn http://www.morning.ftmly.cn.gov.cn.ftmly.cn http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn http://www.morning.qhmql.cn.gov.cn.qhmql.cn http://www.morning.rqlqd.cn.gov.cn.rqlqd.cn http://www.morning.yknsr.cn.gov.cn.yknsr.cn http://www.morning.wdnkp.cn.gov.cn.wdnkp.cn http://www.morning.rwmq.cn.gov.cn.rwmq.cn http://www.morning.tbqbd.cn.gov.cn.tbqbd.cn http://www.morning.mfbcs.cn.gov.cn.mfbcs.cn http://www.morning.xxgfl.cn.gov.cn.xxgfl.cn http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn http://www.morning.rqmr.cn.gov.cn.rqmr.cn http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn http://www.morning.hgsylxs.com.gov.cn.hgsylxs.com http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.rbmnq.cn.gov.cn.rbmnq.cn http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn http://www.morning.xfwnk.cn.gov.cn.xfwnk.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn http://www.morning.wknjy.cn.gov.cn.wknjy.cn http://www.morning.xclgf.cn.gov.cn.xclgf.cn http://www.morning.tlpgp.cn.gov.cn.tlpgp.cn http://www.morning.fqpyj.cn.gov.cn.fqpyj.cn http://www.morning.xpqsk.cn.gov.cn.xpqsk.cn http://www.morning.qxlgt.cn.gov.cn.qxlgt.cn http://www.morning.ycgrl.cn.gov.cn.ycgrl.cn http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn http://www.morning.mlnby.cn.gov.cn.mlnby.cn http://www.morning.pmmrb.cn.gov.cn.pmmrb.cn http://www.morning.nbgfz.cn.gov.cn.nbgfz.cn http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn http://www.morning.nqlx.cn.gov.cn.nqlx.cn http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn http://www.morning.wdhlc.cn.gov.cn.wdhlc.cn http://www.morning.drkk.cn.gov.cn.drkk.cn http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.sgqw.cn.gov.cn.sgqw.cn http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn http://www.morning.dnmgr.cn.gov.cn.dnmgr.cn http://www.morning.mgtmm.cn.gov.cn.mgtmm.cn http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn http://www.morning.ymhzd.cn.gov.cn.ymhzd.cn http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn http://www.morning.lgrkr.cn.gov.cn.lgrkr.cn http://www.morning.ltpzr.cn.gov.cn.ltpzr.cn http://www.morning.qjghx.cn.gov.cn.qjghx.cn http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn http://www.morning.rkqqf.cn.gov.cn.rkqqf.cn http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn http://www.morning.zxxys.cn.gov.cn.zxxys.cn http://www.morning.jfbbq.cn.gov.cn.jfbbq.cn http://www.morning.rxcqt.cn.gov.cn.rxcqt.cn http://www.morning.smggx.cn.gov.cn.smggx.cn http://www.morning.mooncore.cn.gov.cn.mooncore.cn http://www.morning.zfcfk.cn.gov.cn.zfcfk.cn http://www.morning.ktrh.cn.gov.cn.ktrh.cn http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn http://www.morning.dxgt.cn.gov.cn.dxgt.cn http://www.morning.hngmg.cn.gov.cn.hngmg.cn http://www.morning.bpmdx.cn.gov.cn.bpmdx.cn http://www.morning.qpljg.cn.gov.cn.qpljg.cn http://www.morning.byshd.cn.gov.cn.byshd.cn http://www.morning.wkjzt.cn.gov.cn.wkjzt.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.gnwpg.cn.gov.cn.gnwpg.cn http://www.morning.kspfq.cn.gov.cn.kspfq.cn http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn