目錄:【概念定義】簡單相關(guān)分析相關(guān)系數(shù)的假設(shè)檢驗(R語言)【深度探討】純探討向—— \rho=0 是什么情況【實戰(zhàn)經(jīng)驗】我工作中的相關(guān)性分析案例經(jīng)驗:常用于分析指標間的相關(guān)性
ps. 均附上 R語言 / 的雙版本代碼和示例
一、變量間的關(guān)系分析
變量之間的關(guān)系可分為兩類:
存在完全確定的關(guān)系——稱為函數(shù)關(guān)系不存在完全確定的關(guān)系——雖然變量間有著十分密切的關(guān)系,但是不能由一個或多各變量值精確地求出另一個變量的值兩變量相關(guān)性分析做三線表兩變量相關(guān)性分析做三線表,稱為相關(guān)關(guān)系,存在相關(guān)關(guān)系的變量稱為相關(guān)變量
相關(guān)變量的關(guān)系也可分為兩種:
兩個及以上變量間相互影響——平行關(guān)系一個變量變化受另一個變量的影響——依存關(guān)系
它們對應(yīng)的分析方法:
回歸分析和相關(guān)分析都是研究變量之間關(guān)系的統(tǒng)計學課題,兩種分析方法相互結(jié)合和滲透
《多元統(tǒng)計分析及R語言》第四版王斌會 P46二、簡單相關(guān)分析相關(guān)分析:就是通過對大量數(shù)字資料的觀察,消除偶然因素的影響,探求現(xiàn)象之間相關(guān)關(guān)系的密切程度和表現(xiàn)形式
主要研究內(nèi)容:現(xiàn)象之間是否相關(guān)、相關(guān)的方向、密切程度等,不區(qū)分自變量與因變量,也不關(guān)心各變量的構(gòu)成形式
主要分析方法:繪制相關(guān)圖、計算相關(guān)系數(shù)、檢驗相關(guān)系數(shù)
這里挑最常用的相關(guān)系數(shù)來講解
1、 計算兩變量之間的線性相關(guān)系數(shù)
所有相關(guān)分析中最簡單的就是兩個變量間的線性相關(guān),一變量數(shù)值發(fā)生變動,另一變量數(shù)值會隨之發(fā)生大致均等的變動,各點的分布在平面圖上大概表現(xiàn)為一直線。
二元總體X與Y散點圖
線性相關(guān)分析,就是用線性相關(guān)系數(shù)來衡量兩變量的相關(guān)關(guān)系和密切程度
給定二元總體 (X,Y)
總體相關(guān)系數(shù)用 ρ 來表示:
ρ_{X,Y}=\frac{cov(X,Y)}{\sqrt{var(X)var(Y)}}=\frac{E[(X-\mu_X)(Y-\mu_Y)]}{\sqrt{\{X}^{2}\{Y}^{2}}}
\^2 為 X 的總體方差,
\^2 是 Y 的總體方差,
cov(X,Y) 是 x 與 y 的協(xié)方差。
【補充知識】什么是協(xié)方差?
設(shè) (X,Y) 是二維隨機變量,若 E[(X-E(X))(Y-E(Y))] 存在,
則稱 cov(X,Y)=E[(X-E(X))(Y-E(Y))] ,叫 X 與 Y 的協(xié)方差,也叫 X 與 Y 的相關(guān)(中心)矩
即 X 的偏差 [X-E(X)] 與 Y 的偏差 [Y-E(Y)] 乘積的期望。
解讀:
根據(jù)柯西-施瓦爾茲不等式(– ):
[Cov(X,Y)]^2\leq \^2 \^2
變形得 \rho_{X,Y} 在區(qū)間 [-1,1]
ρ_{X,Y} 是沒有單位的,因為分子協(xié)方差的量綱除以了分母的與分子相同的量綱
協(xié)方差與相關(guān)系數(shù)的關(guān)系,就像絕對數(shù)與相對數(shù)的關(guān)系。
相關(guān)系數(shù)(樣本線性相關(guān)系數(shù))
但是,學過統(tǒng)計的都知道,我們一般用樣本線性相關(guān)系數(shù)來估計總體線性相關(guān)系數(shù)
設(shè) (X,Y) 是二元總體,簡單隨機抽樣 (x_1,y_1) ,(x_2,y_2),......,(x_n,y_n)
樣本均值 \bar{x} 和 \bar{y} : \bar{x}=\frac{1}{n}\sum_{i=1}^n x_i , \bar{y}=\frac{1}{n}\sum_{i=1}^n y_i
樣本方差 s_{xx} 和 s_{yy} : s_{xx}=\frac{1}{n-1}\sum_{i=1}^n(x_i-\bar{x})^2 , s_{yy}=\frac{1}{n-1}\sum_{i=1}^n(y_i-\bar{y})^2
樣本協(xié)方差 s_{xy} : s_{xy}=\frac{1}{n-1}\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})
樣本相關(guān)系數(shù):
r=\frac{s_{xy}}{\sqrt{s_{xx}s_{yy}}}=\frac{l_{xy}}{l_{xx}l_{yy}}=\frac{\sum_{i=1}^{n}{(x-\bar{x})(y-\bar{y})}}{\sqrt{\sum_{i=1}^n{(x-\bar{x})^2\sum_{i=1}^n{(y-\bar{y})^2}}}}
l_{xx} 為 x 的離差平方和, l_{yy} 為 y 的離差平方和, l_{xy} 為 x 與 y 離差乘積之和(可正可負)
實際計算可按下面簡化:
l_{xx} = \sum_{i=1}^n{(x-\bar{x})^2} = \sum_{i=1}^n{x}^2-\frac{(\sum_{i=1}^n x)^2}{n}
l_{yy} = \sum_{i=1}^n(y-\bar{y})^2 = \sum_{i=1}^n{y}^2-\frac{(\sum_{i=1}^ny)^2}{n}
l_{xy} = \sum_{i=1}^n(x-\bar{x})(y-\bar{y}) =\sum_{i=1}^nxy-\frac{(\sum_{i=1}^nx)(\sum_{i=1}^ny)}{n}
例子:研究身高與體重的關(guān)系(R語言)
> x <- c(171,175,159,155,152,158,154,164,168,166,159,164)
> y <- c(57,64,41,38,35,44,41,51,57,49,47,46)
> plot(x,y)
> lxy <- function(x,y){
+ n = length(x);
+ return(sum(x*y)-sum(x)*sum(y)/n)
+ }
> lxy(x,x)
[1] 556.9167
> lxy(y,y)
[1] 813
> lxy(x,y)
[1] 645.5
> r <- lxy(x,y)/sqrt(lxy(x,x)*lxy(y,y))
> r
[1] 0.9593031

# 也能直接用cor()
> cor(x,y)
[1] 0.9593031
這里的 0">r>0 ,說明身高和體重是正的線性相關(guān)關(guān)系
至于 r 是否顯著,就要看下面的顯著性檢驗了。
版本的代碼如下:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.array([171,175,159,155,152,158,154,164,168,166,159,164])
>>> y = np.array([57,64,41,38,35,44,41,51,57,49,47,46])
>>> np.corrcoef(x, y)
array([[1. , 0.95930314],
[0.95930314, 1. ]])
>>> plt.scatter(x, y)
>>> plt.show()
2、相關(guān)系數(shù)的假設(shè)檢驗
引入假設(shè)檢驗的原因: r 與其他統(tǒng)計指標一樣,也會有抽樣誤差。從同一總體內(nèi)抽取若干大小相同的樣本,各樣本的樣本相關(guān)系數(shù)總會有波動。即根據(jù)樣本數(shù)據(jù)是否有足夠的證據(jù)得出總體相關(guān)系數(shù)不為0的結(jié)論
要判斷不等于 0 的 r 值是來自總體相關(guān)系數(shù) ρ=0 的總體,還是來自 \rho\ne0 的總體,必須進行顯著性檢驗
顯著性檢驗是事先對總體(隨機變量)的參數(shù)或總體分布形式做出一個假設(shè),然后利用樣本信息來判斷這個假設(shè)(備擇假設(shè))是否合理,即判斷總體的真實情況與原假設(shè)是否有顯著性差異
由于來自 \rho=0 的總體呈白噪聲或者其他特殊分布
(為什么?看圖第一行中間、第三行)
因為樣本間沒有線性相關(guān)性,可能會雜亂無章(即什么關(guān)系也沒有),也可能呈現(xiàn)出一些非線性關(guān)系(更高階的關(guān)系相關(guān)系數(shù)并不能表示出來)
圖片來自Wiki
關(guān)于 \rho=0 會在第 3 章繼續(xù)探討
但是來自 \rho=0 的總體的所有樣本相關(guān)系數(shù) r 是呈對稱分布(好好思考一下為什么)
所以 r 的顯著性檢驗可以用雙側(cè) t 檢驗來進行
(1)建立檢驗假設(shè): H_{0}:\rho=0,H_{1}:\rho\ne0,\alpha=0.05
零假設(shè):樣本都是從 \rho=0 的總體中抽取的樣本
備擇假設(shè):樣本都是從 \rho \neq 0 的總體中抽取的樣本
檢驗分為兩種:
一種是總體近似服從二維正態(tài)分布一種是總體嚴格服從二維正態(tài)分布
(2)構(gòu)造 t 統(tǒng)計量,計算相關(guān)系數(shù) r 的 t 值: t=\frac{|r-\rho| \sqrt{n-2}}{\sqrt{1-r^2}}=\frac{|r-0|}{\sqrt{\frac{1-r^2}{n-2}}}
若數(shù)據(jù)近似服從二維正態(tài)分布,且樣本容量 n 不是特別小,此 t 就近似服從 t(n-2) 分布
如果數(shù)據(jù)嚴格服從二維正態(tài)分布
樣本相關(guān)系數(shù) r 的密度函數(shù)為:
\Gamma 是 gamma 函數(shù), F_1(a,b;c;d) 是高斯超幾何函數(shù)。
特殊情況下,當總體相關(guān)系數(shù) \rho=0 時(假定兩個隨機變量是正態(tài)無相關(guān)的)
樣本相關(guān)系數(shù) r 的密度函數(shù)為: f(r)=\frac{(1-r^2)^{\frac{n-4}{2}}}{B(\frac{1}{2},\frac{n-2}{2})}
B 是 beta 函數(shù),此密度函數(shù)碰巧就是統(tǒng)計量 t 就是自由度為 n-2 的 t 分布,即 t(n-2)
(3)計算 t 值和 P 值,做結(jié)論
在 R語言 中有 cor.test() 函數(shù)
# r的顯著性檢驗,
# 參數(shù)alternative默認是"two.side"即雙側(cè)t檢驗
# 參數(shù)method默認"pearson"
> cor.test(x1, x2)
Pearson's product-moment correlation
data: x1 and x2
t = 10.743, df = 10, p-value = 8.21e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.8574875 0.9888163
sample estimates:
cor
0.9593031
R 的 cor.test() 在這里給出的結(jié)果還是比較豐富的。
這段檢驗該如何解讀?
這段代碼檢驗了身高和體重的相關(guān)系數(shù)為 0 的原假設(shè) H_0
即假設(shè)總體相關(guān)度為 0 ,則預計在一百萬次中只會有少于一次的機會見到 0. 這樣大的相關(guān)度 \rho (即 P-value=8.21\^{-7}