分類
R 生物統計

兩個變數之間有相關或相關性嗎?_R語言

#檢定關係的檢定

兩個變數之間有相關或相關性嗎?

將資料中每次的觀測都賦予定性的值(如殼蛋的重量分級為"LL","L","M","MS","S")

將觀測結果分類到各類別,即可運用檢定判斷觀測結果的類別是否獨立,可用的檢定有"卡方相關性檢定"、"phi係數"和"Cramér係數"

#卡方相關性檢定 (Chi-square test of association): 觀測結果可被分配兩個變數各自的組別中。本檢定並未對資料的形式限制,是一種無母數檢定,但卻沒有對應的母數分析。

本檢定統計量為各類別組合的預期觀察數和實際觀測數的差值平方後,再全部相加。將此數值查卡方表,自由度為欄位數減一乘以列數減一。

須注意 (1)預期觀察數不可小於1,應將各類別合併避免此問題 (2)預期觀測數小於5的比率應超過20%,若沒有提升到5以上的辦法,可改用Fisher精確性檢定。

卡方檢定一定要用在頻率 (觀測次數),不能用百分比或是轉換過的資料。統計結果會輸出統計量,自由度和P值的相關資訊。

Example: 調查雞隻打架頻率是否和品種有關。在種雞場中隨機挑選了50隻雞作為定性調查。打架頻率被分為"低(L)"和"高(H)",雞隻被分為四個品種(類別): "絲羽烏骨雞(Silkies)"、"竹崎(Shek-Ki)"、"花東(Hua-Tung)"、"金門(Quemoy)"。

chicken<- matrix(c(10,8,2,7,2,6,10,5),nrow=2,byrow=T, dimnames = list(c(1:2),c("Silkies","Shek-Ki","Hua-Tung","Quemoy")))
#虛無假設為兩種打架頻率的雞隻類別分配比例相等,意旨每個品種和某一打架頻率共同出現的機率相等。該檢定無法判定哪些類別組合比預期出現多還是少,不過可以直接檢視原始資料跟期望值大概就可得知。
chisq.test(chicken) #虛無假設被拒絕,回頭看原始資料可以發現Hua-Tung(花東)較常和打鬥頻率高有關。

#Cramér相關性係數 (Cramér coffecient of association): 和卡方檢定搭配、針對頻率表的檢驗。此係數提供有關相關性強度以外的資訊。χ2統計量用於判斷顯著性,Cramér係數(C)的絕對值則是取值0 (無相關)到1 (完全相關),和樣本大小無關。可以用來比較相關性的程度。

當表格為2X2時Cramér相關性係數就等於Phi係數 (每個變數僅有兩個類別),Phi係數為卡方值除以總觀測數後後開根號

x<- matrix(c(10,2,8,6), nrow=2)
a<-x[1,1]; b<-x[1,2]; c<-x[2,1]; d<- x[2,2]
e<-x[1,1]+x[1,2]; f<-x[2,1]+x[2,2]; g<-x[1,1]+x[2,1]; h<-x[1,2]+x[2,2]
phi<- ((ad)-(bc)) / (sqrt(efg*h))
phi

#觀測值結果賦予一個實際數值: 每次的觀測各付兩個變數一個實際有意義的值,族有一些檢定可以判斷這兩組觀測值是否有相關性、其關係強度、和此相關性是否顯著。有四種檢定可使用: Pearson積差相關、Spearman序位相關、Kendall序列相關、回歸。

「標準」相關 (Pearson積差相關): 此檢驗產生的數值r是用來估計真實的相關係數 ρ (rho) 。取值從-1到1,代表完全負相關到完全正相關。使用條件為兩個變數均須為連續尺度,且均為常態分佈,若這些假定不成立則興改成Spearman序列相關。

Example: 調查荷蘭牛每日食用飼糧的重量(kg),共有六對牛,虛無假設為公母牛的食量沒有相關。兩個變數都遵從常態分佈。

Holstein<- matrix(c(17.1,16.5,18.5,17.4,19.7,17.3,16.2,16.8,21.3,19.5,19.6,18.3), ncol = 2, byrow = T,
                  dimnames= list(c(1:6),c("female","male")))
Holstein<- as.data.frame(Holstein)
Holstein$pair<- c(1:6)
Holstein<- data.frame(pair= Holstein$pair, female=Holstein$female,male= Holstein$male)
cor(Holstein[,"female"],Holstein[, "male"])
cor(Holstein$female,Holstein$male)^2 #r^2為0.77
cor(Holstein) #可把所有變數組合的相關係數輸出
cor.test(Holstein$female,Holstein$male) #該指令可輸出更多結果跟P值,結果確認0.8相關係數確實顯著,P值為0.02,r的信賴區間為0.24-0.98。代表雌性和雄性的食量很可能呈正相關。

#Spearman序列相關 (Spearman’s rank order correlation): 為「Pearson積差相關」對應的無母數檢定版本之一。輸出的統計量稱為rs,取值也是-1到1,雖然看起來跟Pearson的r相同,但不建議直接拿來跟r比較。只要同一個體有兩個觀測值,這些觀測值的測量尺度可以有意義的被排序。該相關比Pearson保守許多。

Example: 使用跟上題一樣的資料

cor(Holstein$female, Holstein$male, method = "spearman")
cor.test(Holstein$female,Holstein$male, method = "s") 
cor(rank(Holstein$female), rank(Holstein$male)) #使用rank可以驗證是否得到相同結果,也可以發現Spearman就是排序資料的Pearson相關。

#Kendall排序相關 (Kendall rank-oder correlation): 較少使用的無母數相關,有時被稱為「Kendall’s tau」,統計量以T表示。跟Spearson一樣,只有資料的每個個體都有兩個觀測值,且可以有意義的被排序,就是用此檢定。但一樣不建議r值直接拿來跟上述兩種檢定直接比較。

相較於Spearman,T可以用於偏相關。

解讀T的顯著性時需注意,樣本數很大時,就算相關性很薄弱,P值還是可能會小於0.05。

cor(Holstein$female, Holstein$male, method = "k")
cor.test(Holstein$female,Holstein$male, method = "k") #T值0.6,算是滿强的正相關,但因為資料規模太小所以P值遠大於0.05。

 

提供R srcipt參考 (格式為CP950)

參考來源: 生物統計學:如何選擇與應用

發表迴響