皮爾遜函數(shù)python 皮爾遜相關(guān)matlab

python求解系數(shù)是啥

1. person correlation coefficient(皮爾森相關(guān)性系數(shù))

我們提供的服務(wù)有:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、甘井子ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的甘井子網(wǎng)站制作公司

皮爾遜相關(guān)系數(shù)通常用r或ρ表示,度量兩變量X和Y之間相互關(guān)系(線性相關(guān))

(1)公式

皮爾森相關(guān)性系數(shù)的值等于它們之間的協(xié)方差cov(X,Y)除以它們各自標(biāo)準(zhǔn)差的乘積(σX, σY)。

(2)數(shù)據(jù)要求

a.正態(tài)分布

它是協(xié)方差與標(biāo)準(zhǔn)差的比值,并且在求皮爾森相關(guān)性系數(shù)以后,通常還會(huì)用t檢驗(yàn)之類的方法來進(jìn)行皮爾森相關(guān)性系數(shù)檢驗(yàn),而t檢驗(yàn)是基于數(shù)據(jù)呈正態(tài)分布的假設(shè)的。

b.實(shí)驗(yàn)數(shù)據(jù)之間的差距不能太大

比如:研究人跑步的速度與心臟跳動(dòng)的相關(guān)性,如果人突發(fā)心臟病,心跳為0(或者過快與過慢),那這時(shí)候我們會(huì)測到一個(gè)偏離正常值的心跳,如果我們把這個(gè)值也放進(jìn)去進(jìn)行相關(guān)性分析,它的存在會(huì)大大干擾計(jì)算的結(jié)果的。

(3)實(shí)例代碼

import pandas as pd

import numpy as np

#原始數(shù)據(jù)

X1=pd.Series([1, 2, 3, 4, 5, 6])

Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])

X1.mean() #平均值# 3.5

Y1.mean() #2.4

X1.var() #方差#3.5

Y1.var() #2.9760000000000004

X1.std() #標(biāo)準(zhǔn)差不能為0# 1.8708286933869707

Y1.std() #標(biāo)準(zhǔn)差不能為0#1.725108692227826

X1.cov(Y1) #協(xié)方差#3.0600000000000005

X1.corr(Y1,method="pearson") #皮爾森相關(guān)性系數(shù) #0.948136664010285

X1.cov(Y1)/(X1.std()*Y1.std()) #皮爾森相關(guān)性系數(shù) # 0.948136664010285

2. spearman correlation coefficient(斯皮爾曼相關(guān)性系數(shù))

斯皮爾曼相關(guān)性系數(shù),通常也叫斯皮爾曼秩相關(guān)系數(shù)?!爸取保梢岳斫獬删褪且环N順序或者排序,那么它就是根據(jù)原始數(shù)據(jù)的排序位置進(jìn)行求解

(1)公式

首先對兩個(gè)變量(X, Y)的數(shù)據(jù)進(jìn)行排序,然后記下排序以后的位置(X’, Y’),(X’, Y’)的值就稱為秩次,秩次的差值就是上面公式中的di,n就是變量中數(shù)據(jù)的個(gè)數(shù),最后帶入公式就可求解結(jié)果。

(2)數(shù)據(jù)要求

因?yàn)槭嵌ㄐ?,所以我們不用管X和Y這兩個(gè)變量具體的值到底差了多少,只需要算一下它們每個(gè)值所處的排列位置的差值,就可以求出相關(guān)性系數(shù)了

(3)實(shí)例代碼

import pandas as pd

import numpy as np

#原始數(shù)據(jù)

X1=pd.Series([1, 2, 3, 4, 5, 6])

Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])

#處理數(shù)據(jù)刪除Nan

x1=X1.dropna()

y1=Y1.dropna()

n=x1.count()

x1.index=np.arange(n)

y1.index=np.arange(n)

#分部計(jì)算

d=(x1.sort_values().index-y1.sort_values().index)**2

dd=d.to_series().sum()

p=1-n*dd/(n*(n**2-1))

#s.corr()函數(shù)計(jì)算

r=x1.corr(y1,method='spearman')

print(r,p) #0.942857142857143 0.9428571428571428

3. kendall correlation coefficient(肯德爾相關(guān)性系數(shù))

肯德爾相關(guān)性系數(shù),又稱肯德爾秩相關(guān)系數(shù),它也是一種秩相關(guān)系數(shù),不過它所計(jì)算的對象是分類變量。

分類變量可以理解成有類別的變量,可以分為:

(1) 無序的,比如性別(男、女)、血型(A、B、O、AB);

(2) 有序的,比如肥胖等級(重度肥胖,中度肥胖、輕度肥胖、不肥胖)。

通常需要求相關(guān)性系數(shù)的都是有序分類變量。

(1)公式

R=(P-(n*(n-1)/2-P))/(n*(n-1)/2)=(4P/(n*(n-1)))-1

注:設(shè)有n個(gè)統(tǒng)計(jì)對象,每個(gè)對象有兩個(gè)屬性。將所有統(tǒng)計(jì)對象按屬性1取值排列,不失一般性,設(shè)此時(shí)屬性2取值的排列是亂序的。設(shè)P為兩個(gè)屬性值排列大小關(guān)系一致的統(tǒng)計(jì)對象對數(shù)

(2)數(shù)據(jù)要求

類別數(shù)據(jù)或者可以分類的數(shù)據(jù)

(3)實(shí)例代碼

import pandas as pd

import numpy as np

#原始數(shù)據(jù)

x= pd.Series([3,1,2,2,1,3])

y= pd.Series([1,2,3,2,1,1])

r = x.corr(y,method="kendall") #-0.2611165

pytnon中如何計(jì)算皮爾遜的p值

如何理解皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)?

皮爾遜相關(guān)系數(shù)理解有兩個(gè)角度

其一, 按照高中數(shù)學(xué)水平來理解, 它很簡單, 可以看做將兩組數(shù)據(jù)首先做Z分?jǐn)?shù)處理之后, 然后兩組數(shù)據(jù)的乘積和除以樣本數(shù)

Z分?jǐn)?shù)一般代表正態(tài)分布中, 數(shù)據(jù)偏離中心點(diǎn)的距離.等于變量減掉平均數(shù)再除以標(biāo)準(zhǔn)差.(就是高考的標(biāo)準(zhǔn)分類似的處理)

標(biāo)準(zhǔn)差則等于變量減掉平均數(shù)的平方和,再除以樣本數(shù),最后再開方.

所以, 根據(jù)這個(gè)最樸素的理解,我們可以將公式依次精簡為:

其二, 按照大學(xué)的線性數(shù)學(xué)水平來理解, 它比較復(fù)雜一點(diǎn),可以看做是兩組數(shù)據(jù)的向量夾角的余弦.

皮爾遜相關(guān)的約束條件

從以上解釋, 也可以理解皮爾遜相關(guān)的約束條件:

1 兩個(gè)變量間有線性關(guān)系

2 變量是連續(xù)變量

3 變量均符合正態(tài)分布,且二元分布也符合正態(tài)分布

4 兩變量獨(dú)立

在實(shí)踐統(tǒng)計(jì)中,一般只輸出兩個(gè)系數(shù),一個(gè)是相關(guān)系數(shù),也就是計(jì)算出來的相關(guān)系數(shù)大小,在-1到1之間;另一個(gè)是獨(dú)立樣本檢驗(yàn)系數(shù),用來檢驗(yàn)樣本一致性.

先舉個(gè)手算的例子

使用維基中的例子:

例如,假設(shè)五個(gè)國家的國民生產(chǎn)總值分別是1、2、3、5、8(單位10億美元),又假設(shè)這五個(gè)國家的貧困比例分別是11%、12%、13%、15%、18%。

創(chuàng)建2個(gè)向量.(R語言)

x-c(1,2,3,5,8)

y-c(0.11,0.12,0.13,0.15,0.18)

按照維基的例子,應(yīng)計(jì)算出相關(guān)系數(shù)為1出來.我們看看如何一步一步計(jì)算出來的.

x的平均數(shù)是:3.8

y的平均數(shù)是0.138

所以,

sum((x-mean(x))*(y-mean(y)))=0.308

用大白話來寫就是:

(1-3.8)*(0.11-0.138)=0.0784

(2-3.8)*(0.12-0.138)=0.0324

(3-3.8)*(0.13-0.138)=0.0064

(5-3.8)*(0.15-0.138)=0.0144

(8-3.8)*(0.18-0.138)=0.1764

0.0784+0.0324+0.0064+0.0144+0.1764=0.308

同理, 分號下面的,分別是:

sum((x-mean(x))^2)=30.8?sum((y-mean(y))^2)= 0.00308

用大白話來寫,分別是:

(1-3.8)^2=7.84 #平方

(2-3.8)^2=3.24 #平方

(3-3.8)^2=0.64 #平方

(5-3.8)^2=1.44 #平方

(8-3.8)^2=17.64 #平方

7.84+3.24+0.64+1.44+17.64=30.8

同理,求得:

sum((y-mean(y))^2)= 0.00308

然后再開平方根,分別是:

30.8^0.5=5.549775?0.00308^0.5=0.05549775

用分子除以分母,就計(jì)算出最終結(jié)果:

0.308/(5.549775*0.05549775)=1

再舉個(gè)簡單的R語言例子(R在這里下載:?)

假設(shè)有100人, 一組數(shù)據(jù)是年齡,平均年齡是35歲,標(biāo)準(zhǔn)差是5歲;另一組數(shù)據(jù)是發(fā)帖數(shù)量,平均帖子數(shù)量是45份post,標(biāo)準(zhǔn)差是8份帖子.

假設(shè)這兩組都是正態(tài)分布.我們來求這兩者的皮爾遜相關(guān)系數(shù),R腳本如下:

x-rnorm(n=100,mean=35,sd=5) ?#創(chuàng)建一組平均數(shù)為35,標(biāo)準(zhǔn)差為5,樣本數(shù)為100的隨機(jī)數(shù)

y-rnorm(n=100,mean=45,sd=8) #創(chuàng)建一組平均數(shù)為45,標(biāo)準(zhǔn)差為8,樣本數(shù)為100的隨機(jī)數(shù)

cor.test(x,y,method="pearson") #計(jì)算這兩組數(shù)的相關(guān),并進(jìn)行T檢驗(yàn)

然后R輸出結(jié)果為:

Pearson's product-moment correlation

data: ?x and y

t = -0.0269, df = 98, p-value = 0.9786

alternative hypothesis: true correlation is not equal to 0

95 percent confidence interval:

-0.1990316 ?0.1938019

sample estimates:

cor

-0.002719791

當(dāng)然,這里是隨機(jī)數(shù).也可以用非隨機(jī)的驗(yàn)證一下計(jì)算.

皮爾遜相關(guān)系數(shù)用于網(wǎng)站開發(fā)

直接將R與Ruby關(guān)聯(lián)起來

調(diào)用很簡單,仿照上述例子:

cor(x,y)

就輸出系數(shù)結(jié)果了.

有這么幾個(gè)庫可以參考:

...

...

說明, 以上為ruby調(diào)用庫. pythone程序員可以參考: Rpy ()

簡單的相關(guān)系數(shù)的分類

0.8-1.0 極強(qiáng)相關(guān)

0.6-0.8 強(qiáng)相關(guān)

0.4-0.6 中等程度相關(guān)

0.2-0.4 弱相關(guān)

0.0-0.2 極弱相關(guān)或無相關(guān)

ps : 這個(gè)網(wǎng)站開發(fā)者不要再次發(fā)明輪子,本來用markdown語法寫作很爽,結(jié)果又不得不花時(shí)間來改動(dòng).請考慮盡快支持Markdown語法.

皮爾森相關(guān)系數(shù)的就是

x和y的協(xié)方差/(x的標(biāo)準(zhǔn)差?y的標(biāo)準(zhǔn)差)

判斷兩組數(shù)的線性關(guān)系程度。

有error如何用python求皮爾遜相關(guān)系數(shù)

有error用python求皮爾遜相關(guān)系數(shù)的具體方法。

1、第一種方法:importnumpyasnp。desc1=[0,1,0,3]。desc2=[0,1,1,1]。x_=desc1-np.mean(desc1)。y_=desc2-np.mean(desc2)。r=np.dot(x_,y_)/(np.linalg.norm(x_)np.linalg.norm(y_))。

2、第二種方法:importnumpyasnp。desc1=[0,1,0,3]。desc2=[0,1,1,1]。d1=(desc1-np.mean(desc1))/np.std(desc1)。d2=(desc2-np.mean(desc2))/np.std(desc2)。r=np.sum(d1d2)/(len(desc1))。

3、第三種方法:desc1=[0,1,0,3]。desc2=[0,1,1,1]。X=np.vstack([desc1,desc2])。d2=np.corrcoef(X)[0][1]。

Python氣象數(shù)據(jù)處理與繪圖(2):常用數(shù)據(jù)計(jì)算方法

對于氣象繪圖來講,第一步是對數(shù)據(jù)的處理,通過各類公式,或者統(tǒng)計(jì)方法將原始數(shù)據(jù)處理為目標(biāo)數(shù)據(jù)。

按照氣象統(tǒng)計(jì)課程的內(nèi)容,我給出了一些常用到的統(tǒng)計(jì)方法的對應(yīng)函數(shù):

在計(jì)算氣候態(tài),區(qū)域平均時(shí)均要使用到求均值函數(shù),對應(yīng)NCL中的dim_average函數(shù),在python中通常使用np.mean()函數(shù)

numpy.mean(a, axis, dtype)

假設(shè)a為[time,lat,lon]的數(shù)據(jù),那么

需要特別注意的是,氣象數(shù)據(jù)中常有缺測,在NCL中,使用求均值函數(shù)會(huì)自動(dòng)略過,而在python中,當(dāng)任意一數(shù)與缺測(np.nan)計(jì)算的結(jié)果均為np.nan,比如求[1,2,3,4,np.nan]的平均值,結(jié)果為np.nan

因此,當(dāng)數(shù)據(jù)存在缺測數(shù)據(jù)時(shí),通常使用np.nanmean()函數(shù),用法同上,此時(shí)[1,2,3,4,np.nan]的平均值為(1+2+3+4)/4 = 2.5

同樣的,求某數(shù)組最大最小值時(shí)也有np.nanmax(), np.nanmin()函數(shù)來補(bǔ)充np.max(), np.min()的不足。

其他很多np的計(jì)算函數(shù)也可以通過在前邊加‘nan’來使用。

另外,

也可以直接將a中缺失值全部填充為0。

np.std(a, axis, dtype)

用法同np.mean()

在NCL中有直接求數(shù)據(jù)標(biāo)準(zhǔn)化的函數(shù)dim_standardize()

其實(shí)也就是一行的事,根據(jù)需要指定維度即可。

皮爾遜相關(guān)系數(shù):

相關(guān)可以說是氣象科研中最常用的方法之一了,numpy函數(shù)中的np.corrcoef(x, y)就可以實(shí)現(xiàn)相關(guān)計(jì)算。但是在這里我推薦scipy.stats中的函數(shù)來計(jì)算相關(guān)系數(shù):

這個(gè)函數(shù)缺點(diǎn)和有點(diǎn)都很明顯,優(yōu)點(diǎn)是可以直接返回相關(guān)系數(shù)R及其P值,這避免了我們進(jìn)一步計(jì)算置信度。而缺點(diǎn)則是該函數(shù)只支持兩個(gè)一維數(shù)組的計(jì)算,也就是說當(dāng)我們需要計(jì)算一個(gè)場和一個(gè)序列的相關(guān)時(shí),我們需要循環(huán)來實(shí)現(xiàn)。

其中a[time,lat,lon],b[time]

(NCL中為regcoef()函數(shù))

同樣推薦Scipy庫中的stats.linregress(x,y)函數(shù):

slop: 回歸斜率

intercept:回歸截距

r_value: 相關(guān)系數(shù)

p_value: P值

std_err: 估計(jì)標(biāo)準(zhǔn)誤差

直接可以輸出P值,同樣省去了做置信度檢驗(yàn)的過程,遺憾的是仍需同相關(guān)系數(shù)一樣循環(huán)計(jì)算。

當(dāng)前名稱:皮爾遜函數(shù)python 皮爾遜相關(guān)matlab
網(wǎng)站網(wǎng)址:http://www.muchs.cn/article8/doggdop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站做網(wǎng)站、電子商務(wù)微信小程序、域名注冊虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營