9  秩和比法

秩和比法(Rank-sum ratio,RSR)由田凤调教授于 1988 年提出,集古典参数统计与近代非参数统计各自优点于一体的统计分析方法。RSR 法现在广泛地应用于医疗卫生、科技、经济等邻域的多指标综合评价、统计预测预报、鉴别分类、统计质量控制等方面。

RSR 一般过程是将正向指标从小到大排序进行排名、负向指标从大到小排序进行排名,再计算秩和比,最后统计回归、分档排序。通过秩转换,获得无量纲统计量 RSR;在此基础上,运用参数统计分析的概念与方法,研究 RSR 的分布;以 RSR 值对评价对象的优劣直接排序或分档排序,从而对评价对象做出综合评价。

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

缺点:排序的主要依据是利用原始数据的秩次,最终算得的 RSR 值反映的是综合秩次的差距,而与原始数据的顺位间的差距程度大小无关,这样在指标转化为秩次是会失去一些原始数据的信息,如原始数据的大小差别等。当 RSR 值实际上不满足正态分布时,分档归类的结果与实际情况会有偏差,且只能回答分级程度是否有差别,不能进一步回答具体的差别情况。

RSR 法本质

RSR 只使用了数据的相对大小关系,而不真正运用数值本身,也能用于处理“好”、“较好”、“一般”这类模糊指标问题。只要选择恰当的权重,RSR 法也能转化为模糊综合评价。

实际上,只要确定了权重,编好了秩,原始样本的排序就结束了,但是 RSR 综合评价法再进行了统计回归、分档排序,这一步实际上是通过将样本的秩次分布映射到正态分布曲线上,运用正态分布 \(3 \sigma\) 原则或其它连续变量离散化方法进行分档。

9.1 算法步骤

设有 \(n\) 个评价对象,\(m\) 个评价指标,形成原始指标数据矩阵 \(X\),其中 \(x_{ij}\) 表示第 \(i\) 个评价对象第 \(j\) 个指标的值。

9.1.1 编秩

整数秩

编出每个指标各评价对象的秩,其中正向指标从小到大编秩,负向指标从大到小编秩,同一指标数据相同者编平均秩。例如,某指标下第 3、4、5 名的值相同(原始应占秩次 3, 4, 5),则它们的秩次均为 \((3+4+5) / 3 = 4\)。下一个不同的值则编为秩次 6。

非整数秩

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

对于正向指标: \[ R_{ij}=1+(n-1)\dfrac{x_{ij}-\min\limits_i x_{ij}}{\max\limits_i x_{ij}-\min\limits_i x_{ij}} \]

对于负向指标: \[ R_{ij}=1+(n-1)\dfrac{\max\limits_i x_{ij}-x_{ij}}{\max\limits_i x_{ij}-\min\limits_i x_{ij}} \]

非整数秩是将传统整数排名(如1, 2, 3, …)推广到连续区间的一种方法,其核心在于根据评价对象在数据中的相对位置,赋予其介于 \(1\)\(n\) 之间的实数值,而非简单的整数秩次,从而更精细地刻画排名信息。该方法本质上是对原始数据进行线性归一化到 \([1,n]\) (即线性插值处理),使排名由跳跃式的离散值转变为反映个体间细微差异的连续变量,提升综合评价的灵敏度与准确性。

该步得到秩矩阵,记为 \(R=(R_{ij})_{m\times n}\)

9.1.2 计算秩和比并排序

秩和比 \(RSR_i\) 定义为第 \(i\) 个评价对象在所有 \(n\) 个指标下的秩和相对于最大可能秩次(为 \(n\) )的比例: \[ RSR_i=\frac{1}{n}\sum^m_{j=1}w_jR_{ij} \] 其中,\(w_j\) 为第 \(j\) 个指标的权重,满足 \(\sum_j=1^m w_j=1\)

当指标权重相同时,\(w_j\equiv\frac1m\),此时秩和比可以表示为: \[ RSR_i=\frac{1}{mn}\sum^m_{j=1}R_{ij} \]

9.1.3 确定 RSR 的分布(转化为概率单位)

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

  1. 编制 RSR 频数分布表,列出各组频数 \(f_i\),计算各组累计频数 \(cf_i\)
  2. 确定各组 RSR 的秩次范围及平均秩次;
  3. 计算累计频率 \(p_i=cf_i/n\times100\%\),最后一项记为 \(1-\frac1{4n}\) 进行修正。(使用离散分布作为正态分布的近似计算中,作些修正可以提高精度。这里若不做修正,得到的 \(Probit\to\infty\),不能用于计算)
  4. 将累计频率换算为概率单位 \(\mathrm{Probit}_i\),为累计频率对应的标准正态分布的 \(p_i\) 分位数加 \(5\)。|

9.1.4 拟合线性回归模型,计算模型估计值

以累积频率所对应的概率单位 Probit 为自变量,以 RSR 值为因变量,计算直线回归方程,即: \[ RSR = a+b * Probit \]

回归方程需要做常规的回归诊断保证模型可用(略)。

计算线性回归模型的预测值: \[ RSRfit_i = a + b * \text{Probit}_i \]

9.1.5 进行分档排序

根据 \(RSRfit_i\) 值对评价对象进行分档排序,分档数由研究者根据实际情况决定。

分档排序,实际上就是连续数值离散化,有很多种方法,只要合理就行。

9.2 案例:孕产妇保健评价

加载包:

library(tidyverse)
library(mathmodels)

9.2.1 准备数据

对某省 \(10\) 个地区孕产妇保健工作就 \(3\) 个指标(产前检查率(\(\%\))、 孕妇死亡率(\(1/10\)万)、围产儿死亡率(\(\%\))),进行秩和比综合评价。

df = tibble(
  ID = LETTERS[1:10],
  x1 = c(99.54,96.52,99.36,92.83,91.71,95.35,96.09,99.27,94.76,84.80),
  x2 = c(60.27,59.67,43.91,58.99,35.40,44.71,49.81,31.69,22.91,81.49),
  x3 = c(16.15,20.10,15.60,17.04,15.01,13.93,17.43,13.89,19.87,23.63))
df
# A tibble: 10 × 4
   ID       x1    x2    x3
   <chr> <dbl> <dbl> <dbl>
 1 A      99.5  60.3  16.2
 2 B      96.5  59.7  20.1
 3 C      99.4  43.9  15.6
 4 D      92.8  59.0  17.0
 5 E      91.7  35.4  15.0
 6 F      95.4  44.7  13.9
 7 G      96.1  49.8  17.4
 8 H      99.3  31.7  13.9
 9 I      94.8  22.9  19.9
10 J      84.8  81.5  23.6

数据预处理,x2x3 是负向指标,取倒数即可(不影响编秩):

df1 = df |> 
  mutate(across(x2:x3, \(x) 1 / x))
df1
# A tibble: 10 × 4
   ID       x1     x2     x3
   <chr> <dbl>  <dbl>  <dbl>
 1 A      99.5 0.0166 0.0619
 2 B      96.5 0.0168 0.0498
 3 C      99.4 0.0228 0.0641
 4 D      92.8 0.0170 0.0587
 5 E      91.7 0.0282 0.0666
 6 F      95.4 0.0224 0.0718
 7 G      96.1 0.0201 0.0574
 8 H      99.3 0.0316 0.0720
 9 I      94.8 0.0436 0.0503
10 J      84.8 0.0123 0.0423

9.2.2 秩和比法评价

mathmodels 包提供了 rank_sum_ratio() 函数实现用秩和比法综合评价,基本语法:

rank_sum_ratio(data, w = NULL, method = "int")
  • data 为原始指标数据,首列为评价对象 ID;
  • w 为指标权重,可以通过各种赋权法得到,默认是等权重;
  • method 设置编整数秩("int")还是非整数秩("non-int") 。

9.2.3 重现经典案例结果

采用等指标权重、编整数秩:

res = rank_sum_ratio(df1)  
  • 查看结果表(包含中间结果):
res$resultTable
# A tibble: 10 × 8
   ID      RSR  barR     f  sumf barRn Probit RSRfit
   <chr> <dbl> <dbl> <int> <int> <dbl>  <dbl>  <dbl>
 1 J     0.1     1       1     1 0.1     3.72  0.216
 2 B     0.4     2.5     2     3 0.25    4.33  0.350
 3 D     0.4     2.5     2     3 0.25    4.33  0.350
 4 G     0.5     4       1     4 0.4     4.75  0.444
 5 I     0.567   5       1     5 0.5     5     0.500
 6 A     0.6     6.5     2     7 0.65    5.39  0.585
 7 E     0.6     6.5     2     7 0.65    5.39  0.585
 8 F     0.667   8       1     8 0.8     5.84  0.686
 9 C     0.767   9       1     9 0.9     6.28  0.784
10 H     0.9    10       1    10 0.975   6.96  0.934
  • 查看编秩结果:
res$rankTable
# A tibble: 10 × 4
   ID       x1    x2    x3
   <chr> <dbl> <dbl> <dbl>
 1 A        10     2     6
 2 B         7     3     2
 3 C         9     7     7
 4 D         3     4     5
 5 E         2     8     8
 6 F         5     6     9
 7 G         6     5     4
 8 H         8     9    10
 9 I         4    10     3
10 J         1     1     1
  • 查看线性回归模型结果:
res$reg |> summary()

Call:
lm(formula = RSR ~ Probit, data = rltTable)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.115792 -0.023458 -0.001329  0.051288  0.066768 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.60855    0.12516  -4.862  0.00282 ** 
Probit       0.22169    0.02329   9.520 7.66e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.0653 on 6 degrees of freedom
Multiple R-squared:  0.9379,    Adjusted R-squared:  0.9276 
F-statistic: 90.63 on 1 and 6 DF,  p-value: 7.662e-05

可以进一步提取回归模型的各种结果(略)。

9.2.4 更一般做法

  • 指标权重采用熵权法,注意应该根据原始数据计算:
rlt = entropy_weight(df[-1], c("+","-","-"))
rlt$w
       x1        x2        x3 
0.2945205 0.3631078 0.3423717 
  • 采用非整数秩,注意,此时负向指标正向化处理更适合采用”最大值减”而不是”取倒数”:
df2 = df |>
  mutate(across(x2:x3, \(x) max(x) - x))
res = rank_sum_ratio(df2, rlt$w, "non-int")
df2
# A tibble: 10 × 4
   ID       x1    x2    x3
   <chr> <dbl> <dbl> <dbl>
 1 A      99.5  21.2  7.48
 2 B      96.5  21.8  3.53
 3 C      99.4  37.6  8.03
 4 D      92.8  22.5  6.59
 5 E      91.7  46.1  8.62
 6 F      95.4  36.8  9.7 
 7 G      96.1  31.7  6.2 
 8 H      99.3  49.8  9.74
 9 I      94.8  58.6  3.76
10 J      84.8   0    0   
  • 查看结果表:
res$resultTable
# A tibble: 10 × 8
   ID      RSR  barR     f  sumf barRn Probit RSRfit
   <chr> <dbl> <dbl> <int> <int> <dbl>  <dbl>  <dbl>
 1 J     0.1       1     1     1 0.1     3.72  0.366
 2 B     0.544     2     1     2 0.2     4.16  0.456
 3 D     0.578     3     1     3 0.3     4.48  0.521
 4 G     0.676     4     1     4 0.4     4.75  0.576
 5 A     0.720     5     1     5 0.5     5     0.627
 6 I     0.725     6     1     6 0.6     5.25  0.679
 7 E     0.754     7     1     7 0.7     5.52  0.734
 8 F     0.802     8     1     8 0.8     5.84  0.798
 9 C     0.826     9     1     9 0.9     6.28  0.888
10 H     0.946    10     1    10 0.975   6.96  1.03 

其它结果略。