今天刚刚学会一点点,就写一点点吧
定义
弗里德曼(Friedman检验)检验即 “弗里德曼双向秩方差分析”,是多个(相关)样本齐一性的统计检验。 该方法是弗里德曼 (M.Friedman) 1973年提出的。相关介绍在百度上有详细介绍。百度上有详细介绍
通俗的来说,就是算出整个算法在与其比较的算法中的平均排名。
MATLAB函数
[p,q,d]=friedman(D);
[p,q,d]=friedman(D,n);
D为储存数据的矩阵假设为30×4;n本人估计是按矩阵D按行将D分为n等分;当n=1时,将D分为20行,为是第一种用法,且n必须为矩阵D的行数的倍数。第一种常用。
注:friedman是按列计算平均排名
话不多说,上实例
实例
D =
0.0915 0.0041 0.2541 0.0387
0.0076 0.0131 0.0593 0.0063
0.0035 0.0237 0.0149 0.0186
0.0173 0.0028 0.0131 0.0066
0.0294 0.0134 0.1815 0.0019
0.0016 0.0018 0.0252 0.0021
0.2159 0.0003 0.0725 0.0069
0.0198 0.0203 0.0950 0.0106
0.0224 0.0018 0.0863 0.0066
0.0439 0.0047 0.0075 0.0004
0.0991 0.0053 0.0118 0.0038
0.0607 0.0012 0.0119 0.0014
0.0524 0.0086 0.0477 0.0024
0.5601 0.0036 0.0066 0.0081
0.0494 0.0109 0.0050 0.0005
0.0408 0.0003 0.0955 0.0020
0.0063 0.0002 0.0634 0.0045
0.1111 0.0007 0.0945 0.0014
0.0229 0.0104 0.0177 0.0008
0.2637 0.0124 0.0217 0.1029
0.1176 0.0046 0.0894 0.0287
0.0404 0.0004 0.0637 0.0060
0.0207 0.0115 0.0039 0.0239
0.0605 0.0060 0.0323 0.0087
0.0186 0.0044 0.0145 0.0048
0.1266 0.0219 0.0152 0.0057
0.0971 0.0024 0.0467 0.0044
0.7799 0.0031 0.0308 0.0009
0.0122 0.0051 0.0344 0.0147
0.0080 0.0070 0.0343 0.0240
D为由四种优化算法在同一测试函数分别运行30次得到的最优值,现比较其平均排名
[p,q,d]=friedman(D)
p =
2.7719e-08
q =
4×6 cell 数组
{'来源'} {'SS' } {'df' } {'MS' } {'卡方' } {'p 值(卡方)' }
{'列' } {[63.4000]} {[ 3]} {[ 21.1333]} {[ 38.0400]} {[2.7719e-08]}
{'误差'} {[86.6000]} {[ 87]} {[ 0.9954]} {0×0 double} {0×0 double }
{'合计'} {[ 150]} {[119]} {0×0 double} {0×0 double} {0×0 double }
d =
包含以下字段的 struct:
source: 'friedman'
n: 30
meanranks: [3.3000 1.6333 3.1333 1.9333]
sigma: 1.2910
在d的struct的字段中,有meanranks,
如果不需要这个表的话下面代码可以关闭
[p,q,d]=friedman(D,1,off)
b=d.meanranks
b =
3.3000 1.6333 3.1333 1.9333
为对应的四种算法的平均排名
再套用函数
[~,vual]=sort(b)
vual =
2 4 3 1
由此可得第二种算法的性能排在第一位,第四种排在第二位,第三种算法排在第三位,第一种算法排在最后。
(本人较菜,代码得一个一个运算来理解,见谅!)
注:friedman是按列计算平均排名
若已有的数据需按行计算,转置矩阵D即可
在实际运用的还是发现一个问题
就是他这个排名不太好理解,笔者在运用时,突然发现不知道它这个比较是越小越好,还是越大越好,比如,
4 1 2 3
但是加一组参考或者最小数以后,
5 4 1 2 3
这个结果就与我认为的不太一样了,我需要的是最后一列的数排在第一,形成参照,其余的一次排名。
最后的结果才是小弟认为的平均排名呀,唉,累