r语言做绘制精美pcoa图_R语言统计与绘图:绘制QQ图
QQ圖一般用來比較兩組數(shù)字的分布,比如兩個變量或兩個向量。
在國外,顧客習慣性會給服用人員小費,給多少小費是一個經(jīng)常被討論的話題,今天使用的數(shù)據(jù)集為reshape2包的tips數(shù)據(jù)集,用來演示QQ圖的繪制。
先來看看這個數(shù)據(jù)集:
1.加載數(shù)據(jù)集
install.packages("reshape2")?#?安裝包library(reshape2)?#?加載包
attach(tips)?#?綁定數(shù)據(jù)集
head(tips)?#?查看數(shù)據(jù)集前6行
數(shù)據(jù)集中有7個變量,主要用到tip變量。
2. 繪制密度圖
數(shù)據(jù)集中有個tip變量(小費),我們先來看看tip變量的分布,比如說繪制個密度圖。
plot(density(tip),??#?繪制密度圖?????main?=?"繪制tip變量的密度圖",??#?添加標題
?????col?=?"blue",?#?設(shè)置線的顏色
?????lwd?=?2)?#?設(shè)置線寬
從上圖可以看出tip變量分布是不均勻的,圖形右邊有一條長長的尾巴,這表明,有些顧客給出的小費比較多,但大多數(shù)顧客的小費在2-4之間。
大多數(shù)統(tǒng)計分析方法都要求數(shù)據(jù)分布為正態(tài)分布,或接近正態(tài)分布。
為了演示tip變量分布與正態(tài)分布之間的差別,我們在同一畫板上繪制圖形。
具體操作:先使用rnorm()函數(shù)生成一組數(shù)字,這組數(shù)字命名為ran,然后繪制ran的密度圖,并使用ploygon()函數(shù)繪制填充曲線,然后使用lines()函數(shù)在同一圖上繪制tip變量的密度圖。
ran?=?rnorm(1000000)?#?生成一組隨機數(shù)字plot(density(ran),?#?繪制ran密度圖
?????main?=?"tip密度圖與正態(tài)分布之間的差異",?#?設(shè)置圖像標題
?????xlim?=?c(-4,10))?#?設(shè)置坐標軸范圍
polygon(density(ran),?col?=?"burlywood")?#?繪制填充曲線
lines(density(tip),??#?添加曲線
??????col?=?"blue",?#?設(shè)置曲線顏色
??????lwd?=?2)?#?設(shè)置曲線寬度
如上圖所示,顯示的信息比前面更多,但是畢竟這兩組數(shù)字的均值不一致,所以圖形重疊的不多,我們可以通過設(shè)置相關(guān)參數(shù),來創(chuàng)建一個新的tip變量。
tip變量可以簡單的方法轉(zhuǎn)化為平均值為0,標準差為1的新變量newtip。
mean(tip)?#?計算tip均值#?[1]?2.998279
sd(tip)?#?計算tip標準差
#?[1]?1.383638
newtip?=?(tip-2.998)/1.384?#?創(chuàng)建新變量newtip
plot(density(ran),?#?繪制正態(tài)分布圖形
?????ylim?=?c(0,.48),?#?設(shè)置y范圍
?????main?=?"newtip變量與正態(tài)分布差異",?#?設(shè)置圖形
?????xlim?=?c(-4,8))?#?設(shè)置x范圍
polygon(density(ran),?#?設(shè)置填充曲線
????????col?=?"burlywood")?#?設(shè)置顏色
lines(density(newtip),?#?添加曲線
??????col?=?"blue",?#設(shè)置曲線顏色
??????lwd?=?2)?#?設(shè)置線寬
3. 繪制QQ圖
還有其他方法也可以比較這兩種分布,從而得到不同的圖形。
首先計算下tip變量的摘要信息:
summary(tip)#???Min.?1st?Qu.??Median????Mean?3rd?Qu.????Max.?
#??1.000???2.000???2.900???2.998???3.562??10.000?
summary()函數(shù)會計算出tip變量的四分位間距,我們還可以通過quantile()函數(shù)計算變量的分位數(shù)。
比如說下面這個變量qtip可以計算tip變量0-1,每隔0.1的分位數(shù)結(jié)果。
qtip?=?quantile(tip,?seq(0,1,.1))qtip
#?0%????10%????20%????30%????40%????50%????60%????70%????80%????90%???100%?
#?1.000??1.500??2.000??2.000??2.476??2.900??3.016??3.480??4.000??5.000?10.000?
我們可以將tip變量的分位數(shù)與ran變量的分位數(shù)進行繪圖,來確定這兩個變量分布的一致性,因此這種圖形也叫做分位數(shù)圖或者QQ圖。
下面來繪制圖形,代碼如下:
qtip2?=?quantile(tip,?seq(0,1,.005))?#?計算tip變量的分位數(shù)結(jié)果qqplot(ran,?qtip2,?#繪制QQ圖
???????main?=?"QQ圖",?#?設(shè)置圖形標題
???????xlim?=?c(-3,3),??#?設(shè)置x范圍
???????col?=?"skyblue2")?#?設(shè)置顏色
qqline(qtip2,?#?設(shè)置參考線
???????col?=?"burlywood",?#?設(shè)置顏色
???????lwd?=?2)?#?設(shè)置線寬
grid(lty?=?"dotted",?#?設(shè)置網(wǎng)格
?????col?=?"gray75")?#?設(shè)置顏色
如上圖可以看出,即使tip變量中間大部分范圍都接近于正態(tài)分布,但其兩端仍相距甚遠,這表明tip變量不接近正態(tài)分布,進行正態(tài)分布分析可能是不明智的。
如果你知道做了繪制QQ圖的原理,那么你可以使用下面這個函數(shù)來快速制作QQ圖,而不用創(chuàng)建分位數(shù)變量。
qqnorm(tip,?#?繪制圖形的變量???????main?=?"快速繪制QQ?plot",?#?圖形標題
???????col?=?"blue",?#?設(shè)置顏色
???????ylab?=?"tip?quantiles")?#?設(shè)置y軸標簽
qqline(tip,?#?設(shè)置參考線
???????col?=?"burlywood",?#?設(shè)置顏色
???????lwd?=?2)?#?設(shè)置線寬
grid(lty?=?"dotted",?#?設(shè)置網(wǎng)格
?????col?=?"gray75")?#?設(shè)置顏色
4. 對數(shù)轉(zhuǎn)換
如前所述,tip變量不是正態(tài)分布的,我們可以通過轉(zhuǎn)換來是數(shù)據(jù)達到正態(tài)分布,比如說對數(shù)變換。
logtip?=?log10(tip)?#?設(shè)置對數(shù)轉(zhuǎn)換qqnorm(logtip,?#?繪圖變量
???????main?=?"log10(tip)的QQ圖",
???????col?=?"blue4")?#?設(shè)置顏色
qqline(logtip,?#?設(shè)置參考線
???????col?=?"burlywood3",?#?設(shè)置顏色
???????lwd?=?2)?#?設(shè)置線寬
參考資料
既往專輯
總結(jié)
以上是生活随笔為你收集整理的r语言做绘制精美pcoa图_R语言统计与绘图:绘制QQ图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 域查看工具开源_SEO人员,如何为网站开
- 下一篇: 一致 先验分布 后验分布_分布式事务常见