本篇主要分爲四部分:app
1.揭示不肯定性ide
關於不肯定的信息,怎麼展現很重要,在ggplot2中共有四類幾何對象能夠用於這項工做,具體使用取決於x的值是離散型仍是連續型的。這些幾何對象列於下表中:函數
變量X類型 | 僅展現區間 | 同時展現區間和中間值 |
連續型 | geom_ribbon | geom_smooth(stat = "identity") |
離散型 | geom_errorbar對象 geom_linerangeblog |
geom_crossbarit geom_pointrangeio |
下例擬合了一個雙因素含交互效應迴歸模型,而且展現瞭如何提取邊際效應和條件效應,以及如何將其可視化。table
> library(ggplot2) > library(effects) > d <- subset(diamonds , carat <2.5 & rbinom(nrow(diamonds),1,0.2)==1) > d$lcarat <- log10(d$carat) > d$lprice <- log10(d$price) > qplot(lcarat,lprice,data=d) > #剔除總體的線性趨勢 > detrend <- lm(lprice ~ lcarat,data=d) > d$lprices <- resid(detrend) > mod <- lm(lprices ~ lcarat*color,data=d) > effectdf <- function(...){ + suppressWarnings(as.data.frame(effect(...))) + } > color <- effectdf("color",mod) > both1 <- effectdf("lcarat:color",mod) > carat <- effectdf("lcarat",mod,default.levels=50) > both2 <- effectdf("lcarat:color",mod,default.levels = 3) > qplot(lcarat,lprice,data=d,colour=color) #圖1
> qplot(lcarat,lprices,data=d,colour=color)#圖2
以上進行數據變換以移除顯而易見的效應,圖1對x軸和y軸的數據均取以10 爲底的對數對數以剔除非線性性。圖2剔除了主要的線性趨勢。function
> fplot <- ggplot(mapping = aes(y=fit,ymin=lower,ymax=upper)) + ylim(range(both2$lower,both2$upper)) > fplot %+% color + aes(x=color) + geom_point() +geom_errorbar() #圖3 下左 > fplot %+% both2 + + aes(x = color,colour=lcarat,group=interaction(color,lcarat))+ + geom_errorbar() + geom_line(aes(group=lcarat))+ + scale_colour_gradient() #圖4 下右
上兩張圖展現了模型評估結果中變量color的不肯定性。左圖爲color的邊際效應,右圖是針對carat的不一樣水平(level),變量color的條件效應,偏差棒顯示了95%的逐點置信區間。class
> fplot %+% carat + aes(x=lcarat)+geom_smooth(stat="identity") 圖5 下左 > ends <- subset(both1,lcarat==max(lcarat)) > fplot %+% both1 + aes(x=lcarat,colour=color) + + geom_smooth(stat="identity")+ + scale_colour_hue() + theme(legend.position = "none")+ + geom_text(aes(label=color,x=lcarat+0.02),ends) #圖6 下右 >
上圖展現模型估計結果中變量carat的不肯定性。上左圖爲carat的邊際效應,上右圖則是針對變量color的不一樣水平,變量carat的條件效應。偏差帶顯示了95%的逐點置信區間。
2.統計摘要
對於每一個x的取值,計算對應y值的統計摘要一般是頗有用的。在ggplot2中,這一角色由stat_summary()但當,它使用ymin,y和ymax等圖形屬性,爲彙總y的條件分佈提供了一種靈活的方法。
2.1單獨的統計摘要函數
參數fun.y,fun.ymin和fun.ymax可以接受簡單的數值型摘要計算函數,即該函數可以傳入一個數據向量並返回一個數值型結果,如:mean(),median(),min(),max().
2.2統一的摘要計算函數
fun.data能夠支持更復雜的摘要計算函數,固然也可使用本身編寫的摘要計算函數:以下,此函數應返回一個各元素有名稱的向量做爲輸出。
3.添加圖形註解
在使用額外的標籤註解時,要記住的重要一點:這些註解僅僅是額外的數據而已。添加圖形註解有兩種方式:逐個添加或者批量添加。
下面的例子,咱們分別以兩種方式,向經濟數據中加入有關美國總統的信息。
> (unemp <- qplot(date,unemploy,data=economics,geom="line", + xlab="",ylab="No.unemployed(1000s)"))
> presidential <- presidential[-(1:3),] > yrng <- range(economics$unemploy) > xrng <- range(economics$date) > unemp + geom_vline(aes(xintercept = as.numeric(start)),data=presidential) >
4.含權數據
在處理整合數據時,數據集地每一行可能表明了許多中觀測值,此時咱們須要以某種方式把權重變量考慮進去。這裏以2000年美國人口普查中,中西部各州地統計數據爲例。
權重變量地不一樣將極大地影響圖形內容以及觀察結論。有兩種能夠用於表現權重地可調圖形屬性。
首先對於線和點這類簡單地幾何對象,咱們能夠根據點地數量調整圖形屬性size來改變點地大小。
> qplot(percwhite,percbelowpoverty,data=midwest) ##無權重 下圖左 > qplot(percwhite,percbelowpoverty,data=midwest,size=poptotal /1e6) + scale_size_area("Population\n(milions)",breaks=c(0.5,1,2,4)) ##以人口數量爲權重 下圖中 > qplot(percwhite,percbelowpoverty,data=midwest,size=area) + scale_size_area() ##以面積爲權重 下圖右
對於更復雜、涉及到統計變換地狀況,咱們經過修改weight屬性來表現權重。這些權重將被傳遞給統計彙總計算函數。好比各種平滑器,分位迴歸,箱線圖,直方圖以及各種密度圖。
咱們沒法直接看到這個權重變量,並且它也沒有對應地圖例,但它卻能夠改變統計彙總地結果。
> lm_smooth <- geom_smooth(method = lm,size=1) > qplot(percwhite,percbelowpoverty,data=midwest) + lm_smooth ##未考慮權重地最優擬合曲線 ##下左圖 > qplot(percwhite,percbelowpoverty,data=midwest,weight=popdensity,size=popdensity) + lm_smooth ##以人口數量做爲權重地最優擬合曲線 下右圖
在咱們使用總人口做爲權重去修改直方圖或密度圖地時候,咱們地視角將從郡數量分佈轉換到對人口數量分佈地觀察。
> qplot(percbelowpoverty,data=midwest,binwidth=1) ##不含權重信息 下左圖 > qplot(percbelowpoverty,data=midwest,weight=poptotal,binwidth=1) + ylab("population") ##含權重信息的直方圖 下右圖 >
不含權重信息的直方圖展現了郡的數量,而含權重信息的直方圖展現了人口數量。權重的增長確實改變了對圖形的理解。