重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
本篇內容介紹了“R語言相關關系可視化函數有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
公司主營業務:網站制作、網站設計、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯推出灤州免費做網站回饋大家。
一、pairs {graphics}
1. 參考
(1)《現代統計圖形》 5.17 散點圖矩陣
(2)《R數據可視化手冊》 5.13繪制散點圖矩陣
(3)pairs {graphics} 幫助文檔
2. 主要參數解釋
3. 圖形示例
3.1 基本圖形
pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)]) # 等同于 pairs(~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width, data=iris,main = "Anderson's Iris Data -- 3 species",pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
上例選取iris鳶尾花數據集的前4列Sepal.Length 、Sepal.Width 、Petal.Length、Petal.Width作圖,同時設置bg使得不同顏色代表不同品種的鳶尾花。可見,默認生成的散點圖矩陣對角線為變量名稱,上三角和下三角面板的各個窗格均為其所在行與列兩個變量之間的散點圖,信息傳遞量相對較少且重復,為此我們可以通過自定義函數進一步修改和優化。
3.2 自定義圖形
# 1. 自定義函數pannel.cor:顯示兩兩變量間的相關系數,相關系數越大字號越大。 panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...) { usr <- par("usr"); on.exit(par(usr)) par(usr = c(0, 1, 0, 1)) r <- abs(cor(x, y)) txt <- format(c(r, 0.123456789), digits = digits)[1] txt <- paste0(prefix, txt) if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt) text(0.5, 0.5, txt, cex = cex.cor * r) } # 2. 自定義函數pannel.hist:展示各個變量的直方圖 panel.hist <- function(x, ...) { usr <- par("usr"); on.exit(par(usr)) par(usr = c(usr[1:2], 0, 1.5) ) h <- hist(x, plot = FALSE) breaks <- h$breaks; nB <- length(breaks) y <- h$counts; y <- y/max(y) rect(breaks[-nB], 0, breaks[-1], y, col = "cyan", ...) } # 3. 自定義函數panel.ls:繪制散點圖,并為其添加線性擬合直線 panel.lm<-function(x,y,col=par("col"),bg=NA,pch=par("pch"), cex=1,col.smooth="black",...){ points(x,y,pch=pch,col=col,bg=bg,cex=cex) abline(stats::lm(y~x),col=col.smooth,...) } # 4. 用相關系數(pannel.cor)替代默認圖形上三角的散點圖,用直方圖(pannel.hist)替代默認圖形對角線的變量名稱,用添加線性擬合線的散點圖(panel.ls)代替默認圖形下三角的散點圖。 pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)], diag.panel=panel.hist, upper.panel=panel.cor, lower.panel=panel.lm)
自定義后的散點圖矩陣主對角線上用了直方圖,從中我們可以看到四個變量各自的分布情況;上三角面板顯示了各個變量之間的相關系數,相關系數越大字號越大;下三角為散點圖,并用不同顏色的點標記出鳶尾花的不同類型,同時利用函數panel.ls()添加了一條線性擬合線。此外,我們也可以將子面板函數設置為NULL,使得圖形僅顯示一半。
二、gpairs {gpairs}
1. 參考
(1)gpairs {gpairs} 幫助文檔
(2)統計之都:不同版本的散點圖矩陣
https://cosx.org/2009/03/scatterplot-matrix-visualization
2. 主要參數解釋
3. 圖形示例
library(gpairs) gpairs(iris, upper.pars = list(scatter = 'stats'), scatter.pars = list(pch = substr(as.character(iris$Species), 1, 1), col = as.numeric(iris$Species)), stat.pars = list(verbose = TRUE))
上圖中,4*4矩陣反映了iris前4列Sepal.Length 、Sepal.Width 、Petal.Length、Petal.Width變量兩兩之間的相關關系,其中,上三角顯示了相關關系的數量特征,如相關系數、p值等;下三角為散點圖,不同種類的鳶尾花用不同顏色、不同點型表示;最右側一列和最下方一行則分別對三種鳶尾花的花萼和花瓣長寬進行了簡單的描述性統計分析。
三、corrgram {corrgram}
1. 參考
(1)《R語言實戰》11.3 相關圖
(2)Friendly M. Corrgrams: Exploratory Displays for Correlation Matrices[J]. American Statistician, 2002, 56(4):316-324.
(3)corrgram {corrgram} 幫助文檔
2. 主要參數解釋
3. 圖形示例
library(corrgram) vars2 <- c("Assists","Atbat","Errors","Hits","Homer","logSal", "Putouts","RBI","Runs","Walks","Years") corrgram(baseball[vars2], order=TRUE, main="Baseball data PC2/PC1 order", lower.panel=panel.shade, upper.panel=panel.pie)
上圖中,下三角面板用陰影的深度來表示相關性大小,其中藍色和從左下指向右上的斜杠表示單元格中的兩個變量呈正相關,紅色和從左上指向右下的斜杠表示變量呈負相關;色彩越深,飽和度越高,變量相關性越大。上三角面板用餅圖的填充比例來表示相關性大小,顏色的功能同上,但相關性大小由被填充的餅圖塊的大小來展示,正相關性將從12點鐘處開始順時針填充餅圖,負相關性則逆時針方向填充餅圖。
corrgram(auto, order=TRUE, main="Auto data (PC order)", lower.panel=corrgram::panel.ellipse, upper.panel=panel.bar, diag.panel=panel.minmax, col.regions=colorRampPalette(c("darkgoldenrod4", "burlywood1", "darkkhaki", "darkgreen")))
上圖中,下三角面板繪制置信橢圓和平滑擬合曲線,上三角面板繪制柱形圖;主對角面板指定顯示變量的最小值和***值;矩陣的行和列利用主成分分析法進行了重排序。此外,也可設置 lower.panel或upper.panel為NULL使得圖形僅顯示一半。
四、corrplot {corrplot}
1. 主要參數解釋
2. 圖形示例
(1)相關矩陣可視化
僅相關系數
library(corrplot) data(mtcars) M <- cor(mtcars) corrplot(M, order = "AOE", type = "upper", tl.pos = "d") corrplot(M, add = TRUE, type = "lower", method = "number", order = "AOE", diag = FALSE, tl.pos = "n", cl.pos = "n")
上圖中,上三角面板以不同顏色和大小的圓形表示相關性大小,其中,藍色表示正相關,紅色表示負相關;顏色越深、圓形越大代表相關性越高;下三角面板在原有圖形的基礎上疊加而成(如果想僅顯示部分,可不再疊加),用相關系數的數值和顏色表示相關性方向和大小,并利用AOE(前兩個特征向量的角排序)對變量進行重排序。
相關系數+P值
res1 <- cor.mtest(mtcars, conf.level = 0.95) corrplot(M, method="ellipse",p.mat = res1$p, sig.level = 0.2,order = "AOE", type = "upper", tl.pos = "d") corrplot(M, add = TRUE, p.mat = res1$p, sig.level = 0.2,type = "lower", method = "number", order = "AOE", diag = FALSE, tl.pos = "n", cl.pos = "n")
上圖中,上三角面板繪制橢圓形,下三角顯示相關系數,并設置沒通過統計相關性檢驗的結果打X。
(2)普通矩陣可視化
dat = matrix(c(1:10,10:1), nrow = 10) wb <- c("white", "black") corrplot(t(dat), method="pie", is.corr = F, cl.pos = "n", tl.pos = "n", cl.lim = c(1,10),col = wb, bg = "gold2")
五、ggpairs {GGally}
1. 參考
ggpairs {GGally}幫助文檔
2. 主要參數解釋
3. 圖形示例
(1)直接指定圖形類型
library(GGally) ggpairs(flea, columns = 2:4, ggplot2::aes(colour=species))
上圖基于函數默認參數設置,并建立顏色和種類的映射,使得不同種類具有不同顏色,其中,上三角面板顯示相關系數,包括總體相關以及不同種類的相關;下三角繪制散點圖;主對角線用面積圖表示。
(2)自定義函數
library(ggplot2) diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 1000), ] ggpairs( diamonds.samp[, c(1:2,5,7)], mapping = aes(color = cut), lower = list(continuous = wrap("density", alpha = 0.5), combo = "dot_no_facet"), title = "Diamonds" )
上圖利用wrap將相關參數進行封裝,使得下三角顯示密度圖,透明度為0.5。
六、coplot {graphics}
又名“條件分割圖”,與上述函數思想有所不同,該函數能夠實現在給定某一個(或幾個)變量z之后看觀察兩個變量之間的關系(以散點圖形式),條件分割圖中散點圖的順序是從左到右、從下到上,分別與條件變量從左到右、從下到上的指示條對應。關于coplot的具體解釋和用法可參見幫助文檔及謝益輝《現代統計圖形》5.9 條件分割圖,下面是原書中的一個例子。
par(mar = rep(0, 4), mgp = c(2, 0.5, 0)) library(maps) coplot(lat ~ long | depth, data = quakes, number = 4, ylim = c(-45, -10.72), panel = function(x, y, ...) { map("world2", regions = c("New Zealand","Fiji"), add = TRUE, lwd = 0.1, fill = TRUE,col = "lightgray") text(180, -13, "Fiji", adj = 1) text(170, -35, "NZ") points(x, y, col = rgb(0.2, 0.2, 0.2, 0.5)) })
quakes {datasets} 數據集反映了1964年以來斐濟島附近發生的震級MB大于4.0的地震事件數據,如果我們想知道該地區在地震深度分布上是否均勻,可以令深度變量為條件變量,繪制條件分割圖,觀察在不同條件下地震發生地點(經緯度)是否有變化。圖示上方是用矩形條標記出來的條件變量的取值范圍,下方是條件散點圖,從圖中可以清楚地看出,隨著深度值的增加,地震發生地點逐漸由西向東、由南向北移動,震源較深的地震都發生在離斐濟島很近的東南側。
七、其他函數
以上六個函數很大程度上可以滿足我們對相關關系可視化的需求,此外,R還提供了眾多相關函數,下面選取了幾個函數幫助文檔中的實例進行簡單介紹以作了解。
1. splom {lattice}
基于lattice作圖系統,也可以通過進一步的設置達到更高的可視化要求。
library(lattice) super.sym <- trellis.par.get("superpose.symbol") splom(~iris[1:4], groups = Species, data = iris, panel = panel.superpose, key = list(title = "Three Varieties of Iris", columns = 3, points = list(pch = super.sym$pch[1:3], col = super.sym$col[1:3]), text = list(c("Setosa", "Versicolor", "Virginica"))))
2. scatterplotMatrix {car}
可以直接指定主對角線上的圖形元素(密度圖、箱線圖、直方圖、QQ圖等),還可以在散點圖中添加擬合曲線、平滑曲線、相關讀橢圓等。
library(car) scatterplotMatrix(~ income + education + prestige | type, data=Duncan)
3. ggscatmat {GGally}
簡化版的ggpairs,只有五個參數:數據源、觀測范圍設定、顏色、透明度及相關度計算方法。
library(GGally) data(flea) ggscatmat(flea, columns = 2:4, color = "species")
4. cpairs {gclus}
library(gclus) data(USJudgeRatings) judge.cor <- cor(USJudgeRatings) judge.color <- dmat.color(judge.cor) cpairs(USJudgeRatings,panel.colors=judge.color,pch=".",gap=.5)
“R語言相關關系可視化函數有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!