想用MATLAB中的corrcoef函數(shù)求兩個向量的相關(guān)系數(shù).
比如A=[1 2 3];B=[5 3 7]; r= corrcoef(A,B)可以求出相關(guān)系數(shù)是0.5.為什么兩個向量的元素都要是3個以上才行?而只有兩個元素的向量如A=[1 2];B=[5 3];不管怎么隨機(jī)的取,相關(guān)系數(shù)都是1或-1啊?只含兩個元素的向量,都一定相關(guān)嗎?
這是求相關(guān)度的結(jié)果,對于一般的矩陣X,執(zhí)行A=corrcoef(X)后,A中每個值的所在行a和列b,反應(yīng)的是原矩陣X中相應(yīng)的第a個列向量和第b個列向量的相似程度(即相關(guān)系數(shù)).計算公式是:C(1,2)/SQRT(C(1,1)*C(2,2)),其中C表示矩陣[f,g]的協(xié)方差矩陣,假設(shè)f和g都是列向量(這兩個序列的長度必須一樣才能參與運(yùn)算),則得到的(我們感興趣的部分)是一個數(shù).以默認(rèn)的A=corrcoef(f,g)為例,輸出A是一個二維矩陣(對角元恒為1),我們感興趣的f和g的相關(guān)系數(shù)就存放在A(1,2)=A(2,1)上,其值在[-1,1]之間,1表示最大的正相關(guān),-1表示絕對值最大的負(fù)相關(guān)
>> A=[1 2 3];B=[5 3 7]; r= corrcoef(A,B)
r =
1.0000 0.5000
0.5000 1.0000
>> A=[1 2];B=[5 3];
r= corrcoef(A,B)
r =
1.0000 -1.0000
-1.0000 1.0000%%-1是算出來的,不是說二維向量就一定相關(guān),根據(jù)圖中r和協(xié)方差矩陣的關(guān)系
cov(A,B)
ans =
0.5000 -1.0000
-1.0000 2.0000%%%A和B的協(xié)方差矩陣,
那么R(1,2)=C(1,2)/(sqrt(C(1,1)*C(2,2)))=-1,sqrt為開方的意思.
![](http://h.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=0c7dc7714f4a20a4314b34c1a062b41a/79f0f736afc37931453e194aebc4b74543a9117a.jpg)
非常感謝你的回答,真的是太詳細(xì)了,我都抄在本子上了呵呵。但還是有一點不明白,“-1是算出來的,不是說二維向量就一定相關(guān),”什么意思?為什么任何兩個二維向量計算出來的相關(guān)系數(shù)都是1或者-1?你不是說“1表示最大的正相關(guān),-1表示絕對值最大的負(fù)相關(guān)”嗎?那么任何兩個二維的向量都具有最大的正(負(fù))相關(guān)性嗎?相關(guān)系數(shù)為1,也就是相關(guān)的。我不是學(xué)數(shù)學(xué)的,是做課題的時候發(fā)現(xiàn)這個問題不明白。>> A=[1 0];B=[0 1];%%二維向量,不相關(guān) cov(A,B)ans =0.5000 -0.5000 -0.50000.5000A=[1 2];B=[5 10];%%二維向量,相關(guān) cov(A,B)ans =0.50002.50002.5000 12.5000正相關(guān)是指兩列變量變動方向相同,一列變量由大到小或由小到大變化時,另一列變量亦由大到小或由小到大變化。負(fù)相關(guān)是指兩列變量變動方向相反,一列變量由大到小或由小到大變化時,另一列變量反而由小到大或由大到小變化。matlab 函數(shù)corrcoef也是根據(jù)上面的概念計算的,關(guān)于二維向量計算總得到-1或者1的問題,我仔細(xì)看了下,上面的測試兩組數(shù)據(jù),可以看出協(xié)方差矩陣中sqrt(C(1,1)*C(2,2))=C(1,2)or-C(1,2)。也就是說不管你怎么換數(shù)據(jù)sqrt(C(1,1)*C(2,2))=C(1,2)or-C(1,2)這個式子總是成立的,所以我個人認(rèn)為是樣本數(shù)量(向量維數(shù))少或者是這個函數(shù)的缺陷。