鄭連虎,在數學學院取得理學學位的文科生,中國人民大學碩博連讀生在讀,山東大學管理學學士、理學學士
個人公眾號:阿虎定量筆記
文章(技術貼│Stata回歸圖表美化)推送之後,有讀者問我,能不能給相關係數的報告也美化一下?當然沒問題,這期我來介紹用R語言中的5個程序包,繪製13種相關係數矩陣,13種哦~圖後直接上代碼。
本期使用R語言內置數據集進行練習;查看R包含哪些內置數據,請使用「data()」函數:
我們使用這裡面的「mtcars」數據,
包含「mpg」、「cyl」、「disp」、「hp」、「drat」等11個變量的汽車道路測試數據;在R中讀取內置數據,直接輸入數據名稱即可:
corrplot包
# 安裝corrplot包並調用
install.packages("corrplot")
library(corrplot)
第1種:簡單粗暴
藍色表示兩個變量呈正相關,紅色表示變量呈負相關。色彩越深,表示變量相關性越大:
# 計算相關係數
mycor<-cor(mtcars)
# 刪除缺失值或字符變量
use="complete.obs"
# 輸出為mycor且保留兩位小數
round(mycor,digits=2)
# 繪製相關係數矩陣圖
corrplot(mycor, method = "shade",shade.col = NA, tl.col ="black", tl.srt = 45, order = "AOE")
第2種:圓圈圖
藍色表示兩個變量呈正相關,紅色表示變量呈負相關。色彩越深,表示變量相關性越大:
# 計算相關係數
mycor <- cor(mtcars)
# 繪製相關係數矩陣圖
corrplot(mycor, method="circle")
第3種:帶係數的橢圓圖
橢圓越扁,表示相關係數的絕對值較大;橢圓越圓,表示相關係數的絕對值較小;橢圓長軸的方向表示相關係數的正負:右上-左下方向對應正值,左上-右下方向對應負值:
# 計算相關係數
mycor <- cor(mtcars)
# 繪製相關係數矩陣圖
corrplot.mixed(mycor, upper = "ellipse")
第4種:三角圓圈圖
# 計算相關係數
mycor <- cor(mtcars)
# 繪製相關係數矩陣圖
corrplot(mycor, method="circle",type="upper",order="hclust")
第5種:三角顏色圖
# 計算相關係數
mycor <- cor(mtcars)
# 繪製相關係數矩陣圖
corrplot(mycor,method="color",type="upper",order="hclust",addCoef.col = "black")
corrgram包
# 安裝iterators包並調用
install.packages("iterators")
library(iterators)
# 安裝corrgram包並調用
install.packages("corrgram")
library(corrgram)
第6種:添加斜線
藍色和從左下指向右上的斜槓表示兩個變量呈正相關,紅色和從左上指向右下的斜槓表示變量呈負相關。色彩越深,表示變量相關性越大:
# 繪製相關係數矩陣圖
corrgram(mtcars, lower.panel=panel.shade, upper.panel=NULL,text.panel=panel.txt, main="Car Mileage Data (unsorted)")
第7種:添加餅圖
上三角區域使用餅圖表示相關係數;藍色和從12點鐘處開始順時針填充餅圖表示兩個變量呈正相關,紅色和逆時針方向填充餅圖表示變量負相關:
# 繪製相關係數矩陣圖
corrgram(mtcars, order=TRUE, lower.panel=panel.shade, upper.panel=panel.pie,text.panel=panel.txt, main="Correlogram of mtcar intercorrelations")
第8種:添加擬合曲線與置信橢圓
下三角區域使用平滑擬合曲線和置信橢圓,上三角區域使用散點圖:
# 繪製相關係數矩陣圖
corrgram(mtcars, order=TRUE, lower.panel=panel.ellipse, upper.panel=panel.pts,text.panel=panel.txt, diag.panel=panel.minmax, main="Correlogram of mtcardata using scatterplots and ellipses")
ellipse包
# 安裝ellipse包並調用
install.packages("ellipse")
library(ellipse)
第9種:橢圓圖
橢圓越扁,表示相關係數的絕對值較大;橢圓越圓,表示相關係數的絕對值較小;橢圓長軸的方向表示相關係數的正負:右上-左下方向對應正值,左上-右下方向對應負值:
# 繪製相關係數矩陣圖
col = colors[as.vector(apply(cor, 2, rank))]
plotcorr(cor, col = col, mar = rep(0, 4))
第10種:顏色圖
藍色表示正相關係數,紅色表示負相關係數:
# 計算相關係數
fit = lm(mpg ~ ., mtcars)
cor = summary(fit, correlation = TRUE)$correlation
# 相關陣上下倒轉再轉置
cor2 = t(cor[11:1, ])
# 繪製相關係數矩陣圖
colors = c("#A50F15", "#DE2D26","#FB6A4A", "#FCAE91","#FEE5D9","white", "#EFF3FF","#BDD7E7", "#6BAED6", "#3182BD","#08519C")
image(1:11, 1:11, cor2, axes = FALSE, ann = F, col = colors)
text(rep(1:11, 11), rep(1:11, each = 11), round(100 * cor2))
GGally包
# 安裝GGally包並調用
install.packages("GGally")
library(GGally)
第11種:三角顏色圖
# 繪製相關係數矩陣圖
ggcorr(mtcars, label = TRUE, label_alpha = TRUE)
第12種:添加相關類型
# 繪製相關係數矩陣圖
ggpairs(mtcars, columns = c("mpg", "cyl", "disp"),upper = list(continuous = wrap("cor", size = 10)), lower =list(continuous = "smooth"))
PerformanceAnalytics包
# 安裝PerformanceAnalytics包並調用
install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
第13種:添加直方圖、散點圖與P值
顯示相關係數大小、相關係數顯著性檢驗的P值、變量的直方圖與變量間的散點圖:
# 列出待計算變量
mydata <-mtcars[c('mpg','cyl','disp','hp','drat')]
# 繪製相關係數矩陣圖
chart.Correlation(mydata, histogram=TRUE, pch=19)
本期參考文獻
[1] Robert I. Kabacoff. R in Action-Data analysis and graphics with R. Manning Publications Co. 2015: 283-287.
公眾號後臺回復關鍵字即可學習
回復 爬蟲 爬蟲三大案例實戰
回復 Python 1小時破冰入門
回復 數據挖掘 R語言入門及數據挖掘
回復 人工智慧 三個月入門人工智慧
回復 數據分析師 數據分析師成長之路
回復 機器學習 機器學習的商業應用
回復 數據科學 數據科學實戰
回復 常用算法 常用數據挖掘算法