收稿日期:2023-06-04
基金項(xiàng)目:2022年浙江省中華職業(yè)教育科研項(xiàng)目立項(xiàng)課題(ZJCV2022C37)
DOI:10.19850/j.cnki.2096-4706.2023.21.044
摘" 要:樣本若無(wú)重復(fù)數(shù)據(jù)時(shí),計(jì)算Spearman秩相關(guān)系數(shù)的程序比較容易設(shè)計(jì)。如果樣本出現(xiàn)重復(fù)數(shù)據(jù)時(shí),則可以從樣本數(shù)據(jù)的結(jié)、秩平均值等概念出發(fā)設(shè)計(jì)程序;此時(shí),既要考慮不重復(fù)數(shù)據(jù)的秩,也要考慮對(duì)重復(fù)數(shù)據(jù)秩平均值的確定。該課題基于清華大學(xué)王星教授給出的數(shù)據(jù)結(jié)、秩平均值定義,設(shè)計(jì)Spearman秩相關(guān)系數(shù)的計(jì)算程序,并在實(shí)證分析中運(yùn)用,操作簡(jiǎn)便易行。
關(guān)鍵詞:Spearman秩相關(guān)系數(shù);秩平均值;程序設(shè)計(jì);案例應(yīng)用
中圖分類號(hào):TP391" 文獻(xiàn)標(biāo)識(shí)碼:A" 文章編號(hào):2096-4706(2023)21-0195-04
Python Program Design and Application of Spearman Rank Correlation Coefficient
—Empirical Analysis of the Correlation between Book Reading and Tacit Knowledge Acquisition Ability
ZHANG Chigeng
(Jiaxing Vocational and Technical College, Jiaxing" 314036, China)
Abstract: If there is no duplicate data in the sample, the program for calculating Spearman rank correlation coefficient is easier to design. If there is duplicate data in the sample, the program can be designed from the concepts of knot and rank average of the sample data. At this time, we should consider not only the rank of non-repeated data, but also the determination of the rank average of repeated data. The project is based on the definition of data knot and rank average given by Professor Wang Xing of Tsinghua University, designs the calculation program of Spearman rank correlation coefficient and applies it in case analysis, which is simple and easy to operate.
Keywords: Spearman rank correlation coefficient; rank average; programming; case application
0" 引" 言
如果隨機(jī)變量的樣本數(shù)據(jù)或其變換值不服從正態(tài)分布,則運(yùn)用Pearson積矩相關(guān)系數(shù)分析問(wèn)題就毫無(wú)意義。此時(shí),只能用Spearman(或者Kendall)秩相關(guān)系數(shù)解決相關(guān)性問(wèn)題[1]。在計(jì)算Spearman秩相關(guān)系數(shù)時(shí),如果取之總體X的樣本x1,x2,…,xn無(wú)重復(fù)數(shù)時(shí),那么設(shè)計(jì)Spearman秩相關(guān)系數(shù)的程序比較容易;但有重復(fù)數(shù)據(jù)時(shí),由于對(duì)重復(fù)數(shù)據(jù)確定秩的多樣化,例如,算術(shù)平均值法,即若第k+1個(gè)至k+m個(gè)元素值相等:xk+1 = xk+2 = … = xk+m,則取這m個(gè)數(shù)據(jù)的算術(shù)平均值作為這m個(gè)數(shù)據(jù)中每個(gè)數(shù)據(jù)的秩,統(tǒng)計(jì)軟件Minitab的符號(hào)秩和檢驗(yàn)法就是采用算術(shù)平均值法確定每個(gè)元素的秩,又如隨機(jī)化分配秩等方法[2],因此對(duì)應(yīng)重復(fù)數(shù)據(jù)采用不同的秩時(shí),設(shè)計(jì)計(jì)算Spearman秩相關(guān)系數(shù)程序的難度存在差異。《非參數(shù)統(tǒng)計(jì)》(清華大學(xué)出版社)作者,王星教授從數(shù)據(jù)的“結(jié)與結(jié)長(zhǎng)”概念給出秩平均值定義[3]。具體做法:將x1,x2,…,xn按從小到大排序后,若x(1) = x(2) = … =" "= … =" "= … = ,其中g(shù)表示樣本結(jié)的個(gè)數(shù),而ζk(k = 1,2,…,g)表示第k個(gè)結(jié)中數(shù)據(jù)的個(gè)數(shù)(或者重復(fù)次數(shù)),例如,ζi表示第i個(gè)結(jié)中的重復(fù)數(shù)據(jù)個(gè)數(shù),對(duì)第i個(gè)結(jié)中每個(gè)數(shù)據(jù)賦予相同的秩ri,稱為秩平均,如式(1):
(1)
本課題采用式(1)結(jié)的秩平均定義,基于Python代碼首次設(shè)計(jì)Spearman秩相關(guān)系數(shù)的計(jì)算程序,并將所設(shè)計(jì)的程序運(yùn)用于實(shí)際案例。
1" 基于樣本“結(jié)”秩平均的spearman相關(guān)系數(shù)計(jì)算程序設(shè)計(jì)
程序設(shè)計(jì)分五步,參見程序設(shè)計(jì)框圖,如圖1所示。
1)導(dǎo)入配對(duì)數(shù)據(jù)Xi:xi1,xi2,…,xin,i = 1,2;
2)對(duì)Xi按小至大重新排序得 ;從" 各數(shù)據(jù)的秩找回Xi各數(shù)據(jù)對(duì)應(yīng)的秩(即ri和qi);3)檢查Xi中是否存在重復(fù)數(shù)據(jù),以及重復(fù)數(shù)據(jù)出現(xiàn)的個(gè)數(shù)。若有重復(fù)數(shù)據(jù),按其‘結(jié)’長(zhǎng)確定重復(fù)數(shù)據(jù)的秩平均并賦秩平均值;若無(wú)重復(fù)數(shù)據(jù),則處理下一步;4)對(duì)不重復(fù)數(shù)據(jù)的秩進(jìn)行補(bǔ)償處理,即對(duì)每個(gè)不重復(fù)數(shù)據(jù)的秩都加上1。因?yàn)?,程序設(shè)計(jì)中的數(shù)組從小至大排秩序時(shí),首位秩是0,往后每位增1;而按結(jié)長(zhǎng)計(jì)秩,首數(shù)據(jù)的秩值從1開始計(jì),往上遞增;5)計(jì)算x1與x2的相關(guān)系數(shù)[3],如式(2):
(2)
式(2)中,ri和qi,i = 1,2,…,n分別為X1與X2的秩,n為樣本量大小。完整的Python[4]程序設(shè)計(jì)代碼如下:
import numpy as np
import pandas as pd
from collections import Counter
##數(shù)組形式
fb = r'學(xué)生高考成績(jī)與大學(xué)成績(jī)比較表.xls'
data2 = pd.read_excel(fb, header=None)#讀入數(shù)據(jù)文件
data3 = data2.values
row = data2.shape[0]
col = data2.shape[1]
sda1 = np.sort(data3[:, 0]) #對(duì)原數(shù)據(jù)組從小至大排序
sda2 = np.sort(data3[:, 1])
sdb1 = data3[:, 0]
sdb2 = data3[:, 1]
fupr = np.ones((1, row))
fupb = np.ones((1, row))
fups = np.ones((1, row))
for i in range(row):
[c] = np.where(sda1 == sdb1[i]) #計(jì)算第一組數(shù)據(jù)秩統(tǒng)計(jì)量
[d] = np.where(sda2 == sdb2[i]) #計(jì)算第二組數(shù)據(jù)秩統(tǒng)計(jì)量
fupr[0][i] = c[0]
fups[0][i] = d[0]
global Rrepeat
Rrepeat = []
def adjrank(y, z):
repeat = [item for item, count in Counter(y).items() if count gt; 1]" # 找重復(fù)數(shù)據(jù)
recount = [count for item, count in Counter(y).items() if count gt; 1] # 找重復(fù)數(shù)據(jù)
nr = len(repeat)
for j in range(nr):" # 處理重復(fù)數(shù)據(jù)的秩
[a] = np.where(y == repeat[j])
m = recount[j]
b = a[0] + (m + 1) / 2 #基于結(jié)的秩值確定
Rrepeat.append(b)
for k in range(m): #對(duì)重復(fù)數(shù)據(jù)賦秩值
[d, c] = np.where(z == a[k])
z[0][c] = b
adjrank(sda1, fupr) #對(duì)第一組數(shù)據(jù)中非重復(fù)數(shù)據(jù)的秩補(bǔ)償(加1)
a_list = fupr
a_list = [float(x) for item in a_list for x in item]
s_list = Rrepeat
for i in range(len(a_list)):
if a_list[i] not in s_list:
a_list[i] = a_list[i] + 1
else:
next
fupr = a_list
adjrank (sda2, fups) #對(duì)第二組數(shù)據(jù)非重復(fù)數(shù)據(jù)的秩補(bǔ)償(加1)
b_list = fups
b_list = [float(x) for item in b_list for x in item]
s_list = Rrepeat
for i in range(len(b_list)):
if b_list[i] not in s_list:
b_list[i] = b_list[i] + 1
else:
next
fups = b_list
npc = 0
for i in range(row):
npc = npc + np.square(fupr[i] - fups[i]) # 計(jì)算spearman秩差的平方和
corr = 1 - 6* npc/(row * (np.square(row) - 1) ) 計(jì)算spearman秩相關(guān)系數(shù)
上述導(dǎo)入的數(shù)據(jù)文件“學(xué)生高考成績(jī)與大學(xué)成績(jī)比較表”,引自《非參數(shù)統(tǒng)計(jì)》(清華大學(xué)出版社)第182頁(yè)例6.1數(shù)值,如表1所示。
此例的秩相關(guān)系數(shù)在《非參數(shù)統(tǒng)計(jì)》(清華大學(xué)出版社)上給出的計(jì)算結(jié)果為Corr = 0.772 7;以上設(shè)計(jì)的程序運(yùn)行所得相關(guān)系數(shù)為Corr = 0.772 7,兩者完全一致。須關(guān)注兩點(diǎn):1)若重復(fù)數(shù)的秩采用算術(shù)平均值,結(jié)果為Corr = 0.786 7[5]。盡管兩種計(jì)算方法的相關(guān)系數(shù)有差異,但變量間的相關(guān)性不改變;2)用SPSS軟件包[6]計(jì)算表1數(shù)據(jù),spearman相關(guān)系數(shù)Corr = 0.772,若0.772非四舍五入的截?cái)嗪瘮?shù)所得,SPSS軟件計(jì)算spearman秩相關(guān)系數(shù)方式亦可能基于結(jié)秩平均設(shè)計(jì)的。SPSS模塊是封裝的,若需對(duì)秩計(jì)算表深入分析時(shí)且找不到相應(yīng)秩表輸出功能;本課題程序僅需對(duì)fupr[i],fups[i]設(shè)置循環(huán)輸出for k in range(row),即可得秩表,如表2所示(與《非參數(shù)統(tǒng)計(jì)》書上顯示的秩表結(jié)果一致)。
2" 圖書閱讀與隱性知識(shí)習(xí)得能力的相關(guān)性分析
隱性知識(shí)不同于顯性知識(shí),具有無(wú)法言傳、不可編碼、不能加以反思等特征[7]。英國(guó)物理化學(xué)家、哲學(xué)家Polanyi提出最著名的認(rèn)識(shí)論命題:我們所認(rèn)識(shí)的多于我們所能告訴的[8],即隱性知識(shí)比顯性知識(shí)多得多。于是,如何習(xí)得隱性知識(shí)受到各界學(xué)者關(guān)注、研究。例如,隱性知識(shí)傳遞的師徒制、導(dǎo)師制,以及社交網(wǎng)絡(luò)面對(duì)面交流等都成為研究模式;而通過(guò)圖書閱讀產(chǎn)生靈感,以及閱讀后通過(guò)不斷體驗(yàn)與實(shí)踐逐步建構(gòu)起屬于讀者個(gè)體的隱性知識(shí)也成為研究新途徑[9,10]。為厘清圖書閱讀與隱性知識(shí)習(xí)得能力是否存在關(guān)聯(lián)機(jī)制,本課題運(yùn)用基于結(jié)平均秩的spearman秩相關(guān)系數(shù)對(duì)兩者關(guān)系進(jìn)行研究,包括:數(shù)據(jù)來(lái)源及相關(guān)性分析。
2.1" 圖書館大學(xué)生讀者接受問(wèn)卷調(diào)查構(gòu)成數(shù)據(jù)來(lái)源
數(shù)據(jù)來(lái)源于嘉興職業(yè)技術(shù)學(xué)院(簡(jiǎn)稱嘉職院)圖書館大學(xué)生讀者問(wèn)卷調(diào)查。調(diào)查表的主要內(nèi)容為個(gè)體“平均每周閱讀時(shí)間”,以及通過(guò)長(zhǎng)期圖書閱讀對(duì)“隱性知識(shí)習(xí)得能力”影響的自我評(píng)分。調(diào)查表模擬美國(guó)著名心理學(xué)家Robert基于心理學(xué)的隱性知識(shí)測(cè)量法[11],結(jié)合大學(xué)生在校期間學(xué)習(xí)目標(biāo)及心理現(xiàn)象,并對(duì)調(diào)查表進(jìn)行專門設(shè)計(jì)。調(diào)研表設(shè)置若干個(gè)一級(jí)指標(biāo),每個(gè)一級(jí)指標(biāo)包含若干個(gè)二級(jí)指標(biāo),如表3所示。
本課題一級(jí)指標(biāo)C1:認(rèn)知思維維度。C1下屬的二級(jí)指標(biāo)7個(gè):c11自我認(rèn)知能力、c12觀察能力、c13判斷能力、c14邏輯思維能力、c15形象思維能力、c16創(chuàng)新能力,以及c17自身專業(yè)知識(shí)結(jié)構(gòu)。其余三個(gè)一級(jí)指標(biāo)C2為價(jià)值觀維度、C3情感維度、C4經(jīng)驗(yàn)技能維度,以及其下相應(yīng)的二級(jí)指標(biāo),共12個(gè),總共設(shè)計(jì)了19個(gè)二級(jí)指標(biāo)。對(duì)于二級(jí)指標(biāo)的評(píng)價(jià)取值為tij(取0或1:0表示無(wú)關(guān)聯(lián)性,1表示有正相關(guān)作用)0≤i≤m,0≤j≤max(n1,n2,…,nm)。表中的Scores是對(duì)全部二級(jí)指標(biāo)取值累加后,轉(zhuǎn)成的百分?jǐn)?shù)。表3反映在學(xué)生讀者每周圖書閱讀時(shí)間H與隱性知識(shí)習(xí)得能力自評(píng)分Scores。本次調(diào)研共發(fā)放170份,收回有效問(wèn)卷158份,相應(yīng)的統(tǒng)計(jì)表及統(tǒng)計(jì)圖,如表4、圖2所示。例如,圖2所示第k個(gè)學(xué)生Sk每周平均閱讀8小時(shí)、隱性知識(shí)習(xí)得能力自評(píng)是80分,同理可得其他157對(duì)數(shù)據(jù)。表末是閱讀總平均7小時(shí)/周,自評(píng)總平均74分。
2.2" 相關(guān)性分析
由于158對(duì)數(shù)據(jù)包括兩個(gè)非獨(dú)立的樣本:平均每周閱讀時(shí)間X,隱性知識(shí)習(xí)得能力得分Y。這兩個(gè)隨機(jī)變量都不連續(xù),也都不服從正態(tài)分布,且重復(fù)數(shù)據(jù)多,如平均每周閱讀5小時(shí)、7小時(shí)高頻次出現(xiàn)。因此,本課題運(yùn)用設(shè)計(jì)的基于結(jié)秩平均spearman秩相關(guān)系數(shù)進(jìn)行分析。
現(xiàn)只需將表4的158對(duì)數(shù)據(jù)導(dǎo)入到程序中fb =
r‘XXXX.xls'即可。運(yùn)行結(jié)果,相關(guān)系數(shù)Corr=0.64;由于統(tǒng)計(jì)量n>50,因此可以用服從自由度n-2的t分布統(tǒng)計(jì)量T進(jìn)行檢驗(yàn),結(jié)果為:
=10.40
查表得T = 10.40>t0.001 156≈2.62;因此,可以認(rèn)為在95%的置信水平上,大學(xué)生圖書閱讀時(shí)間(小時(shí)/周)與其隱性知識(shí)習(xí)得能力(Scores)存在正相關(guān)關(guān)系。
3" 結(jié)" 論
基于樣本數(shù)據(jù)結(jié)長(zhǎng)的秩平均值,運(yùn)用Python程序設(shè)計(jì)并計(jì)算Spearman秩相關(guān)系數(shù),將程序運(yùn)用于實(shí)際案例分析則簡(jiǎn)便易行。所設(shè)計(jì)的程序還可以根據(jù)研究需要輸出秩計(jì)算表。
參考文獻(xiàn):
[1] 張利田,卜慶杰,楊桂華,等.環(huán)境科學(xué)領(lǐng)域?qū)W術(shù)論文中常用數(shù)理統(tǒng)計(jì)方法的正確使用問(wèn)題 [J].環(huán)境科學(xué)學(xué)報(bào),2007(1):171-173.
[2] 王靜龍,梁小筠.非參數(shù)統(tǒng)計(jì)分析 [M].北京:高等教育出版社,2006.
[3] 王星,褚挺進(jìn).非參數(shù)統(tǒng)計(jì):第2版 [M].北京:清華大學(xué)出版社,2014.
[4] 龍良曲.TensorFlow深度學(xué)習(xí) [M].北京:清華大學(xué)出版社,2020.
[5] 夏子期lal.斯皮爾曼(spearman)相關(guān)系數(shù)python代碼實(shí)現(xiàn) [EB/OL].[2023-02-09].https://blog.csdn.net/xiaziqiqi/ category_
12191253.html.
[6] 武松.SPSS實(shí)戰(zhàn)與統(tǒng)計(jì)思維 [M].北京:清華大學(xué)出版社,2019.
[7] Polanyi M.The Tacit Dimension [M].London:Routledge amp; kegan paul,1966.
[8] Polanyi M.Personal knowledge [M].London:Routledge and Kegan Paul,1958.
[9] 劉婷.圖書館內(nèi)隱學(xué)習(xí)與緘默知識(shí)生成研究——基于認(rèn)知心理學(xué)視角 [J].新世紀(jì)圖書館,2018(9):8-13.
[10] 宋貝.心理追蹤—個(gè)人隱性知識(shí)產(chǎn)生過(guò)程及機(jī)制 [M].北京:人民郵電出版社,2021.
[11] RICHARD K W,ROBERT J S. Tacit knowledge in managerial success [J].Journal of business and psychology,1987,1(4):301-312.
作者簡(jiǎn)介:張馳庚(1984—),男,漢族,浙江杭州人,講師,碩士研究生,研究方向:軟件開發(fā)、數(shù)據(jù)挖掘、職業(yè)教育。