R數據分析-------ggplot2工具箱二

本篇主要分爲四部分: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")  ##含權重信息的直方圖 下右圖
> 

  

不含權重信息的直方圖展現了郡的數量,而含權重信息的直方圖展現了人口數量。權重的增長確實改變了對圖形的理解。

相關文章
相關標籤/搜索