Friedman检验及后续Nemenyi检验可视化

文章目录

  • Friedman 检验
  • Nemeny检验

合作推广,分享一个人工智能学习网站。计划系统性学习的同学可以了解下,点击助力博主脱贫( •̀ ω •́ )✧

Friedman 检验


弗里德曼检验(Friedman test)是一种非参数统计检验方法,用于比较来自不同群体或条件的相关样本。它是一种针对重复测量设计的方法,适用于有序分类变量或等级变量。Friedman 检验是一种非参数方法,它不依赖于数据的分布假设,因此在数据不满足正态分布或方差齐性的情况下也可以使用。它广泛应用于医学、社会科学和其他领域的研究中,特别适用于重复测量设计和相关样本的比较分析。

弗里德曼检验的目的是确定多个相关样本是否存在显著差异。它基于样本的秩次或等级信息,而不是具体的数值。该检验假设每个样本都来自同一总体,并且评估各组之间的差异是否显著。

具体来说,原假设是所有方法具有相同的秩。令 R j R_j Rj表示第 j j j个方法的秩的均值, k k k表示涉及方法的数量, N N N表示涉及数据集/实验的数量我们有Friedman统计量:
χ F 2 = 12 N k ( k + 1 ) ( ∑ j = 1 k R j 2 − k ( k + 1 ) 2 4 ) \chi_F^2=\frac{12N}{k(k+1)}(\sum_{j=1}^kR_j^2-\frac{k(k+1)^2}{4}) χF2=k(k+1)12N(j=1kRj24k(k+1)2)
服从自由度为 ( k − 1 ) (k-1) (k1)的 \chi_F^2分布。以及
F F = ( N − 1 ) χ F 2 N ( k − 1 ) − χ F 2 F_F=\frac{(N-1)\chi_F^2}{N(k-1)-\chi_F^2} FF=N(k1)χF2(N1)χF2
是自由度为 ( k − 1 ) (k-1) (k1) ( k − 1 ) ( N − 1 ) (k-1)(N-1) (k1)(N1) F F F分布。如果原假设被拒绝,那么接下来Nemenyi后续检验就会被执行。

比如对于7中方法,进行了5次实验,实验排名如下表所示:

实验1实验2实验3实验4实验5
32341
55754
23213
11122
46435
64676
77567

在这个例子里面,我有 k = 7 , N = 5 k=7,N=5 k=7,N=5,那么根据上述公式,我们可以计算得到 χ F 2 = − 27.1714 \chi_F^2=-27.1714 χF2=27.1714 F F = 16.5882 F_F=16.5882 FF=16.5882。因此,对于显著水平 α = 0.05 \alpha=0.05 α=0.05,我们可以计算 F α = F 0.05 ( 6 , 24 ) = 2.5082 F_\alpha=F_{0.05}(6,24)=2.5082 Fα=F0.05(6,24)=2.5082,由于 F F > F α F_F>F_\alpha FF>Fα,我们拒绝原假设,也就是说方法间存在显著差异。接下来执行Nemeny检验。

给出对应计算的python代码:

from scipy.stats import fdef friedman(R, k, N):xf = 0for i in range(len(R)):xf = xf + R[i] * R[i]xf = xf - k * (k + 1) * (k + 1) / 4xf = xf * 12 * N / k / (k + 1)ff = (N - 1) * xf / (N * (k - 1) - xf)return xf, ffdef CD(q, k, N):CD = q * math.sqrt(k * (k + 1) / 6 / N)return CDdef F_alpha(alpha,n,d):return f.isf(q=alpha, dfn=n, dfd=d)

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

Nemeny检验


在拒绝原假设后,如果两个方法间的平均秩的差异,达到了显著差异critical difference ( C D CD CD)的话,就称这两个方法间存在显著差异。:
C D = q α k ( k + 1 ) 6 N CD=q_\alpha\sqrt{\frac{k(k+1)}{6N}} CD=qα6Nk(k+1)
器中 α \alpha α表示显著水平,通常取0.05或0.1。 q α q_\alpha qα是对应查表对应的常量。

还是对于上述例子,对于显著水平 α = 0.05 \alpha=0.05 α=0.05,我们有 q 0.05 = 2.9480 q_{0.05}=2.9480 q0.05=2.9480,然后根据公式计算得到 C D = 4.0277 CD=4.0277 CD=4.0277。也就是说两个方法的平均秩达到4.0277的话,它们间存在显著差异。最后我们可以通过以下matlab代码进行可视化:

%function cd = criticaldifference(s,labels,alpha)
s=[
3 2 3 4 1
5 5 7 5 4
2 3 2 1 3
1 1 1 2 2
4 6 4 3 5
6 4 6 7 6
7 7 5 6 7
]';
labels={'A','B','C','D','E','F','G'};%方法的标签
alpha=0.05; %显著性水平0.1,0.05或0.01%if nargin < 3alpha = 0.1;
end% convert scores into ranks 
[N,k] = size(s);
[S,r] = sort(s');
idx   = k*repmat(0:N-1, k, 1)' + r';
R     = repmat(1:k, N, 1);
S     = S';for i=1:Nfor j=1:kindex    = S(i,j) == S(i,:);R(i,index) = mean(R(i,index));end
endr(idx)  = R;
r       = r';% compute critical difference
if alpha == 0.01qalpha = [0.000 2.576 2.913 3.113 3.255 3.364 3.452 3.526 3.590 3.646 ...3.696 3.741 3.781 3.818 3.853 3.884 3.914 3.941 3.967 3.992 ...4.015 4.037 4.057 4.077 4.096 4.114 4.132 4.148 4.164 4.179 ...4.194 4.208 4.222 4.236 4.249 4.261 4.273 4.285 4.296 4.307 ...4.318 4.329 4.339 4.349 4.359 4.368 4.378 4.387 4.395 4.404 ...4.412 4.420 4.428 4.435 4.442 4.449 4.456 ];elseif alpha == 0.05 qalpha = [0.000 1.960 2.344 2.569 2.728 2.850 2.948 3.031 3.102 3.164 ...3.219 3.268 3.313 3.354 3.391 3.426 3.458 3.489 3.517 3.544 ...3.569 3.593 3.616 3.637 3.658 3.678 3.696 3.714 3.732 3.749 ...3.765 3.780 3.795 3.810 3.824 3.837 3.850 3.863 3.876 3.888 ...3.899 3.911 3.922 3.933 3.943 3.954 3.964 3.973 3.983 3.992 ...4.001 4.009 4.017 4.025 4.032 4.040 4.046]; elseif alpha == 0.1qalpha = [0.000 1.645 2.052 2.291 2.460 2.589 2.693 2.780 2.855 2.920 ...2.978 3.030 3.077 3.120 3.159 3.196 3.230 3.261 3.291 3.319 ...3.346 3.371 3.394 3.417 3.439 3.459 3.479 3.498 3.516 3.533 ...3.550 3.567 3.582 3.597 3.612 3.626 3.640 3.653 3.666 3.679 ...3.691 3.703 3.714 3.726 3.737 3.747 3.758 3.768 3.778 3.788 ...3.797 3.806 3.814 3.823 3.831 3.838 3.846];elseerror('alpha must be 0.01, 0.05 or 0.1');
end
cd = qalpha(k)*sqrt(k*(k+1)/(6*N));disp(alpha)
disp(qalpha(k))
disp(k)
disp(N)
disp(cd)figure(1);
clf
axis off
axis([-0.2 1.2 -20 140]);
axis xy 
tics = repmat((0:(k-1))/(k-1), 3, 1);
line(tics(:), repmat([100, 101, 100], 1, k), 'LineWidth', 1.5, 'Color', 'k');
line([0 0 0 cd/(k-1) cd/(k-1) cd/(k-1)], [113 111 112 112 111 113], 'LineWidth', 1, 'Color', 'r');
text(0.03, 116, ['Critical Distance=' num2str(cd)], 'FontSize', 12, 'HorizontalAlignment', 'left', 'Color', 'r');for i=1:ktext((i-1)/(k-1), 105, num2str(k-i+1), 'FontSize', 12, 'HorizontalAlignment', 'center');
end% compute average ranks
r       = mean(r);
[r,idx] = sort(r);% compute statistically similar cliques
clique           = repmat(r,k,1) - repmat(r',1,k);
clique(clique<0) = realmax; 
clique           = clique < cd;for i=k:-1:2if all(clique(i-1,clique(i,:))==clique(i,clique(i,:)))clique(i,:) = 0;end
endn                = sum(clique,2);
clique           = clique(n>1,:);
n                = size(clique,1);b=linspace(0,1,k);
% labels displayed on the right
for i=1:ceil(k/2)line([(k-r(i))/(k-1) (k-r(i))/(k-1) 1], [100 100-3*(n+1)-10*i 100-3*(n+1)-10*i], 'Color', [0 0 b(i)]);text(1.02, 100 - 3*(n+1) - 10*i, labels{idx(i)}, 'FontSize', 12, 'VerticalAlignment', 'middle', 'HorizontalAlignment', 'left', 'Color', [0 0 b(i)]);
end% labels displayed on the left
for i=ceil(k/2)+1:kline([(k-r(i))/(k-1) (k-r(i))/(k-1) 0], [100 100-3*(n+1)-10*(k-i+1) 100-3*(n+1)-10*(k-i+1)], 'Color', [0 0 b(i)]);text(-0.02, 100 - 3*(n+1) -10*(k-i+1), labels{idx(i)}, 'FontSize', 12, 'VerticalAlignment', 'middle', 'HorizontalAlignment', 'right', 'Color', [0 0 b(i)]);
end% group cliques of statistically similar classifiers
for i=1:size(clique,1)R = r(clique(i,:));line([((k-min(R))/(k-1)) ((k-min(R))/(k-1)) ((k-min(R))/(k-1)) ((k - max(R))/(k-1)) ((k - max(R))/(k-1)) ((k - max(R))/(k-1))], [100+1-5*i 100-1-5*i 100-5*i 100-5*i 100-1-5*i 100+1-5*i], 'LineWidth', 1, 'Color', 'r');
end

可视化结果:
在这里插入图片描述

图中横坐标从右到左依次是各个方法的平均秩,颜色从黑色渐变蓝色。若它们的平均秩差异达到CD,则用红线显示出来。如方法D显著优于B、F、G。方法C显著优于F、G。

只需修改数组s为你的方法排名,以及对应的方法名labels,即可算出CD,以及打印对应的 q α q_\alpha qα

原创不易,请勿转载本不富裕的访问量雪上加霜
博主首页:https://wzlodq.blog.csdn.net/
来都来了,不评论两句吗👀
如果文章对你有帮助,记得一键三连❤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314402.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSG读取和添加节点学习

之前加载了一个模型&#xff0c;代码是&#xff0c; osg::Group* root new osg::Group(); osg::Node* node new osg::Node(); node osgDB::readNodeFile("tree.osg"); root->addChild(node); root是指向osg::Group的指针&#xff1b; node是 osg:…

[笔记] GICv3/v4 ITS 与 LPI

0. 写在前面 由于移植一个 pcie 设备驱动时&#xff0c;需要处理该 pcie 设备的 msi 中断(message signaled interrup)。 在 ARM 中&#xff0c; ARM 建议 msi 中断实现方式为&#xff1a; pcie 设备往 cpu 的一段特殊内存&#xff08;寄存器&#xff09;写某一个值&#xff0…

ASM-HEMT射频建模

关于ASM-HEMT RF模型 ASM-HEMT是指用于氮化镓高迁移率电子晶体管的先进SPICE模型。该模型于2018年由紧凑模型委员会&#xff08;CMC&#xff09;进行了标准化。 ASM-HEMT模型涵盖了氮化镓器件在射频&#xff08;RF&#xff09;和功率电子应用中的应用。模型手册提供了模型方程…

AI提示词入门教程

AI提示词的基本原则与技巧 文章目录 AI提示词的基本原则与技巧前言原则1&#xff1a; 尽可能保证下达的指令“清晰、没有歧义”使用分隔符清楚地指示输入地不同部分要求结构化地输出让模型检查是否满足条件少样本提示 原则2&#xff1a;给AI思考的时间&#xff0c;以及完成任务…

2.3_5 信号量机制

2.3_5 信号量机制 用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。 信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就…

【LLM 】7个基本的NLP模型,为ML应用程序赋能

在上一篇文章中&#xff0c;我们已经解释了什么是NLP及其在现实世界中的应用。在这篇文章中&#xff0c;我们将继续介绍NLP应用程序中使用的一些主要深度学习模型。 BERT 来自变压器的双向编码器表示&#xff08;BERT&#xff09;由Jacob Devlin在2018年的论文《BERT:用于语言…

前缀和算法 -- [模版]一维前缀和

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 本题链接 输入描述 输出描述 算法分析 算法一&#xff1a;暴力求解 算法二&#xff1a;前缀和 预处理前缀和dp表 使用前缀和dp表 解题源码 我们以一道题目为例详解一维前缀和原理。 本题链接 【模板】前缀和…

DICOM医学图像浏览器

各位医疗IT的小伙伴们大家好&#xff0c;近期打算换一份工作&#xff0c;于是利用业余时间&#xff0c;结合自己的所学&#xff0c;参考小蚂蚁的界面&#xff0c;编写了一款医学图像浏览器。 开发环境&#xff1a;vs2013、QT5.8、DCMTK3.6.7、VTK8.1.2、OpenCV2.4.10 下面简单…

【面向对象项目之图书馆管理系统】

项目需求 不同的用户有不同的菜单&#xff0c;然后进行操作。 设计思路 通过需求我们可以提取图书类&#xff0c;书架类 图书类存放图书的基本信息&#xff0c;书架类存放书本及其它的数量&#xff0c;以及操作图书的方法等等。接口类&#xff08;用来操作书架里面的图书&…

LeetCode74二分搜索优化:二维矩阵中的高效查找策略

题目描述 力扣地址 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&…

PE解释器之前期准备工作

一&#xff1a;什么是PE解释器 PE解释器通常指的是Portable Executable&#xff08;PE&#xff09;文件格式的解释器。PE是一种可执行文件和库文件的标准格式&#xff0c;主要用于32位和64位版本的Windows操作系统。PE文件包含程序的二进制代码、数据、资源以及与可执行文件相关…

RK3568平台 Android13 GKI架构开发方式

一.GKI简介 GKI&#xff1a;Generic Kernel Image 通用内核映像。 Android13 GMS和EDLA认证的一个难点是google强制要求要支持GKI。GKI通用内核映像&#xff0c;是google为了解决内核碎片化的问题&#xff0c;而设计的通过提供统一核心内核并将SoC和板级驱动从核心内核移至可加…