Diebold

您所在的位置:网站首页 M大还是dm大 Diebold

Diebold

2024-07-02 17:10| 来源: 网络整理| 查看: 265

Diebold-Mariano检验 该博客动机DM检验背景DM检验理论开源代码

该博客动机

    最近博主有一篇论文一审结果回来了,审稿人要求作者用Diebold-Mariano检验检测方法的有效性,但在网上搜了半天没找到对Diebold-Mariano检验(以下简称DM检验)的能懂的解释,最后还是看英文原文看懂的,因此博主在这里介绍DM检验,并在最后附上博主在github上开源的DM代码链接。

DM检验背景

    假设我们有两个模型(模型A和模型B)做一个时间跨度为T(这里假设T=3)的预测任务,根据预测结果得到在该时间范围内的预测结果,然后根据真实值计算预测误差,假设二者误差分别为:      E a = [ 3.1 , 4.6 , 3.4 ] E_{a}=[3.1,4.6,3.4] Ea​=[3.1,4.6,3.4] (模型A的误差)      E b = [ 2.9 , 4.8 , 3.6 ] E_{b}=[2.9,4.8,3.6] Eb​=[2.9,4.8,3.6] (模型B的误差)     可以看到二者误差相差不大,其中模型A的平均误差为3.70,模型B的平均误差为3.77,那么我们就可以肯定模型A的效果一定比模型B好吗,其实不一定,我们用的测试数据毕竟只是所有可能存在数据中采样出的一小部分,这可能是由于数据采样不够好使得A侥幸表现比B好。     那我们如何确认是不是侥幸,或者有没有可能算出模型A和模型B表现有显著差异(即模型A极大概率比模型B效果好)的概率?DM检验从统计学角度提供了计算方法。

DM检验理论

    同样假设模型A和B在时间长度为T的跨度上做预测,假设模型A 和模型B的误差序列为:      E a = [ a 1 , a 2 , . . . a T ] E_{a}=[a^{1}, a^{2},...a^{T}] Ea​=[a1,a2,...aT]      E b = [ b 1 , b 2 , . . . b T ] E_{b}=[b^{1}, b^{2},...b^{T}] Eb​=[b1,b2,...bT]     那么我们可以求得二者差值序列为 D = [ d 1 , d 2 , . . . , d T ] D=[d^{1}, d^{2},...,d^{T}] D=[d1,d2,...,dT],其中:      d i = a i − b i d^{i}=a^{i}-b^{i} di=ai−bi     然后我们可以求得序列D的均值和标准差,其公式为:      d m e a n = ∑ i = 1 T d i T d_{mean}=\frac{\sum\limits^{T}_{i=1}d^{i}}{T} dmean​=Ti=1∑T​di​      d s t d = ∑ i = 1 T ( d i − d m e a n ) 2 T − 1 d_{std}=\sqrt{\frac{\sum\limits_{i=1}^{T}(d^{i}-d_{mean})^{2}}{T-1}} dstd​=T−1i=1∑T​(di−dmean​)2​ ​     然后可计算出DM统计量为:      D M = d m e a n d s t d DM=\frac{d_{mean}}{d_{std}} DM=dstd​dmean​​     而DM检验理论认为 D M DM DM的分布满足标准正态分布。因此,通过在标准正态分布表中查询 D M DM DM对应的置信度就可以知道模型A和模型B有显著表现差异的置信度。

开源代码

    博主用python编程实现了DM检验代码,并已在github上开源,源代码地址为:     https://github.com/Lizhuoling/Diebold-Mariano-test



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3