Python 实现 显著性检验 delong

import numpy as np
from matplotlib import pyplot as plt
import scipy.stats as st
from sklearn import metricsclass DelongTest():def __init__(self,preds1,preds2,label,threshold=0.05):'''preds1:the output of model1preds2:the output of model2label :the actual label'''self._preds1=preds1self._preds2=preds2self._label=labelself.threshold=thresholdself._show_result()def _auc(self,X, Y)->float:return 1/(len(X)*len(Y)) * sum([self._kernel(x, y) for x in X for y in Y])def _kernel(self,X, Y)->float:'''Mann-Whitney statistic'''return .5 if Y==X else int(Y < X)def _structural_components(self,X, Y)->list:V10 = [1/len(Y) * sum([self._kernel(x, y) for y in Y]) for x in X]V01 = [1/len(X) * sum([self._kernel(x, y) for x in X]) for y in Y]return V10, V01def _get_S_entry(self,V_A, V_B, auc_A, auc_B)->float:return 1/(len(V_A)-1) * sum([(a-auc_A)*(b-auc_B) for a,b in zip(V_A, V_B)])def _z_score(self,var_A, var_B, covar_AB, auc_A, auc_B):return (auc_A - auc_B)/((var_A + var_B - 2*covar_AB )**(.5)+ 1e-8)def _group_preds_by_label(self,preds, actual)->list:X = [p for (p, a) in zip(preds, actual) if a]Y = [p for (p, a) in zip(preds, actual) if not a]return X, Ydef _compute_z_p(self):X_A, Y_A = self._group_preds_by_label(self._preds1, self._label)X_B, Y_B = self._group_preds_by_label(self._preds2, self._label)V_A10, V_A01 = self._structural_components(X_A, Y_A)V_B10, V_B01 = self._structural_components(X_B, Y_B)auc_A = self._auc(X_A, Y_A)auc_B = self._auc(X_B, Y_B)# Compute entries of covariance matrix S (covar_AB = covar_BA)var_A = (self._get_S_entry(V_A10, V_A10, auc_A, auc_A) * 1/len(V_A10)+ self._get_S_entry(V_A01, V_A01, auc_A, auc_A) * 1/len(V_A01))var_B = (self._get_S_entry(V_B10, V_B10, auc_B, auc_B) * 1/len(V_B10)+ self._get_S_entry(V_B01, V_B01, auc_B, auc_B) * 1/len(V_B01))covar_AB = (self._get_S_entry(V_A10, V_B10, auc_A, auc_B) * 1/len(V_A10)+ self._get_S_entry(V_A01, V_B01, auc_A, auc_B) * 1/len(V_A01))# Two tailed testz = self._z_score(var_A, var_B, covar_AB, auc_A, auc_B)p = st.norm.sf(abs(z))*2return z,pdef _show_result(self):z,p=self._compute_z_p()print(f"z score = {z:.5f};\np value = {p:.5f};")if p < self.threshold :print("There is a significant difference")else:        print("There is NO significant difference")# Model A (random) vs. "good" model B
preds_A = np.array([.5, .5, .5, .5, .5, .5, .5, .5, .5, .5])
preds_B = np.array([.2, .5, .1, .4, .9, .8, .7, .5, .9, .8])
actual=    np.array([0, 0, 0, 0, 1, 0, 1, 1, 1, 1])
DelongTest(preds_A,preds_B,actual)

测试结果:

z score = -3.35876;
p value = 0.00078;
There is a significant difference

原理参考链接参考链接
意思就是如果p<0.05就说明有显著差异

Python实现显著性检验delong相关推荐

  1. python 线性回归显著性检验_回归方程及回归系数的显著性检验_stata显著性检验...

    1.回归方程的显著性检验 (1) 回归平方和与剩余平方和 建立回归方程以后, 回归效果如何呢?因变量 与自变量 是否确实存在线性关系呢?这是需要进行统计检验才能加以肯定或否定, 为此, 我们要进一步研 ...

  2. Python Scipy 显著性检验

    Scipy 显著性检验 显著性检验(significance test)就是事先对总体(随机变量)的参数或总体分布形式做出一个假设,然后利用样本信息来判断这个假设(备择假设)是否合理,即判断总体的真实 ...

  3. python 线性回归显著性检验_【机器学习笔记】:大话线性回归(二)

    ▌线性回归拟合优度 1. 判定系数 回归直线与各观测点的接近程度成为回归直线对数据的拟合优度.而评判直线拟合优度需要一些指标,其中一个就是判定系数. 我们知道,因变量y值有来自两个方面的影响: (1) ...

  4. python语言deLong‘s test:通过统计学的角度来比较两个ROC曲线、检验两个ROC曲线的差异是否具有统计显著性

    python语言deLong's test:通过统计学的角度来比较两个ROC曲线.检验两个ROC曲线的差异是否具有统计显著性 目录

  5. 显著性检验python

    Table of Contents 1  信用特征检验/模型稳健性检验的代码实现 1.1  常用的检验实现 1.1.1  ttest_ind 1.1.2  曼-惠特尼U检验(Mann-Whitney ...

  6. python 白化_MeteoInfo和Python显著性检验

    MeteoInfo显著性检验: MeteoInfo官网: http://www.meteothink.org 源代码: https://github.com/meteoinfo fn = 'F:/RM ...

  7. 如何用python进行相关性分析_Python 相关性分析 显著性检验

    Pandas中有pandas.DataFrame.corr和pandas.Series.corr两个方法进行相关性的计算,第一个针对整个dataframe数据返回一个矩阵,第二个针对不同的column ...

  8. python 显著性差异_比萨斜塔——统计显著性检验

    Dataset 比萨斜塔是意大利最大的旅游景点之一.几百年来这座塔慢慢靠向一边,最终达到5.5度的倾斜角度,在顶端水平偏离了近3米.年度数据pisa.csv文件记录了从1975年到1987年测量塔的倾 ...

  9. python分析数据差异的方法_数据分析技术:数据差异的显著性检验

    数据差异的显著性检验是数据分析的重要技术之一.然而,如何正确选择检验方法是很多初学者困惑和容易出现错误的地方.下面为大家总结一下数据差异显著性检验的方法及适用范围. 显著性检验 首先需要理解什么是数据 ...

最新文章

  1. 数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码
  2. 静态布局、自适应布局、流式布局、响应式布局、弹性布局简析、BFC
  3. qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 【Python】find()函数居然还能指定搜索的起点和终点?
  5. 重温WEB开发系列(二)HTML HEAD
  6. Git:git-pull的用法总结
  7. c语言函数的形参有几个,C中子函数最多有几个形参
  8. Python程序员的圣经——《Python编程快速上手:让繁琐工作自动化》尾末附下载地址
  9. php授权验证系统 c,OAuth 2.0 授权码认证
  10. 17.vue移动端项目二
  11. 水题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas
  12. qt5不能添加新文件_VS2017配置Qt5.9教程
  13. 从Photoshop无法启动DeNoise AI Mac作为插件的解决办法
  14. 【语音识别】基于matlab GUI MFCC+VQ说话人识别系统【含Matlab源码 1153期】
  15. 在深度学习时代如何用 HowNet 搞事情 | 讲座笔记
  16. 第四讲 移动互联网接入技术
  17. vue 或 js 实现 excel表格的导出(笔记)
  18. [电影]《指环王》新老三部曲完全赏析(魔戒再现)
  19. 用Python挖掘网易云音乐的热门歌单
  20. 滴滴拉屎v1.20 一款非常好用的找厕所工具

热门文章

  1. sql里用union all 连接后,查询结果中带“_u1.”解决方法
  2. 传统手工室内外三维建模
  3. 微信公众平台开发教程(十)Scope参数错误或没有Scope权限解决方法
  4. H3C交换机开启SNMP
  5. 关于Web Worker你必须知道的7件事
  6. modbus slave
  7. 刘瑜《NoSQL数据库入门与实践 基于MongoDB、Redis》PDF下载
  8. 红帽linux系统备份指令,redhat Linux系统tar、gzip、zip等压缩命令
  9. 对象不支持此属性或方法 ie8
  10. java中的熔断机制_SpringCloud- 第八篇 Hystrix熔断机制(五)