R如何檢驗類別變量(nominal variable)與其他變量之間的相關性


1.使用Pearson積差相關系性進行檢驗的話可以判斷兩個變量之間的相關性是否顯著以及相關性的強度

  • 顯著性檢驗 (significant test)
    連續變量 vs 類別變量 (continuous variable VS nominal variable): ANOVA檢驗(R中可使用aov函數)
    類別變量 vs 類別變量 (nominal variable VS nominal variable): 卡方檢驗(R中可使用chisq.test函數)——其實ANOVA的檢驗效果與回歸分析效果相同,具體參見這里
  • 相關性強度(association strength)
    連續變量 vs 類別變量 (continuous variable VS nominal variable):計算組內相關性(R中可使用psych包的ICC函數)
    類別變量 vs 類別變量 (nominal variable VS nominal variable): 計算Cramer's V值(R中可使用vcd包的assocstats函數)
    PS: Cramer's V值(φc)是對稱計算的,所以無論你的變量是放在矩陣的行或列都不影響結果,而行和列的排列順序也不影響。φc的值在0-1之間,φc^2是經典相關系數的均方。

φc 的計算:
在總數為n的樣本中有標為A和B兩類變量,分別有i=1,..,r; j=1,..,k個,每一個都有自己的頻數。

φc的p值與使用Pearson卡方檢驗的p值相同; 在R里面lsr包的crames函數通過stats包的chisq.test函數來計算φc。

2. 置換檢驗(Permutation tests)(非參數檢驗)
傳統的參數檢驗的前提是樣本處於正太分布,數據量大且無離群點。當這些前提條件不再滿足時,參數檢驗就不再有效,需要進行非參數檢驗。非參數檢驗不再關注數據的值,而只關注數據的秩,這樣就拋棄了大量可用的信息。
置換檢驗采取重復隨機抽樣的方法,通過對樣本再抽樣構造經驗分布,然后在此基礎上生成P值進行推斷兩組之間是否存在顯著差異。

此檢驗的原理如下:
我們有A,B兩組數據,分別有m,n個樣品。我們的零假設為A,B的概率分布相同。計算原始樣本A的均值。從n+m中抽取n個標為A,計算A的均值,重復i次,可以得到A樣本均值的分布。通過原始均值與后來的樣本均值分布可以進行假設檢驗。
然后計算原始A和B之間的均值的差異(a0-b0),重復上述抽樣后計算均值差j次,可以得到均值差概率分布。通過原始的差值與后來的概率差分布可以進行假設檢驗。單尾p-value可以通過計算均值差分布中大於(a0-b0)的值所占的比例算出;而雙尾p-value則是統計均值差的絕對值大於ABS(a0-b0)的部分所占的比例。
R中可以使用coin包的oneway_test函數進行檢驗:library(coin)
oneway_test(y~A, data=mydata,distribution=approximate(B=9999))

3. Goodman & Kruskal’s tau檢驗(參考
該檢驗通過計算如下值評估變量之間的聯系:a(x,y) = [V(y) – E{V(y|x)}]/V(y),其中V(y)指y的整體變異度,E{V(y|x)}是在給定x情況下出現y的條件變異度V(y|x)的期望。在極端情況是,如果x和y完全沒關系,那么a(x,y)=0;如果y可以通過x完美預測出來,那么a(x,y)=1。
由於R中似乎沒有現成的計算該值的函數,如下提供了一個:

GKtau <- function(x,y){
  #
  #  First, compute the IxJ contingency table between x and y
  #
  Nij = table(x,y,useNA=”ifany”)
  #
  #  Next, convert this table into a joint probability estimate
  #
  PIij = Nij/sum(Nij)
  #
  #  Compute the marginal probability estimates
  #
  PIiPlus = apply(PIij,MARGIN=1,sum)
  PIPlusj = apply(PIij,MARGIN=2,sum)
  #
  #  Compute the marginal variation of y
  #
  Vy = 1 – sum(PIPlusj^2)
  #
  #  Compute the expected conditional variation of y given x
  #
  InnerSum = apply(PIij^2,MARGIN=1,sum)
  VyBarx = 1 – sum(InnerSum/PIiPlus)
  #
  #  Compute and return Goodman and Kruskal’s tau measure
  #
  tau = (Vy – VyBarx)/Vy
  tau
}

由於該方法使用的是變量的變異度(variability)所以計算是可以帶有缺失值;另外,此檢驗方法的一個重要特點是不對稱,即a(x,y)和a(y,x)一般情況下是不同的,這一點與計算Spearman相關系數不同。不對稱的原因是該方法是通過量化x預測y的可靠程度,這與用y來預測x是不同的。利用這一點,我們可以判斷哪個才是更好的預測指標。比如:如果a(x,y)=0.001而a(y,x)=0.997,那么我們可以認為利用y來預測x會得到比較准確的結果,因此將y作為預測x的指標。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM