R語言中多列數據計算相關係數及其顯著性

這個網站的主題越來越好了,markdown寫作真的會上癮,加上這麼好的編輯器,真的是不要太爽喔!

知乎,微信公衆號編輯器推薦: https://mdnice.com/

下面是正文,寫這個主題是因爲我想計算一下相關係數和顯著性,發現自己也忘記怎麼操作的了。所謂最好的記憶方法就是寫篇博客,如果還沒學會的話,就寫一本教程吧(參考我學習DMU的故事,從入門到禿頭!)。我之所以寫這麼多字,一來公衆號原創需要300字,灌水,二來朋友說我的寫作風格是往人臉上扔大糞,上來就是統計語言和代碼,惡臭撲鼻!這個要改,改。

R語言中cor函數,只能計算相關係數,如果想要計算顯著性,需要兩兩用cor.test進行,如果是多列數據,操作比較麻煩。這裏介紹兩個包,非常方便的進行多列數據的相關係數及其顯著性的檢驗,並且給出可視化。

1. 模擬數據

這裏模擬出10列數據,轉化爲數據庫,是100行10列的數據,目的是爲了計算這10列的相關係數及其顯著性,雖然隨機數沒有顯著性可言,但是作爲一個演示,還是很可以說明問題的。

> set.seed(123)
> dd = as.data.frame(matrix(rnorm(1000),100,10))
> head(dd)
           V1          V2         V3         V4          V5          V6          V7         V8         V9        V10
1 -0.56047565 -0.71040656  2.1988103 -0.7152422 -0.07355602 -0.60189285  1.07401226 -0.7282191  0.3562833 -1.0141142
2 -0.23017749  0.25688371  1.3124130 -0.7526890 -1.16865142 -0.99369859 -0.02734697 -1.5404424 -0.6580102 -0.7913139
3  1.55870831 -0.24669188 -0.2651451 -0.9385387 -0.63474826  1.02678506 -0.03333034 -0.6930946  0.8552022  0.2995937
4  0.07050839 -0.34754260  0.5431941 -1.0525133 -0.02884155  0.75106130 -1.51606762  0.1188494  1.1529362  1.6390519
5  0.12928774 -0.95161857 -0.4143399 -0.4371595  0.67069597 -1.50916654  0.79038534 -1.3647095  0.2762746  1.0846170
6  1.71506499 -0.04502772 -0.4762469  0.3311792 -1.65054654 -0.09514745 -0.21073418  0.5899827  0.1441047 -0.6245675

2. 計算相關係數及顯著性

首先要載入Hmisc這個包,因爲我們要用這個包裏面的rcorr函數,如果沒有這個包,那就運行命令install.packages("Hmisc")安裝即可。

題外話,這種藍色的代碼高亮,真是太好看了,我進而想到王者榮耀的皮膚那麼多人購買真的是有很多人在乎顏值的,進而推測出我鑽石五星段位的持久性與我沒有氪金有很強的關聯性,因爲充錢的快樂只能N連勝的喜悅纔可以體會。順便說一句,當你N連跪之後就把遊戲卸了洗洗睡吧,我今天都把騰訊的企業微信給投訴了,是截圖投訴的,然後領導告訴我“知道爲什麼騰訊把你公衆號封一個月吧?打遊戲不氪金還瞎比比。。。”

> # 計算相關係數及顯著性
> library(Hmisc)#加載包
> res2 <- rcorr(as.matrix(dd))
> res2
       V1    V2    V3    V4    V5    V6    V7    V8    V9   V10
V1   1.00 -0.05 -0.13 -0.04 -0.19 -0.06 -0.03  0.18 -0.02  0.01
V2  -0.05  1.00  0.03  0.04 -0.13  0.11  0.08 -0.03 -0.05 -0.09
V3  -0.13  0.03  1.00 -0.04 -0.02  0.02  0.01 -0.12 -0.05 -0.01
V4  -0.04  0.04 -0.04  1.00 -0.02 -0.09 -0.06  0.17 -0.17  0.25
V5  -0.19 -0.13 -0.02 -0.02  1.00  0.21 -0.01 -0.14 -0.04 -0.02
V6  -0.06  0.11  0.02 -0.09  0.21  1.00 -0.06  0.09  0.07 -0.03
V7  -0.03  0.08  0.01 -0.06 -0.01 -0.06  1.00  0.00 -0.13 -0.02
V8   0.18 -0.03 -0.12  0.17 -0.14  0.09  0.00  1.00  0.00  0.02
V9  -0.02 -0.05 -0.05 -0.17 -0.04  0.07 -0.13  0.00  1.00 -0.02
V10  0.01 -0.09 -0.01  0.25 -0.02 -0.03 -0.02  0.02 -0.02  1.00

n= 100 


P
    V1     V2     V3     V4     V5     V6     V7     V8     V9     V10   
V1         0.6246 0.2002 0.6632 0.0547 0.5767 0.7343 0.0706 0.8234 0.9135
V2  0.6246        0.7626 0.6650 0.1952 0.2567 0.4398 0.7435 0.6543 0.3653
V3  0.2002 0.7626        0.6576 0.8061 0.8573 0.9317 0.2544 0.5985 0.8866
V4  0.6632 0.6650 0.6576        0.8492 0.3737 0.5284 0.0950 0.1008 0.0139
V5  0.0547 0.1952 0.8061 0.8492        0.0392 0.9488 0.1628 0.6958 0.8741
V6  0.5767 0.2567 0.8573 0.3737 0.0392        0.5225 0.3515 0.4622 0.8046
V7  0.7343 0.4398 0.9317 0.5284 0.9488 0.5225        0.9979 0.2012 0.8398
V8  0.0706 0.7435 0.2544 0.0950 0.1628 0.3515 0.9979        0.9936 0.8107
V9  0.8234 0.6543 0.5985 0.1008 0.6958 0.4622 0.2012 0.9936        0.8225
V10 0.9135 0.3653 0.8866 0.0139 0.8741 0.8046 0.8398 0.8107 0.8225  

3. 顯著性的可視化

上面有相關係數,有對應的顯著性,但是R語言做完統計如果沒有可視化,就像吃完飯沒有喝湯,總感覺少了什麼,那就可視化吧!

> library(PerformanceAnalytics)#加載包
> chart.Correlation(dd, histogram=TRUE, pch=19)

4. 完整代碼

這就很魔幻了,我本來計劃靠公衆號年薪百萬呢,真的有這個計劃(),現在看起來,轉爲情感賬號是不是更符合公衆號的格調,因爲這是育種數據分析,而育種主要在於選種選配,進而到看手相,八字,起名,婚前諮詢,科學算命,情感賬號很明顯就是以後的發展方向啊,我忽然發現了一片藍海。。。,我已經聽到了海的聲音。

長按掃碼關注!

放飛自我

set.seed(123)
dd = as.data.frame(matrix(rnorm(1000),100,10))

head(dd)

# 計算相關係數及顯著性
library(Hmisc)#加載包
res2 <- rcorr(as.matrix(dd))
res2

# 可視化
library(PerformanceAnalytics)#加載包
chart.Correlation(dd, histogram=TRUE, pch=19)


這是結尾,高中課文裏面有一篇意識流的小說叫做《牆上的斑點》,現在看起來,我纔讀懂,如果沒有這麼好的編輯器,這篇博文肯定就像一堆大糞一樣,讓你捏着鼻子看完,然後說,好的,這是一篇介紹相關分析和顯著性的R語言操作,和往常一樣,沒有理論解釋,只有代碼和結果,他可能對我有用,但是我不想再看第二遍!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章