日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R计算两列数据的相关系数_数据特征分析·相关性分析

發(fā)布時(shí)間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R计算两列数据的相关系数_数据特征分析·相关性分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

相關(guān)性分析

相關(guān)分析是指對兩個(gè)或多個(gè)具備相關(guān)性的變量元素進(jìn)行分析,從而衡量兩個(gè)因素的的相關(guān)密切程度,相關(guān)性的元素之間需要存在一定的聯(lián)系或者概率才可以進(jìn)行相關(guān)性分析。

1、 如何利用相關(guān)系數(shù)判斷數(shù)據(jù)之間的關(guān)系

(1) 繪制散點(diǎn)圖

判斷數(shù)據(jù)是否具有相關(guān)關(guān)系,最直觀的方法就是繪制散點(diǎn)圖

如何要判斷多個(gè)數(shù)據(jù)的之間的關(guān)系,散點(diǎn)圖的繪制就會顯得比較繁瑣,這時(shí)候要選擇繪制散點(diǎn)矩陣

(2) 相關(guān)系數(shù)

相關(guān)系數(shù)衡量了兩個(gè)變量的統(tǒng)一程度,范圍是-1~1,‘1’代表完全正相關(guān),‘-1’代表完全負(fù)相關(guān)。

比較常用的是Pearson‘皮爾遜’相關(guān)系數(shù)、Spearman‘斯皮爾曼’相關(guān)系數(shù)。

a) Pearson相關(guān)系數(shù)

也稱皮爾森積矩相關(guān)系數(shù),一般用于分析,兩個(gè)連續(xù)變量之間的關(guān)系,是一種線性相關(guān)系數(shù),公式為:

補(bǔ)充:

|r|<= 0.3 不存在線性相關(guān)

0.3<=|r|<= 0.5 低度線性關(guān)系

0.5<=|r|<= 0.8 顯著線性關(guān)系

|r| > 0.8 高度線性關(guān)系

b) Spearman相關(guān)系數(shù)

Pearson相關(guān)系數(shù)要求連續(xù)變量的取值服從正態(tài)分布,不服從正態(tài)分布的變量、分類或等級變量之間的關(guān)聯(lián)性可采用Spearman秩相關(guān)系數(shù),也稱等級相關(guān)系數(shù)來描述。公式:

對兩個(gè)變量成對的取值分別按照從小到大(或者從大到小)順序編秩,Ri代表xi的秩次,Qi代表yi的秩次,Ri-Qi為xi、yi的秩次之差。

在實(shí)際應(yīng)用計(jì)算中,上述兩種相關(guān)系數(shù)都要對其進(jìn)行假設(shè)檢驗(yàn),使用t檢驗(yàn)方法檢驗(yàn)其顯著性水平以確定其相關(guān)程度。研究表明,在正態(tài)分布假定下,Spearman秩相關(guān)系數(shù)與Pearson相關(guān)系數(shù)在效率上是等價(jià)的,而對于連續(xù)測量數(shù)據(jù),更適合用Pearson相關(guān)系數(shù)來進(jìn)行分析。

3)判定系數(shù)。

判定系數(shù)是相關(guān)系數(shù)的平方,用r2表示;用來衡量回歸方程對y的解釋程度。判定系數(shù)取值范圍:0≤r2≤1。r2越接近于1,表明x與y之間的相關(guān)性越強(qiáng);r2越接近于0,表明兩個(gè)變量之間幾乎沒有直線相關(guān)關(guān)系。

2、 應(yīng)用場景

(1) 利用相關(guān)系數(shù)來發(fā)覺數(shù)據(jù)間隱藏的聯(lián)系。

經(jīng)典相關(guān)分析案例是‘啤酒與尿不濕的故事’,這是大家耳熟能詳?shù)姆治霭咐恕R驗(yàn)槠【婆c尿不濕呈現(xiàn)了明顯了正相關(guān)性,改變了超市的擺貨策略。

但是,這個(gè)只是用來說明的案例,在實(shí)際中并不存在,尿不濕屬于嬰兒產(chǎn)品,啤酒屬于酒類,沒有超市會擺放在一起。在理解相關(guān)性分析同時(shí),也要注意現(xiàn)實(shí)中的實(shí)際情況。現(xiàn)在還有很多書中在引用這個(gè)案例,希望大家警惕這樣的案例。

(2) 利用相關(guān)系數(shù)來減少統(tǒng)計(jì)指標(biāo)。

當(dāng)業(yè)務(wù)指標(biāo)繁雜,敘述籠統(tǒng),給報(bào)告制作,分析解讀帶來巨大的成本的時(shí)候。根據(jù)相關(guān)系數(shù)刪減指標(biāo)是方法之一,一般來說相關(guān)性大于0.8的時(shí)候可以選擇其一。

也請大家注意‘相關(guān)性’與‘因果性’之間的區(qū)別,這兩者很容易混淆。在報(bào)告中一定要說明情況,避免帶來錯(cuò)誤的決策。

(3) 利用相關(guān)系數(shù)來挑選回歸建模的變量。

在建立多元回歸模型前,需要解決把那些數(shù)據(jù)放入模型作為自變量。最常規(guī)的方式就是先計(jì)算所有字段與因變量的相關(guān)系數(shù),把相關(guān)系數(shù)較高的放入模型。然后計(jì)算自變量間的相關(guān)系數(shù)。若自變量間的相關(guān)系數(shù)高,說明存在多重共線性,需要進(jìn)行刪減。

(4) 利用相關(guān)系數(shù)來驗(yàn)證主觀判斷,這或許是現(xiàn)實(shí)業(yè)務(wù)中最有使用必要的。

決策層或者管理層經(jīng)常會根據(jù)自己的經(jīng)驗(yàn),主觀地形成一些邏輯關(guān)系。最典型的表述方式就是“我認(rèn)為這個(gè)數(shù)據(jù)會影響到那個(gè)數(shù)據(jù)”。到底有沒有影響?可以通過計(jì)算相關(guān)系數(shù)來判斷。相關(guān)系數(shù)的應(yīng)用能夠讓決策者更冷靜,更少地盲目拍腦袋。雖然相關(guān)系數(shù)不能表達(dá)因果關(guān)系,但有聯(lián)系的兩件事情,一定會在相關(guān)系數(shù)上有所反映。

3、代碼詳解

''' # 圖示初判 散點(diǎn)圖 # (1)變量之間的線性相關(guān)性 # 創(chuàng)建三個(gè)數(shù)據(jù):data1為0-100的隨機(jī)數(shù)并從小到大排列,data2為0-50的隨機(jī)數(shù)并從小到大排列,data3為0-500的隨機(jī)數(shù)并從大到小排列 data1 = pd.Series(np.random.rand(50)*100).sort_values() data2 = pd.Series(np.random.rand(50)*50).sort_values() data3 = pd.Series(np.random.rand(50)*500).sort_values(ascending=False) #可知data1與data2呈正線性相關(guān),data1與data3呈正線性相關(guān)fig = plt.figure(figsize=(10,5))ax1 = fig.add_subplot(1,2,1) ax1.scatter(data1,data2) plt.grid(linestyle='--')ax2 = fig.add_subplot(1,2,2) ax2.scatter(data1,data3) plt.grid(linestyle='--')

#散點(diǎn)矩陣 data = pd.DataFrame(np.random.randn(200,4)*100,columns=['A','B','C','D'])pd.plotting.scatter_matrix(data,figsize=(10,6),c = 'b',marker = '+',diagonal='hist',hist_kwds={'bins':50,'edgecolor':'k'},alpha = 0.5,range_padding=0.1) data.head()

# Pearson相關(guān)系數(shù)data1 = pd.Series(np.random.rand(100)*100).sort_values() data2 = pd.Series(np.random.rand(100)*50).sort_values() data = pd.DataFrame({'value1':data1.values,'value2':data2.values}) print(data.head()) print('------') # 創(chuàng)建樣本數(shù)據(jù)u1,u2 = data['value1'].mean(),data['value2'].mean() # 計(jì)算均值 std1,std2 = data['value1'].std(),data['value2'].std() # 計(jì)算標(biāo)準(zhǔn)差 print('value1正態(tài)性檢驗(yàn):n',stats.kstest(data['value1'], 'norm', (u1, std1))) print('value2正態(tài)性檢驗(yàn):n',stats.kstest(data['value2'], 'norm', (u2, std2))) print('------') # 正態(tài)性檢驗(yàn) → pvalue >0.05data['(x-u1)*(y-u2)'] = (data['value1'] - u1) * (data['value2'] - u2) data['(x-u1)**2'] = (data['value1'] - u1)**2 data['(y-u2)**2'] = (data['value2'] - u2)**2 print(data.head()) print('------') # 制作Pearson相關(guān)系數(shù)求值表r = data['(x-u1)*(y-u2)'].sum() / (np.sqrt(data['(x-u1)**2'].sum() * data['(y-u2)**2'].sum())) print('Pearson相關(guān)系數(shù)為:%.4f' % r) # 求出r # |r| > 0.8 → 高度線性相關(guān)

value1 value2
0 0.678218 0.264657
1 0.683882 0.322216
2 1.050526 1.070748
3 1.647541 1.266555
4 4.637911 1.311668
------
value1正態(tài)性檢驗(yàn):
KstestResult(statistic=0.06715860692623049, pvalue=0.776789229095759)
value2正態(tài)性檢驗(yàn):
KstestResult(statistic=0.09553536914391403, pvalue=0.3024936582605874)
------
value1 value2 (x-u1)*(y-u2) (x-u1)**2 (y-u2)**2
0 0.678218 0.264657 1203.715631 2501.023716 579.335298
1 0.683882 0.322216 1200.701088 2500.457191 576.567800
2 1.050526 1.070748 1154.741738 2463.923902 541.180870
3 1.647541 1.266555 1131.250617 2405.011158 532.108949
4 4.637911 1.311668 1060.192849 2120.652561 530.029717
------
Pearson相關(guān)系數(shù)為:0.9949

# Pearson相關(guān)系數(shù) - 算法data1 = pd.Series(np.random.rand(100)*100).sort_values() data2 = pd.Series(np.random.rand(100)*50).sort_values() data = pd.DataFrame({'value1':data1.values,'value2':data2.values}) print(data.head()) print('------') # 創(chuàng)建樣本數(shù)據(jù)data.corr() # pandas相關(guān)性方法:data.corr(method='pearson', min_periods=1) → 直接給出數(shù)據(jù)字段的相關(guān)系數(shù)矩陣 # method默認(rèn)pearson

# Sperman秩相關(guān)系數(shù)data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看電視小時(shí)數(shù)':[7,0,27,50,28,29,20,12,6,17]}) print(data) print('------') # 創(chuàng)建樣本數(shù)據(jù)data.sort_values('智商', inplace=True) data['range1'] = np.arange(1,len(data)+1) data.sort_values('每周看電視小時(shí)數(shù)', inplace=True) data['range2'] = np.arange(1,len(data)+1) print(data) print('------') # “智商”、“每周看電視小時(shí)數(shù)”重新按照從小到大排序,并設(shè)定秩次indexdata['d'] = data['range1'] - data['range2'] data['d2'] = data['d']**2 print(data) print('------') # 求出di,di2n = len(data) rs = 1 - 6 * (data['d2'].sum()) / (n * (n**2 - 1)) print('Pearson相關(guān)系數(shù)為:%.4f' % rs) # 求出rs

# Pearson相關(guān)系數(shù) - 算法data = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看電視小時(shí)數(shù)':[7,0,27,50,28,29,20,12,6,17]}) print(data) print('------') # 創(chuàng)建樣本數(shù)據(jù)data.corr(method='spearman') # pandas相關(guān)性方法:data.corr(method='pearson', min_periods=1) → 直接給出數(shù)據(jù)字段的相關(guān)系數(shù)矩陣 # method默認(rèn)pearson

總結(jié)

以上是生活随笔為你收集整理的R计算两列数据的相关系数_数据特征分析·相关性分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。