前言

最近在阅读的论文过程中,有时看到论文中实验结果表格中出现p值的比较,如下图所示:

p值的计算

对于配对设计的连续性变量在两组间的差异,可以选用配对t检验Wilcoxon signed-rank检验(Wilcoxon符号秩检验)。接下来以STCN表格中的数据为例,使用这两种方法计算p值。

t检验

  • 适用条件:两组差值近似服从正态分布的数据

  • 方法一:python代码

import numpy as np
from scipy import statsA=[1,2,4,5,2]
B=[2,3,4,1,1]A=np.array(A)
B=np.array(B)t,p=stats.ttest_ind(A,B)
print("t:",t,"\t p:",p)
  • 方法二:EXCEL公式
    以STCN表格中的数据为例:依次点击 公式 -> 其他函数 -> 统计 -> T.TEST,如下图所示:

    点击Array1中的输入框,再框住第一列数据(模型1的数据),点击Array2中的输入框,再框住第二列数据(模型2的数据),Tails和type都输入2(参数含义已经提示了)

    点击确定,就可以获得了t检验下的p值

    多组数据对比直接修改公式中的列号就行了

  • 方法三:EXCEL数据分析
    依次点击数据 -> 数据分析
    选择 t-检验:双样本等方差假设,再输入变量1的区域和变量2的区域,设置A值为0.05(默认),选择输出区域:

    确定之后即可获得一下结果可以看到单侧p值和双侧p值。同理可得到t-检验:双样本异方差假设的结果:

Wilcoxon符号秩检验

说明:在Self-Supervised Time Series Clustering With Model-Based Dynamics这篇论文中使用的便是Wilcoxon符号秩检验方法,具体细节他是参考论文Statistical Comparisons of Classifiers over Multiple Data Sets的,下面我就根据论文中的原始数据,实现AVG RANK 和P值的计算。

论文中的数据如图所示:

  1. 利用OCR工具获得原始论文中的数据,如下图所示:

  2. 利用rank()方法计算各方法在数据集上的排名,python程序如下:

# -*- coding: utf-8 -*-
# @Time :
# @Author :
# @Email :
# @File : import pandas as pddef count_avg(source_csv_file,target_csv_file):df=pd.read_csv(source_csv_file,index_col=None)df_head=df.columnsresult_df=[]#读取每一行数据for i in range(len(df)):one_row_df=df.iloc[i]#获得每一行的排名rank_one_row=one_row_df.rank(ascending=False, method='average')best_result = rank_one_row.valuesresult_df.append(best_result)result=pd.DataFrame(result_df,columns=df_head,index=None)  result.to_csv(target_csv_file,mode='w',index=False)
source_csv_file = './file/STCN原始数据.csv'
target_csv_file='./file/STCN原始数据_RANK_NMI.csv'
count_avg(source_csv_file,target_csv_file)


运行程序,结果如图所示:

求平均值,即可获得各算法的AVG RANK

与原论文一致:

  1. 在RANk(即上一步获得的rank表格,而不是原始数据)上计算p值,调用stats.wilcoxon()方法即可进行Wilcoxon符号秩检验,python程序如下:
# -*- coding: utf-8 -*-
# @Time :
# @Author :
# @Email :
# @File :
import pandas as pd
import numpy as np
from scipy import statssource_csv_file = './file/STCN原始数据.xlsx'
def get_p_value(source_csv_file):df = pd.read_excel(io=source_csv_file,index_col=None,header=None)p_list=[]# B_index默认最后一列last_index=df.shape[1]-1B_index=last_indexfor i in range(last_index):A=df.iloc[:,i].valuesB=df.iloc[:,B_index].valuesA=np.array(A)B=np.array(B)# Wilcoxon符号秩检验t,p_value=stats.wilcoxon(A, B, correction=False, alternative='two-sided')# t,p=stats.ttest_ind(A,B)# print("t:", t, "\t p_value:", p_value)p_list.append(p_value)print(p_list)
get_p_value(source_csv_file)

计算结果如图所示:

与原论文一致:

  1. 绘制CD(临界差异)图,python程序如下:
# -*- coding: utf-8 -*-
# @Time :
# @Author :
# @Email :
# @File :
import Orange
import matplotlib.pyplot as plt#算法名字
names = ['k-means', 'SC', 'UDFS', 'NDFS', 'RUFS', 'RSFS', 'KSC', 'KDBA', 'K-shape', 'u-shapelet', 'USSL', 'STCN']
#各算法的平均排名
avranks = [9.6528,7.9583,8.7778,6.8889,6.2083,6.2222,6.4306,6.6389,7.0417,7.3333,2.5139,2.3333]
#数据集大小
datasets_num = 35
#利用Nemenyi检验计算Critical difference
CD = Orange.evaluation.scoring.compute_CD(avranks, datasets_num, alpha='0.05', test='nemenyi')
Orange.evaluation.scoring.graph_ranks(avranks, names, cd=CD, width=8, textspace=1.5, reverse=True)
plt.show()

结果如图:

参考文章

  • SPSS详细教程:配对样本的非参数检验『Wilcoxon符- 号秩检验』

  • 秩和检验及其两两比较的思路与解析

  • P值

论文中p值计算方法与临界差异图的绘制相关推荐

  1. LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法...

    LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...

  2. LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法

    LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法 LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装 ...

  3. lc滤波器是利用电感的感抗_LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法...

    LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...

  4. 训练集与测试集的阳性阴性p值计算方法Python实现

    训练集与测试集的阳性阴性p值计算方法Python实现 在机器学习领域,常常需要将数据划分为训练集和测试集.其中,阳性和阴性样本的比例也是非常重要的指标之一.在模型训练和测试过程中,我们需要了解阳性和阴 ...

  5. fir1截止频率计算_LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法...

    LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐 ...

  6. 核苷酸pi值计算方法

    核苷酸pi值计算方法 哈喽,今天小编给大家分享的是核苷酸pi值计算方法,主要是介绍序列比对(MEGA和MZAFFT版的两种方法)计算pi值(dnasp)的两个步骤,有兴趣大家可以瞅瞅. 一.序列比对 ...

  7. R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值)

    R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值) 目录

  8. 从二值检索到层次竞买图——让搜索广告关键词召回焕然新生

    丨目录: · 背景 · 广告改写的历史与新目标 · 从两阶段到一段式:二值海选 · 从一段式到联合召回:层次竞买图 · 关键词召回的业务思考 本文主要分享过去一年我们在搜索广告召回的传统领域--关键词 ...

  9. mysql使用psm登录_倾向匹配得分教程(附PSM操作应用、平衡性检验、共同取值范围、​核密度函数图)...

    原标题:倾向匹配得分教程(附PSM操作应用.平衡性检验.共同取值范围.​核密度函数图) 本文主要包括倾向匹配得分命令简介.语法格式.倾向匹配得分操作步骤 思路,涉及倾向匹配得分应用.平衡性检验.共同取 ...

最新文章

  1. windows目录内打开CMD的几种方法
  2. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)
  3. Java黑皮书课后题第5章:**5.25(计算π)使用下面的数列可以近似计算π:4(1-1/3+1/5-1/7+……+(Math.pow(-1, i+1)/(2*i-1))
  4. 修改.html 打开方式 注册表,windows 注册表修改资料打开方式
  5. texlive写论文源代码_Texlive 2020 编译胡伟《latex2e完全学习手册》后记字体右倾90度...
  6. mysql数据存储和函数_MySQL数据库——存储和函数
  7. linux内核Kconfig语法
  8. python 魔法方法之:__getitem__ __setitem__ __delitem__
  9. 打孔屏+屏下指纹!这届iPhone全是安卓玩剩下的
  10. 以WinGrub 引导安装Fedora 4.0 为例,详述用WinGrub来引导Linux的安装
  11. centos7下发邮件给自己的QQ邮箱
  12. 深度分析《英雄联盟》游戏运营商背后的大数据支撑体系
  13. Excel函数公式大全—VLOOKUP函数
  14. JS使用递归遍历json对象进行操作
  15. android 主题颜色意义
  16. the little schemer 笔记(4)
  17. poi excel密码加密
  18. eclipse修改自定义皮肤
  19. 【MySQL基本查询】Create(创建), Retrieve(读取),Update(更新),Delete(删除)
  20. java 个人通讯录_java个人通讯录管理系统

热门文章

  1. Vue: 图书列表案例
  2. 什么工程项目管理软件好用?
  3. win10中使用cmd命令行进行切换盘符操作时无反应
  4. 微软服务器为何时间总是慢,Windows时间总不对? 简易手段让它永远正确
  5. TOJ 3287 Sudoku 9*9数独 dfs
  6. nginx域名301重定向
  7. 《SPARK官方教程系列》(标贝科技)
  8. 使用Python进行三维可视化
  9. 图形学基础|抗锯齿(Anti-Aliasing)
  10. 操作系统面试题总结(2022最新版)