在编制指标体系和数据分析时,需要从多个维度对多个评价对象进行综合评价时,可以考虑使用秩和比法。从实验数据来看,当评价对象较多时,结果会呈现较好的正态分布特征。

文章目录

  • 1. 背景介绍
  • 2. 设计思想
    • 2.1 优点
    • 2.1 缺点
  • 3. 计算步骤
    • 3.1 编秩
      • 3.1.1 整次秩和比法
      • 3.1.1 非整次秩和比法
    • 3.2 计算RSR
    • 3.3 评价对象分级
      • 3.3.1 确定RSR分布
      • 3.3.2 计算回归方程
      • 3.3.3 计算校正RSR值
      • 3.3.4 根据校正RSR分级
  • 4. 相关代码Python

1. 背景介绍

秩和比法(Rank-sum ratio,简称RSR法),是我国学者、原中国预防医学科学院田凤调教授于1988年提出的,集古典参数统计与近代非参数统计各自优点于一体的统计分析方法。

它不仅适用于四格表资料的综合评价,也适用于行×列表资料的综合评价,同时也适用于计量资料和分类资料的综合评价。

RSR法现在广泛地应用于医疗卫生、科技、经济等邻域的多指标综合评价、统计预测预报、鉴别分类、统计质量控制等方面。

2. 设计思想

使用数据大小的相对关系,对评价对象进行排名,根据排名的结果计算得到RSR。

一般过程是将效益型指标从小到大排序进行排名、成本型指标从大到小排序进行排名,再计算秩和比,最后统计回归、分档排序。通过秩转换,获得无量纲统计量RSR;

在此基础上,运用参数统计分析的概念与方法,研究RSR的分布;以RSR值对评价对象的优劣直接排序或分档排序,从而对评价对象做出综合评价。

2.1 优点

以非参数法为基础,对指标的选择无特殊要求,适用于各种评价对象,由于计算时使用的数值是秩次,可以消除异常值的干扰。

2.1 缺点

排序的主要依据是利用原始数据的秩次,最终算得的 RSR 值反映的是综合秩次的差距,而与原始数据的顺位间的差距程度大小无关,这样在指标转化为秩次是会失去一些原始数据的信息,如原始数据的大小差别等。

当 RSR 值实际上不满足正态分布时,分档归类的结果与实际情况会有偏差(根据中心极限定理,样本量大时会趋近于正态分布),且只能回答分级程度是否有差别,不能进一步回答具体的差别情况。

3. 计算步骤

此处计算步骤以基金投资案例说明,选取7个指标对基金投资进行评价。

其中X1,X2,X3为正向指标(效益型指标),值越大越好,排序时从小到大排。

​ X4,X5为负向指标(成本型指标),值越低越好,排序时从大到小排。

原始数据如下:

X1 X2 X3 X4 X5
1 34100 0.999091 0.98 0.971793 0.002727
2 22630 0.673973 0.673973 1 0
3 5766 0.774194 0.774194 0.993056 0
4 992 1 0.9375 0.71875 0.21875
5 13206 0.680751 0.664319 0.775862 0.00939
6 26319 0.831567 0.804476 0.805949 0.014134
7 45601 0.807614 0.7845 0.771886 0.004759
8 34007 0.836828 0.807657 0.899782 0.000912
9 34565 0.910314 0.896861 0.796059 0.006278
10 5735 1 1 1 0

3.1 编秩

编秩方法有整次秩和比法和非整次秩和比法。

3.1.1 整次秩和比法

将 n 个评价对象的 m 个评价指标排列成 n 行 m 列的原始数据表。编出每个指标各评价对象的秩,其中效益型指标从小到大编秩,成本型指标从大到小编秩,同一指标数据相同者编平均秩。

得到秩矩阵 R=(Rij)m×nR=\left ( R_{ij} \right )_{m \times n}R=(Rij​)m×n​

如下表:

  1. 对X2按从小到大排序,其中值为1的两个指标( R4,2R_{4,2}R4,2​, R10,1R_{10,1}R10,1​ ),按算术平均进行编秩:(9+10)/2=9.5
  2. 对X5按从大到小排序,其中值为0的三个指标,按算术平均进行编秩:(8+9+10)/3=9
X1 R1 X2 R2 X3 R3 X4 R4 X5 R5
1 34100 8 0.999091 8 0.98 9 0.971793 4 0.002727 6
2 22630 5 0.673973 1 0.673973 2 1 1.5 0 9
3 5766 3 0.774194 3 0.774194 3 0.993056 3 0 9
4 992 1 1 9.5 0.9375 8 0.71875 10 0.21875 1
5 13206 4 0.680751 2 0.664319 1 0.775862 8 0.00939 3
6 26319 6 0.831567 5 0.804476 5 0.805949 6 0.014134 2
7 45601 10 0.807614 4 0.7845 4 0.771886 9 0.004759 5
8 34007 7 0.836828 6 0.807657 6 0.899782 5 0.000912 7
9 34565 9 0.910314 7 0.896861 7 0.796059 7 0.006278 4
10 5735 2 1 9.5 1 10 1 1.5 0 9

3.1.1 非整次秩和比法

用类似于线性插值(也比较像优劣解距离法)的方式对指标值进行编秩,以改进 RSR 法编秩方法的不足,所编秩次与原指标值之间存在定量的线性对应关系,从而克服了 RSR 法秩次化时易损失原指标值定量信息的缺点。

  • 对于正向指标(效益型指标): Rij=1+(n−1)Xij−min(X1j,X2j,...,Xnj)max(X1j,X2j,...,Xnj)−min(X1j,X2j,...,Xnj)R_{ij}=1+\left ( n-1 \right )\frac{X_{ij}-min\left ( X_{1j},X_{2j},...,X_{nj} \right )}{max\left ( X_{1j},X_{2j},...,X_{nj} \right ) - min\left ( X_{1j},X_{2j},...,X_{nj} \right )}Rij​=1+(n−1)max(X1j​,X2j​,...,Xnj​)−min(X1j​,X2j​,...,Xnj​)Xij​−min(X1j​,X2j​,...,Xnj​)​
  • 对于负向指标(成本型指标): Rij=1+(n−1)max(X1j,X2j,...,Xnj)−Xijmax(X1j,X2j,...,Xnj)−min(X1j,X2j,...,Xnj)R_{ij}=1+\left ( n-1 \right )\frac{max\left ( X_{1j},X_{2j},...,X_{nj}\right ) - X_{ij}}{max\left ( X_{1j},X_{2j},...,X_{nj} \right ) - min\left ( X_{1j},X_{2j},...,X_{nj} \right )}Rij​=1+(n−1)max(X1j​,X2j​,...,Xnj​)−min(X1j​,X2j​,...,Xnj​)max(X1j​,X2j​,...,Xnj​)−Xij​​

3.2 计算RSR

将某对象的各秩乘以相应的权重并求和后,除以对象个数,得到该对象的RSR,公式: RSRi=1n∑j=1mωjRijRSR_{i} = \frac{1}{n}\sum_{j=1}^{m}\omega_{j}R_{ij}RSRi​=n1​∑j=1m​ωj​Rij​

其中,iii表示某个对象,jjj表示各指标的序号。

当各指标权重相同时,权重 ωj=1m\omega_{j}=\frac{1}{m}ωj​=m1​ ,RSR的计算可以简化为: RSRi=1mn∑j=1mRijRSR_{i} = \frac{1}{mn}\sum_{j=1}^{m}R_{ij}RSRi​=mn1​∑j=1m​Rij​

  • 本步骤计算得到的RSR,即可作为为各对象综合评价得分。
  • 有时我们不仅需要计算综合得分,还需要对评价对象进行分级,此时可以从正态分布的角度对各评价对象分级。

本例中使用整次秩和比法编秩,计算结果如下,如 RSR11=(8+8+9+4+6)/(5×10)=0.7RSR_{11}=\left (8+8+9+4+6 \right ) /(5 \times 10)=0.7RSR11​=(8+8+9+4+6)/(5×10)=0.7

X1 X2 X3 X4 X5 R1 R2 R3 R4 R5 RSR
1 34100 0.999091 0.980000 0.971793 0.002727 8 8 9 4 6 0.7
2 22630 0.673973 0.673973 1 0 5 1 2 1.5 9 0.37
3 5766 0.774194 0.774194 0.993056 0 3 3 3 3 9 0.42
4 992 1 0.937500 0.71875 0.21875 1 9.5 8 10 1 0.59
5 13206 0.680751 0.664319 0.775862 0.00939 4 2 1 8 3 0.36
6 26319 0.831567 0.804476 0.805949 0.014134 6 5 5 6 2 0.48
7 45601 0.807614 0.784500 0.771886 0.004759 10 4 4 9 5 0.64
8 34007 0.836828 0.807657 0.899782 0.000912 7 6 6 5 7 0.62
9 34565 0.910314 0.896861 0.796059 0.006278 9 7 7 7 4 0.68
10 5735 1 1.000000 1 0 2 9.5 10 1.5 9 0.64

3.3 评价对象分级

对RSR进行分布检验,确认分布之后通过分布的概率进行分级。主要步骤:

  1. 通过将RSR进行排序,并转为概率单位Probit
  2. 回归分析,计算出回归方程
  3. 将第1步的概率单位代入到第2步的回归方程,计算出校正RSR值
  4. 根据校正RSR值进行分级

3.3.1 确定RSR分布

确定RSR分布是指用概率单位Probit表达值的累计频率。Probit模型是一种广义的线性模型,服从正态分布。其转换步骤为:

  1. 编制RSR频数分布表,列出各组频数 fff ,计算各组累计频数 ∑f\sum f∑f
  2. 为各组RSR编秩
  3. 计算累计频率 Rˉ/n×100\bar R/n \times 100%Rˉ/n×100 ,最后一项使用 1−14n1-\frac{1}{4n}1−4n1​ 进行修正。(不修正的话,该值对应的Probit为无穷大,不能用于计算)
  4. 将累计频率换算为概率单位ProbitProbitProbit,Probit为累计频率对应的标准正态离差加5。(研究过程经常通过加5,使结果都为正数)

以上4个步骤为理论步骤,实际操作中可以简化为:

  1. 将RSR按从小到大进行排序,计算各RSR值的分位数,RSR值一样的分位数使用算术平均值法计算。(该分位数结果与上一方法中第3步一致)
  2. 将累计频率换算为概率单位Probit,Probit为累计频率对应的标准正态离差加5。换算时将分位数值为1的使用 1−14n1-\frac{1}{4n}1−4n1​ 进行修正。
X1 X2 X3 X4 X5 R1 R2 R3 R4 R5 RSR f Σf Rˉ/n\bar R/nRˉ/n Rˉ/n\bar R/nRˉ/n 修正 原Probit Probit
1 13206 0.680751 0.664319 0.775862 0.00939 4 2 1 8 3 0.36 1 1 0.1 0.1 -1.28155 3.718448
2 22630 0.673973 0.673973 1 0 5 1 2 1.5 9 0.37 1 2 0.2 0.2 -0.84162 4.158379
3 5766 0.774194 0.774194 0.993056 0 3 3 3 3 9 0.42 1 3 0.3 0.3 -0.5244 4.475599
4 26319 0.831567 0.804476 0.805949 0.014134 6 5 5 6 2 0.48 1 4 0.4 0.4 -0.25335 4.746653
5 992 1 0.937500 0.71875 0.21875 1 9.5 8 10 1 0.59 1 5 0.5 0.5 0 5
6 34007 0.836828 0.807657 0.899782 0.000912 7 6 6 5 7 0.62 1 6 0.6 0.6 0.253347 5.253347
7 45601 0.807614 0.784500 0.771886 0.004759 10 4 4 9 5 0.64 1 7.5 0.75 0.75 0.67449 5.67449
8 5735 1 1.000000 1 0 2 9.5 10 1.5 9 0.64 1 7.5 0.75 0.75 0.67449 5.67449
9 34565 0.910314 0.896861 0.796059 0.006278 9 7 7 7 4 0.68 1 9 0.9 0.9 1.281552 6.281552
10 34100 0.999091 0.980000 0.971793 0.002727 8 8 9 4 6 0.7 1 10 1 0.975 1.959964 6.959964

3.3.2 计算回归方程

  1. 通过QQ图的方式对数据进行正态性检验。以累积频率所对应的概率单位Probit为自变量,RSR值为因变量,计算直线回归方程: RSR=a+b×ProbitRSR=a+b \times ProbitRSR=a+b×Probit
  2. 计算出回归方程之后,需要进行校验,主要包括:残差独立性检验、方差齐性检验、回归系数有效性检验、拟合优度检验

​ 此处的校验R-squared和Adj. R-squared值并不高,因为数据做了截取。在真实数据中这两项的值都超过了0.99

3.3.3 计算校正RSR值

将Probit代入回归方程,计算出校正RSR值

X1 X2 X3 X4 X5 R1 R2 R3 R4 R5 RSR f Σf R/n R/n’ Probit Probit’ regression
1 13206 0.680751 0.664319 0.775862 0.00939 4 2 1 8 3 0.36 1 1 0.1 0.1 -1.28155 3.718448 0.368154
2 22630 0.673973 0.673973 1 0 5 1 2 1.5 9 0.37 1 2 0.2 0.2 -0.84162 4.158379 0.42236
3 5766 0.774194 0.774194 0.993056 0 3 3 3 3 9 0.42 1 3 0.3 0.3 -0.5244 4.475599 0.461446
4 26319 0.831567 0.804476 0.805949 0.014134 6 5 5 6 2 0.48 1 4 0.4 0.4 -0.25335 4.746653 0.494844
5 992 1 0.937500 0.71875 0.21875 1 9.5 8 10 1 0.59 1 5 0.5 0.5 0 5 0.52606
6 34007 0.836828 0.807657 0.899782 0.000912 7 6 6 5 7 0.62 1 6 0.6 0.6 0.253347 5.253347 0.557276
7 45601 0.807614 0.784500 0.771886 0.004759 10 4 4 9 5 0.64 1 7.5 0.75 0.75 0.67449 5.67449 0.609168
8 5735 1 1.000000 1 0 2 9.5 10 1.5 9 0.64 1 7.5 0.75 0.75 0.67449 5.67449 0.609168
9 34565 0.910314 0.896861 0.796059 0.006278 9 7 7 7 4 0.68 1 9 0.9 0.9 1.281552 6.281552 0.683967
10 34100 0.999091 0.980000 0.971793 0.002727 8 8 9 4 6 0.7 1 10 1 0.975 1.959964 6.959964 0.767558

3.3.4 根据校正RSR分级

在分级时可以按照合理拍档或最佳拍档原则进行分级。本例中将40%以下的作为C等,80%以下的作为B等,其余的作为A等。40%,80%对应的就是正态分布函数的累计概率(面积)。

注:其实在实际操作中,level分类时,直接使用regression的分位数得到的效果也是一样的,而且操作起来更简单。

X1 X2 X3 X4 X5 R1 R2 R3 R4 R5 RSR f Σf R/n R/n’ Probit Probit’ regression level
1 13206 0.680751 0.664319 0.775862 0.00939 4 2 1 8 3 0.36 1 1 0.1 0.1 -1.28155 3.718448 0.368154 C
2 22630 0.673973 0.673973 1 0 5 1 2 1.5 9 0.37 1 2 0.2 0.2 -0.84162 4.158379 0.42236 C
3 5766 0.774194 0.774194 0.993056 0 3 3 3 3 9 0.42 1 3 0.3 0.3 -0.5244 4.475599 0.461446 C
4 26319 0.831567 0.804476 0.805949 0.014134 6 5 5 6 2 0.48 1 4 0.4 0.4 -0.25335 4.746653 0.494844 C
5 992 1 0.937500 0.71875 0.21875 1 9.5 8 10 1 0.59 1 5 0.5 0.5 0 5 0.52606 B
6 34007 0.836828 0.807657 0.899782 0.000912 7 6 6 5 7 0.62 1 6 0.6 0.6 0.253347 5.253347 0.557276 B
7 45601 0.807614 0.784500 0.771886 0.004759 10 4 4 9 5 0.64 1 7.5 0.75 0.75 0.67449 5.67449 0.609168 B
8 5735 1 1.000000 1 0 2 9.5 10 1.5 9 0.64 1 7.5 0.75 0.75 0.67449 5.67449 0.609168 B
9 34565 0.910314 0.896861 0.796059 0.006278 9 7 7 7 4 0.68 1 9 0.9 0.9 1.281552 6.281552 0.683967 A
10 34100 0.999091 0.980000 0.971793 0.002727 8 8 9 4 6 0.7 1 10 1 0.975 1.959964 6.959964 0.767558 A

4. 相关代码Python

import pandas as pd
import statsmodels.api as sm
from warnings import simplefilter
from scipy.stats import normdf = pd.DataFrame([[34100, 0.999091, 0.98, 0.971793, 0.002727],[22630, 0.673973, 0.673973, 1, 0],[5766, 0.774194, 0.774194, 0.993056, 0],[992, 1, 0.9375, 0.71875, 0.21875],[13206, 0.680751, 0.664319, 0.775862, 0.00939],[26319, 0.831567, 0.804476, 0.805949, 0.014134],[45601, 0.807614, 0.7845, 0.771886, 0.004759],[34007, 0.836828, 0.807657, 0.899782, 0.000912],[34565, 0.910314, 0.896861, 0.796059, 0.006278],[5735, 1, 1, 1, 0]
], columns=["X1", "X2", "X3", "X4", "X5"])
# 正向指标,从小到大排序
df["R1"] = df["X1"].rank(ascending=True, method="average")
df["R2"] = df["X2"].rank(ascending=True, method="average")
df["R3"] = df["X3"].rank(ascending=True, method="average")
# 负向指标,从大到小排
df["R4"] = df["X4"].rank(ascending=False, method="average")
df["R5"] = df["X5"].rank(ascending=False, method="average")
# 计算RSR值
df["RSR"] = df.loc[:, ["R1", "R2", "R3", "R4", "R5"]].sum(axis=1) / (5 * 10)
# 排序
df.sort_values(by="RSR", inplace=True)
# 因为实际数据没有重复,此处偷懒,直接写1
df["f"] = 1
df["Σf"] = df["RSR"].rank(method="average")
df["R/n"] = df["Σf"] / len(df)
df["R/n'"] = df["R/n"]
df.iat[-1, -1] = 1 - 1 / 4 / len(df)df["Probit"] = norm.ppf(df["R/n'"])
df["Probit'"] = df["Probit"] + 5
import numpy as npr0 = np.polyfit(df["Probit'"], df["RSR"], deg=1)
if r0[1] > 0:print(f"\n回归直线方程为:y = {r0[0]} Probit + {r0[1]}")
else:print(f"\n回归直线方程为:y = {r0[0]} Probit - {abs(r0[1])}")simplefilter(action="ignore", category=FutureWarning)
simplefilter(action="ignore", category=UserWarning)
print(sm.OLS(df["Probit"], sm.add_constant(df["RSR"])).fit().summary())
df["regression"] = np.polyval(r0, df["Probit'"])C_LEVEL = norm.ppf(0.4) + 5
B_LEVEL = norm.ppf(0.8) + 5
A_LEVEL = 10threshold = np.polyval(r0, [0, C_LEVEL, B_LEVEL, A_LEVEL])
print("threshold:", threshold)
df["level"] = pd.cut(df["regression"], threshold, labels=["C", "B", "A"])
df["regression_pct"] = df["regression"].rank(pct=True, ascending=True, method="average")
# 设置pandas打印时显示的列数
pd.set_option("display.max_columns", 1000)
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 1000)
print(df)

综合评价法之秩和比法(RSR)相关推荐

  1. 基于信息熵确立权重的topsis法_一种基于加权秩和比法的光伏并网逆变器多性能指标评价方法研究...

    电能质量测试周马上就要开始,在各位粉丝阅读本篇推文之前,你的评论多少赞了?想要奖品的粉丝可得抓紧时间,活动截止之前都还有机会哦.点击下方链接赶快留言点赞吧! 电能质量测试周,让数据说话 作者:郑陆海  ...

  2. Python综合评价模型(三)秩和比法

    文章目录 第一步 导入第三方库和案例数据 第二步 标准化数据 第三步 编秩 第四步 计算秩和比 方式1 计算秩的简单平均(评价指标权重相等) 方式2 计算秩的加权平均(评价指标权重不等) 第五步 导出 ...

  3. Python综合评价模型(四)主成分分析法

    文章目录 第一步 导入第三方库和案例数据 第二步 标准化数据 第三步 训练模型 第四步 计算主成分个数 方式1 按特征值计算主成分个数 方式2 按累积贡献率计算主成分个数 第五步 计算主成分系数 第六 ...

  4. 综合评价分析法:熵权法matlab实现+层次分析法matlab实现

    综合评价分析法:熵权法matlab实现+层次分析法matlab实现 层次分析法matlab实现 clc;clear%层次分析法matlab实现A=[1 1/9 1/2 1/4 1/6 9 1 6 5 ...

  5. 嫡权法赋权法_变异系数法_客观赋权法

    什么是变异系数,有何优势? 变异系数:当需要比较两组数据离散程度大小的时候,如果两组数据的测量尺度相差太大,或者数据量纲的不同,直接使用标准差来进行比较不合适,此时就应当消除测量尺度和量纲的影响,而变 ...

  6. 灰色关联投影法python_灰色关联投影法(讲座).doc

    灰色关联投影法(讲座) 综合评价的多目标决策灰色关联投影法 一. 综合评价法 综合评价法(Comprehensive Evaluation Method) 是指运用多个指标对多个参评对象(单位)进行评 ...

  7. 有限单元法基本原理和数值方法_SPH法介绍

    SPH法介绍 Smoothed Particle Hydrodynamics 基于网格的数值方法虽然已经有广泛的应用,但是在很多方面仍存在不足之处,比如在计算流体动力学的大变形.运动物质交界面.自由表 ...

  8. 机器学习数据预处理之离群值/异常值:MAD法(绝对值差中位数法)+绝对中位差(Median Absolute Deviation,MAD)

    机器学习数据预处理之离群值/异常值:MAD法(绝对值差中位数法)+绝对中位差(Median Absolute Deviation,MAD) garbage in,garbage out. 异常值是分析 ...

  9. 特征选择过滤法之方差选择、双样本t检验、方差分析、相关系数法、卡方检验、互信息法

    特征选择过滤法之方差选择.双样本t检验.方差分析.相关系数法.卡方检验.互信息法 目录

  10. 费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升

    费曼学习法与孔子温故知新学习法为两大重要学习法,前者外向表现,后者内省提升 附前者链接 https://blog.csdn.net/wo541075754/article/details/101554 ...

最新文章

  1. js 动态加载select触发事件
  2. r语言glmnet包系数显示不全_第一章: R语言介绍
  3. winform mysql 工具类_C#工具类MySqlHelper,基于MySql.Data.MySqlClient封装
  4. 机器学习笔记十一之降维
  5. 解决php上传文件过程中Warning move_uploaded_file, failed to open stream的解决方案
  6. 【彩彩只能变身队】用户需求分析(一)—— 调查问卷
  7. 解决python ConfigParser文件编码问题(按指定格式存储文件(txt))
  8. 腾讯校园招聘笔试 2019-8-17 第四题 另一种解法
  9. 管理感悟:复制代码是错误行为
  10. 最通俗易懂的适配器模式
  11. 如何才能找到好用的ip软件呢,或者下载ip软件
  12. #开源的ZYNQ+AD936X SDR软件无线电
  13. JavaScript——用键盘wasd控制div移动
  14. 单位负反馈图_负反馈的魔力
  15. 硬件设计丨什么是硬件工程师?
  16. PHP程序员必看书籍
  17. 旷视首席科学家孙剑:10年扎在书堆里,13年磨砺成首席
  18. CentOS6.5挂载大于2TB的磁盘使用parted和GPT类型
  19. (19)zabbix Applications使用介绍
  20. 第三方注解框架,黄牛刀.使用步骤和方法

热门文章

  1. Oracle数据库 查询所有表
  2. HP打印机自动双面打印故障排除
  3. JAVA微信小程序论坛系统毕业设计 开题报告
  4. linux eclipse 字体,linux下eclipse字体的调整
  5. msi b460m pro wifi黑苹果 efi
  6. mdl文件是c语言,MDL文件扩展名 - 什么是.mdl以及如何打开? - ReviverSoft
  7. 设计模式 GOF23 模式比较
  8. 兄弟9150cdn换硒鼓清零抹粉_兄弟打印机粉盒硒鼓怎么清零?这里有详细的步骤...
  9. Ubuntu17.10下安装TIM
  10. linux字符串替换命令,Linux系统字符串替换命令详细说明