天天看點

分類變量和連續變量的相關性度量

本文主要參考《R語言實戰》中第七章内容。

首先來看一下分類變量的探索。R提供了多種檢驗類别型變量(因子)獨立性的方法,主要有卡方獨立性檢驗、Fisher精确檢驗和Cochran-Mantel-Haenszel檢驗。

卡方檢驗

卡方獨立性檢驗可以使用chisq.test()函數對二維列聯表的行變量和列變量進行卡方獨立性檢驗。

分類變量和連續變量的相關性度量

圖中顯示:病人的治療方式與改善情況間不獨立,即存在某種相關性;而病人的性别與治療的改善情況間是獨立的,認為治療的改善情況與病人的性别沒有關系。

Fisher精确檢驗

可以使用fisher.test()函數進行Fisher精确檢驗,該檢驗的原假設是:邊界固定的列聯表中行和列是互相獨立的。與許多統計軟體不同的是fisher.test()函數可以在任意行列數大于等于2的二維列聯表中使用,但不能用于2×2的列聯表。

分類變量和連續變量的相關性度量

Cochran-Mantel-Haenszel檢驗

可以通過mantelhaen.test()函數進行Cochran-Mantel-Haenszel檢驗(如果不記得該檢驗函數,可以嘗試使用apropos('test')查詢所有可用的各種檢驗,其中就包含M-H檢驗)。該檢驗的原假設為:兩個名義變量在第三個變量的每一層中都是條件獨立的。

分類變量和連續變量的相關性度量

上圖結果顯示,在不同的性别下,治療方式與改善情況間不是獨立的,仍然存在一定的相關性。

分類變量相關程度度量

如果已知某些類别型變量之間(因子)不獨立,即存在一定的相關性。那如何得到相關性的大小。這裡可以使用vcd包中的assocstats()函數計算二維列聯表的phi系數、列聯系數(contingency coefficient)和Cramer's V系數。

分類變量和連續變量的相關性度量

連續變量的相關性度量

對于連續變量的相關性,使用相關系數來描述變量間的關系。相關系數的符号表示正相關或負相關,其值的大小表示關系的強弱。

R中可以計算多種相關系數,包括Pearson相關系數、Spearman相關系數、Kendall相關系數、偏相關系數等。

Pearson相關系數度量了兩個連續變量之間的線性相關程度;

Spearman等級相關系數可以衡量非線性關系變量間的相關系數,是一種非參數的統計方法,可以用于定序變量或不滿足正态分布假設的等間隔資料;

Kendall秩相關系數也是一種非參數的等級相關度量,類似于Spearman等級相關系數。

可以通過cor函數計算這三種相關系數。cor()函數中最重要的三個參數為X,use,method:

X為指定分析的矩陣或資料框;

use指定缺失資料的處理辦法(all.obs則假設不存在缺失資料,遇到缺失資料時将會報錯;everything遇到缺失資料時,結果将傳回missing;complete.obs進行行删除;pairwise.complete.obs則成對删除);

method指明計算相關系數的方法,可以使pearson相關系數、spearman相關系數和kendall相關系數。

attach(women)
a <- height
b <- weight
c <- a^2 #a和c之間不存線上性關系

cor(a,b,method = 'pearson')
cor(a,b,method = 'spearman')
cor(a,b,method = 'kendall')

cor(a,c,method = 'pearson')
cor(a,c,method = 'spearman')
cor(a,c,method = 'kendall')      
分類變量和連續變量的相關性度量

對于有缺失的資料集,通過use參數的設定,将會産生不同計算的結果:

分類變量和連續變量的相關性度量

偏相關系數

偏相關系數指在控制一個或多個定量變量時,另外兩個定量變量之間的互相關系。可以使用ggm包中的pcor函數計算偏相關系數。其中pcor函數中的兩個重要參數是u和S:

u為一個數值向量,前兩個數值表示要計算相關系數的變量下标,其餘的數值為條件變量的下标;

S為所有變量的協方差矩陣。

分類變量和連續變量的相關性度量

結果表明:在控制收入、文盲率和高中畢業率的影響下,人口和謀殺率之間的相關系數為0.346。偏相關系數常用于社會科學的研究中。

總結:本文涉及到的R包和函數

stats包

chisq.test()

fisher.test()

mantelhaen.test()

cor()

cov()

vcd包

assocstats()

ggm包

pcor()