秩和比综合评价法(RSR)详解及Python实现和应用
前言
秩和比綜合評價法是量化分析數學建模最常用的評價模型之一,在參與數學建模的一些比賽中出現過頻數較多的評價系統或是政策影響因素等級排序等相關主題,該模型很夠很好的建立評價系統,在多篇國賽美賽優秀論文中都出現過其身影。本篇博客的愿景是希望我或者讀者通過閱讀這篇博客能夠學會RSR方法并能實際運用,而且能夠記錄到你的思想之中。當然個人不是數學專業對一些專業性的知識可能不是很了解,希望讀者看完能夠提出錯誤或者看法,博主會長期維護博客做及時更新。純分享,希望大家喜歡。
一、RSR秩和比綜合評價法概述
秩和比(Rank-sum ratio,RSR)法,它是一組全新的統計信息分析方法,是數量方法中一種廣譜的方法,針對性強,操作簡便,使用效果明顯。非常適合于醫學背景的廣大用戶。本法從理論上講,融古典的參數統計與近代的非參數統計于一體,兼及描述性與推斷性。該法經過二十余年的發展,在廣大學者的共同支持和努力下,此法已日漸完善,廣泛地應用于醫療衛生領域的多指標綜合評價、統計預測預報、統計質量控制等方面。
一般過程是將效益型指標從小到大排序進行排名、成本型指標從大到小排序進行排名,再計算秩和比,最后統計回歸、分檔排序。通過秩轉換,獲得無量綱統計量RSR;在此基礎上,運用參數統計分析的概念與方法,研究RSR的分布;以RSR值對評價對象的優劣直接排序或分檔排序,從而對評價對象做出綜合評價。
二、設計思想
設計思想:算得的RSR越大越好,為此,指標編秩時要嚴格區分高優與低優。
一般說來,編秩是不難的。例如治療有效率、診斷符合率等可視為高優指標;發病率、住院病死率、平均住院日等可視為低優指標。編秩時,還可參照指標間相關分析和參照指定的“標準”。例如基于某省10個地區的產前檢查率 ,孕婦死亡率,圍產兒死亡率進行綜合評價在綜合評價中,秩和比的值能夠包含所有評價指標的信息,顯示出這些評價指標的綜合水平,RSR值越大表明綜合評價越優。
但有時還需實事求是地加以限定.例如病床利用率、平均病床周轉次數一般可作高優指標理解,但過高也不見得是好事。
除區分高優指標與低優指標外,有時還要運用不分高優與低優及其種種組合形式,例如在療效評價中,微效率可視為偏高優(高優與不分的均數),不變率可視為稍低優(偏低優與“不分”的均數)。總之,編秩的技巧問題要從業務出發來合理地解決。綜合評價的方法一般是主客觀結合的,方法的選擇需基于實際指標數據情況選定,最為關鍵的是指標的選取,以及指標權重的設置,這些需要基于廣泛的調研和扎實的業務知識,不能說單純的從數學上解決的。
三、RSR的特點以及應用范圍
1.優點
2.缺點
3.應用范圍
綜合評價的應用領域和范圍非常廣泛。
四、實現步驟
1.指標權重計算
進行結果評定時我們知道影響因素的權重大小都是不一致的,我們需要先計算出各個指標的權重再進行加權秩和比,不然各個指標之間的信息差就沒有意義。
計算指標權重的方法有AHP、熵權法或是自定義權重,筆者均寫過AHP和熵權法、若不清楚可以閱覽:層次分析法(AHP)原理以及應用
一文速學-熵權法實戰確定評價指標權重
這里采用熵權法演示,且文可接熵權法演示實驗,實驗數據均相同,這里熵權法原理不作解釋,想要了解可以看我之前的博客。
數據為港口數據開發能力系統指標:
import numpy as np import pandas as pd df1=pd.read_excel(r'D:\擬定指標test1.xlsx') data1=df1.iloc[:,1:7] #min-max標準化 data1_std=(data1-data1.min())/(data1.max()-data1.min()) m,n=data1_std.shape data1_value=data1_std.values k=1/np.log(m) yij=data1_value.sum(axis=0) #計算第j項指標下第i個樣本值占比重: pij=data1_value/yij #計算各指標的信息熵: test=pij*np.log(pij) test=np.nan_to_num(test) ej=-k*(test.sum(axis=0)) #計算每種指標的權重 wi=(1-ej)/np.sum(1-ej)?得到各個指標的權重:
?2.編秩
根據每一個具體的評價指標按其指標值的大小進行排序,得到秩次R,用秩次R來代替原來的評價指標值。
編秩方法總共有兩種:
1.整秩法
將 n 個評價對象的 m 個評價指標排列成 n 行 m 列的原始數據表。編出每個指標各評價對象的秩,其中效益型指標(可以理解為正向指標)從小到大編秩,成本型指標(可理解為負向指標)從大到小編秩,同一指標數據相同者編平均秩。得到秩矩陣R;
2.非整秩法
此方法用類似于線性插值的方式對指標值進行編秩,以改進 RSR 法編秩方法的不足,所編秩次與原指標值之間存在定量的線性對應關系,從而克服了 RSR 法秩次化時易損失原指標值定量信息的缺點。
對于效益型指標:
?對于成本型指標:
這里采用整秩法:
R_result=pd.DataFrame() for i, X in enumerate(data1_std.columns):R_result[f'X{str(i + 1)}:{X}'] = data1_std.iloc[:, i]R_result[f'R{str(i + 1)}:{X}'] = R_result.iloc[:, i].rank(method="dense")3.計算秩和比RSR值
一個行列的矩陣中,其對應的RSR計算公式為:
其中;,表示為第行第列元素的秩。
當個評價指標的權重不同時,計算加權秩和比為
表示第第個指標的權重。RSR值無量綱,最小值為,最大值為1.
# 計算秩和比 R_result['RSR'] = (R_result.iloc[:, 1::2] * wi).sum(axis=1) / n R_result['RSR_Rank'] = R_result['RSR'].rank(ascending=False)4.繪制秩和比RSR分布表
其方法為:
● 將RSR值按照從小到大的順序排列;
● 列出各組頻數;
● 計算各組累計頻數;
● 確定各組RSR的秩次R及平均秩次 ;
● 計算向下累計頻率 , 最后一項用 修正;
● 根據累計頻率,查詢“百分數與概率單位對照表”,求其所對應概率單位 Probit 值;
● 利用表格中的RSR分布值作為自變量,Probit值作為因變量,進行線性回歸,結果如下表格。
● 百分比與概率單位對照表 - 豆丁網
#繪制RSR分布表 RSR=R_result['RSR'] RSR_RANK_DICT = dict(zip(RSR.values, RSR.rank().values)) Distribution = pd.DataFrame(index=sorted(RSR.unique())) Distribution['f'] = RSR.value_counts().sort_index() Distribution['Σf'] = Distribution['f'].cumsum() Distribution[r'平均秩數'] = [RSR_RANK_DICT[i] for i in Distribution.index] Distribution[r'平均秩數/n*100%'] = Distribution[r'平均秩數'] / m Distribution.iat[-1, -1] = 1 - 1 / (4 * n) Distribution['Probit'] = 5 - norm.isf(Distribution.iloc[:, -1])?5.回歸分析
上一步得到Probit值之后,將其作為自變量X,將RSR分布值作為因變量Y;進行回歸模型擬合,并結合此回歸模型公式得到各個地區RSR值的擬合值,用于最終的分檔排序等使用。
r0 = np.polyfit(Distribution['Probit'], Distribution.index, deg=1) sm.OLS(Distribution.index, sm.add_constant(Distribution['Probit'])).fit().summary()?6.分檔
按照回歸方程推算所對應的RSR估計值對評價對象進行分檔排序,分檔數由研究者根據實際情況決定。??
● 通過RSR擬合值,以及上一表格中的RSR臨界(擬合值)進行區間比較,進而得到分檔等級水平;
● 分檔等級Level數字越大表示等級水平越高,即效應越好。
R_result['Probit'] = R_result['RSR'].apply(lambda item: Distribution.at[item, 'Probit']) R_result['RSR Regression'] = np.polyval(r0, R_result['Probit']) threshold=None threshold = np.polyval(r0, [2, 4, 6, 8,10]) if threshold is None else np.polyval(r0, threshold) R_result['Level'] = pd.cut(R_result['RSR Regression'],threshold, labels=range(len(threshold) - 1, 0, -1)) R_result?
參閱:
RSR(秩和比綜合評價法)介紹及python3實現
綜合評價方法之秩和比法(RSR)
總結
以上是生活随笔為你收集整理的秩和比综合评价法(RSR)详解及Python实现和应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springdata elasticse
- 下一篇: python秩和比综合评价代码记录