python相關系數
⑴ 如何使用python進行自相關模擬,並作圖
一. 首先說說自相關互相關概念 信號析概念別表示兩間序列間同間序列任意兩同刻取值間相關程度即互相關函數描述隨機信號 x(t),y(t)任意兩同刻t一t二取值間相關程度自相關函數描述隨機信號x(t)任意兩同刻t一t二取值間相關 程度 自相關函數描述隨機信號X(t)任意兩同刻t一t二取值間相關程度;互相關函數給頻域內兩信號否相關判斷指標兩測點間信號互譜與各自自譜聯系起能用確定輸信號程度自輸入信號修測量接入雜訊源產誤差非效. 事實圖象處理自相關互相關函數定義:設原函數f(t)則自相關函數定義R(u)=f(t)*f(-t)其*表示卷積;設兩 函數別f(t)g(t)則互相關函數定義R(u)=f(t)*g(-t)反映兩函數同相位置互相匹配程度 何matlab實現兩相關並用圖像顯示呢 dt=.一; t=[0:dt:一00]; x=cos(t); [a,b]=xcorr(x,'unbiased'); plot(b*dt,a) 面代碼求自相關函數並作圖於互相關函數稍微修改即[a,b]=xcorr(x,'unbiased');改[a,b]=xcorr(x,y,'unbiased');便 二. 實現程: Matalb求解xcorr程事實利用Fourier變換卷積定理進行即R(u)=ifft(fft(f)×fft(g))其 ×表示乘註:公式僅表示形式計算並非實際計算所用公式直接採用卷積進行計算結與xcorr同事實兩者既定 理保證結定相同沒用公式已面檢驗兩者結相同代碼: dt=.一; t=[0:dt:一00]; x=三*sin(t); y=cos(三*t); subplot(三,一,一); plot(t,x); subplot(三,一,二); plot(t,y); [a,b]=xcorr(x,y); subplot(三,一,三); plot(b*dt,a); yy=cos(三*fliplr(t)); % or use: yy=fliplr(y); z=conv(x,yy); pause; subplot(三,一,三); plot(b*dt,z,'r'); 即xcorr使用scaling 三. 其相關問題: (一)相關程度與相關函數取值聯系 相關系數比率等單位量度單位名稱相關百數般取數點兩位表示相關系數負號表示相關向絕值表示相關程度等單位度量能說相關系數0.漆0.三5兩倍能說相關系數0.漆二列變數相關程度比相關系數0.三5二列變數相關程度更密切更高能說相關系數0.漆00.吧0與相關系數0.三00.四0增加程度 於相關系數所表示意義目前統計界尚致通認: 相關系數 相關程度 0.00-±0.三0 微相關 ±0.三0-±0.50 實相關 ±0.50-±0.吧0 顯著相關 ±0.吧0-±一.00 高度相關 (二)matlab計算自相關函數autocorrxcorr 別用兩函數同序列計算結太xcorr沒均值減掉做相關autocorr則減掉均值且用離散信號做自相關信號截取度(采點N)自相關函數 (三)xcorr計算互相關函數帶option參數: a=xcorr(x,y,'option') option=sed計算互相關函數偏估計; option=unsed計算互相關函數偏估計; option=coeff計算歸化互相關函數即互相關系數-一至一間; option=none預設情況 所想要計算互相關系數用'coeff'參數 用xcorr函數作離散互相關運算要注意x, y等向量短向量自填0與齊運算結行向量列向量與x 互相關運算計算x,y兩組隨機數據相關程度使用參數coeff結互相關系數-一至一間否則結定范圍能能視乎x, y數據所般要計算兩組數據相關程度般選擇coeff參數結進行歸化 所謂歸化簡單理解數據系列縮放-一一范圍式種簡化計算式即量綱表達式經變換化量綱表達式純量變換式X=(X實測--Xmin)/(Xmax-Xmin) 般說選擇歸化進行互相關運算結絕值越兩組數據相關程度越
⑵ Python中做了相關性分析發現相關系數太低,接下來應該怎麼做
你這問題問得太簡略了啊,多給點細節看一下
⑶ 如何生成指定相關系數的隨機數
有平均數的約束,那麼能夠隨機的必定只有49個數字,
可以這樣做
在A1到A49個單元格裡面輸入
=8+int(RAND()*2)
這里直接復制到一個單元格,然後拖動就可以,因為生成隨機數,所以這49個單元格裡面的公式都一樣
在A50單元格裡面輸入
=M*50-sum(A1:A49)
注意,這里「M」就是你要求的平均數,你也可以把他關聯到某個單元格
這樣就可以了
如果不清楚可以給我一個郵箱,我做好發給你
⑷ python 哪個函數和matlab corrcoef函數功能相同
cov
這個函數是實現這個功能的
另外,對於任意兩個維度之間的相關關系可以用pearsonr來計算
哦,忘了說了,cov是numpy裡面的,pearsonr是scipy.stats裡面的
⑸ python polyfit函數怎麼使用
用polyfit(X,Y,1)得到的擬合函數只能得到a,b,但不能得到線性相關系數R^2。如想要得到其線性相關系數,可以用regress(y,X),其使用格式
[b,bint,r,rint,stats] = regress(y,X);
b——擬合系數
bint——b的置信區間
r——殘差值
rint——r的置信區間
stats——檢驗統計量,第一個就是相關系數
例如:
x=[。。。];y=[。。。]
X=[x ones(n,1)]; %x的行數(列數)
[b,bint,r,rint,stats] = regress(y,X);
⑹ 初學python,怎樣用python做pearson相關系數的檢驗呢,求指導啊
scipy.stats.pearsonr(x, y)
x和y為相同長度的兩組數據
返回值 r, p-value
r是相關系數,取值-1~1. 表示線性相關程度
p-value越小,表示相關程度越顯著。按照文檔的說法「The p-values are not entirely reliable but are probably reasonable for datasets larger than 500 or so.」,p-value在500個樣本值以上有較高的可靠性
⑺ pytnon中如何計算皮爾遜的p值
如何理解皮爾遜相關系數(Pearson Correlation Coefficient)?
皮爾遜相關系數理解有兩個角度
其一, 按照高中數學水平來理解, 它很簡單, 可以看做將兩組數據首先做Z分數處理之後, 然後兩組數據的乘積和除以樣本數
Z分數一般代表正態分布中, 數據偏離中心點的距離.等於變數減掉平均數再除以標准差.(就是高考的標准分類似的處理)
標准差則等於變數減掉平均數的平方和,再除以樣本數,最後再開方.
所以, 根據這個最樸素的理解,我們可以將公式依次精簡為:
其二, 按照大學的線性數學水平來理解, 它比較復雜一點,可以看做是兩組數據的向量夾角的餘弦.
皮爾遜相關的約束條件
從以上解釋, 也可以理解皮爾遜相關的約束條件:
1 兩個變數間有線性關系
2 變數是連續變數
3 變數均符合正態分布,且二元分布也符合正態分布
4 兩變數獨立
在實踐統計中,一般只輸出兩個系數,一個是相關系數,也就是計算出來的相關系數大小,在-1到1之間;另一個是獨立樣本檢驗系數,用來檢驗樣本一致性.
先舉個手算的例子
使用維基中的例子:
例如,假設五個國家的國民生產總值分別是1、2、3、5、8(單位10億美元),又假設這五個國家的貧困比例分別是11%、12%、13%、15%、18%。
創建2個向量.(R語言)
x<-c(1,2,3,5,8)
y<-c(0.11,0.12,0.13,0.15,0.18)
按照維基的例子,應計算出相關系數為1出來.我們看看如何一步一步計算出來的.
x的平均數是:3.8
y的平均數是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.8sum((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.5497750.00308^0.5=0.05549775
用分子除以分母,就計算出最終結果:
0.308/(5.549775*0.05549775)=1
再舉個簡單的R語言例子(R在這里下載:http://cran.r-project.org/bin/macosx/)
假設有100人, 一組數據是年齡,平均年齡是35歲,標准差是5歲;另一組數據是發帖數量,平均帖子數量是45份post,標准差是8份帖子.
假設這兩組都是正態分布.我們來求這兩者的皮爾遜相關系數,R腳本如下:
> x<-rnorm(n=100,mean=35,sd=5) #創建一組平均數為35,標准差為5,樣本數為100的隨機數
> y<-rnorm(n=100,mean=45,sd=8) #創建一組平均數為45,標准差為8,樣本數為100的隨機數
> cor.test(x,y,method="pearson") #計算這兩組數的相關,並進行T檢驗
然後R輸出結果為:
Pearson's proct-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
當然,這里是隨機數.也可以用非隨機的驗證一下計算.
皮爾遜相關系數用於網站開發
直接將R與Ruby關聯起來
調用很簡單,仿照上述例子:
cor(x,y)
就輸出系數結果了.
有這么幾個庫可以參考:
https://github.com/alexgutteridge/rsr...
https://github.com/davidrichards/stat...
https://github.com/jtprince/simpler
說明, 以上為ruby調用庫. pythone程序員可以參考: Rpy (http://rpy.sourceforge.net/)
簡單的相關系數的分類
0.8-1.0 極強相關
0.6-0.8 強相關
0.4-0.6 中等程度相關
0.2-0.4 弱相關
0.0-0.2 極弱相關或無相關
ps : 這個網站開發者不要再次發明輪子,本來用markdown語法寫作很爽,結果又不得不花時間來改動.請考慮盡快支持Markdown語法.
皮爾森相關系數的就是
x和y的協方差/(x的標准差∗y的標准差)
判斷兩組數的線性關系程度。
⑻ python(pandas模塊)
1.什麼是pandas? numpy模塊和pandas模塊都是用於處理數據的模塊。 numpy主要用於針對數組進行統計計算,處理數字數據比較方便。 pandas除了可以處理數字數據,還可...
⑼ python計算多個數組的相關性
線性相關:主要採用皮爾遜相關系數來度量連續變數之間的線性相關強度;
線性相關系數|r| 相關程度
0<=|r|<0.3 低度相關
0.3<=|r|<0.8 中度相關
0.8<=|r|<1 高度相關
1 函數
相關分析函數:
DataFrame.corr()
Series.corr(other)
說明:
如果由數據框調用corr方法,那麼將會計算每個列兩兩之間的相似度
如果由序列調用corr方法,那麼只是計算該序列與傳入序列之間的相關度
返回值:
dataFrame調用:返回DataFrame
Series調用: 返回一個數值型,大小為相關度
2 案例
import pandas
data=pandas.read_csv('C:\\Users\\Desktop\\test.csv')
print(data.corr())
#由數據框調用corr方法,將會計算每個列兩兩之間的相似度,返回的是一個矩形
print(data['人口'].corr(data['文盲率']))
#由某一列調用corr方法,只是計算該序列與傳入序列(本例中的'文盲率')之間的相關度
print(data['超市購物率','網上購物率','文盲率','人口']).corr()