R語言-相關性分析
- 1.相關性檢驗型別選擇
- 2.匯入資料
- 3.相關性分析主體代碼
- 3.1首先創建一個空白矩陣,后面回圈后的計算結果分別填入
- 3.2批量求解
今天根據自己最近的一個小任務,做光譜與理化性質的相關性分析,總結其中比較重要的兩個點寫成博文,供大家參考:
1.選擇什么型別的相關性檢驗,求相關系數的資料如何構造
2.怎么批量求相關系數
教程的背景問題是做某一個理化性質屬性和光譜的每一個波長做相關性分析,思路是先求一個波長的相關性,回圈對每一個波長都求一遍,最后得到一條在整個波段范圍上的相關系數變化曲線,
1.相關性檢驗型別選擇
查閱資料,具體參見如何選擇相關系數,
相關性檢驗總共有三種型別:Pearson、Spearman、Kendall,三者區別簡而言之是:
Pearson檢驗:定量資料符合正態分布,
Spearman檢驗:定量資料不符合正態分布,
Kendall檢驗:定量資料,檢查一致性,類似于多個評委打分,分數之間是否相關,
所以大家根據自己的資料情況,提前做好正態檢驗,再選擇相應的檢驗型別,這里,我的資料不服從正態分布,所以下面以Spearman檢驗方法為例,
另外,在分析結果時,需要考慮p值,可參考相關性系數和顯著性水平.
2.匯入資料
小技巧:大家可以在excel選項設定中,調一下參考格式,方便后面參考列數,不用再數了,

我的資料集構造如下:
表中8-12列是不同的理化性質,我要分別對每一個理化性質求后面13~最后一列的光譜相關系數,我期望得到的結果資料為行數是所有波長的個數,列是不同的理化性質,

這里使用readxl包讀取excel資料,針對這個問題,readxl包比xlsx包好用一些,
library(readxl)#用這個包比xlsx包好用一些
匯入后,有一點需要注意,匯入后的格式為tbl_df,不能用于接下來的相關性分析函式呼叫,所以轉為資料框格式,
an_dan<-as.data.frame(read_excel("data.xlsx",sheet=2))#這里第幾個sheet就是第幾個
3.相關性分析主體代碼
3.1首先創建一個空白矩陣,后面回圈后的計算結果分別填入
要分別得到相關系數和檢驗的p值,所以創建兩個矩陣,
#先創建空白矩陣
cor_an<-matrix(NA,nrow = 2001,ncol = 5)#矩陣內容為NA空
colnames(cor_an)<-c("干態明度","潤態明度","干態彩度","潤態彩度","OM")
p_an<-matrix(NA,nrow = 2001,ncol = 5)
colnames(p_an)<-c("干態明度","潤態明度","干態彩度","潤態彩度","OM")
3.2批量求解
中心思想:先對一個理化求每一個波段的結果,最后遍歷所有理化,
引入k,k代表第幾個理化,如果你需要對多個屬性求相關性時需要考慮這個,
外層for是對不同的屬性回圈,8:12是不同的理化性質,
內層for里回圈每一個波段,
cor.test函式里,分別放入兩個要檢測相關性的列資料x,y,位置順序沒有關系,我測驗了結果是一樣的(統計沒學好hhh),在method里可以換不同的檢測方法,結果中可以呼叫estimate就是相關系數,p.value就是p值,我們需要把他們都分別保存下來,
求解完第一個理化性質t與第一個波長j后,放入事先創建好的空白矩陣結果中,k在這里掌管列數,放入第幾列就是第幾個理化性質的計算結果,
最后對波長j遞增,結果表中的行號i遞增,
在第二個回圈外,對t+1,計算下一個理化性質,對k+1,準備放入結果的下一列,
最后把結果以csv格式輸出,
k<-1#第幾個理化
for (t in 8:12) {
i<-1#行號,放到這里是為了每次初始化為1,從第一行開始錄入結果
for (j in 13:2013) {#回圈每一個波段
cor_an1<-cor.test(an_dan[,t],an_dan[,j],alternative = "two.sided",method = "spearman",conf.level = 0.95)
cor_an[i,k]<-cor_an1$estimate#相關系數
p_an[i,k]<-cor_an1$p.value#p值
j<-j+1
i<-i+1
}
t<-t+1
k<-k+1
}
write.csv(cor_an,"cor_an.csv")
write.csv(p_an,"p_an.csv")
這就是最終的相關系數計算結果,p值表構造相同,行為每一個波長的計算結果,

以上就是R語言回圈求多個相關系數的程序,回圈得到的結果怎么輸入矩陣是一個重要的技巧,無論在別的資料整理、結果整理中都可以借鑒這樣的錄入思路,
如果覺得有用的話,請大家多多點贊收藏~
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/297189.html
標籤:其他
