[R language] 常態分佈圖(normal distribution plot)與常態機率圖(normal Q-Q plot)之簡介與繪製
已更新:2022年11月28日
常態分佈圖(normal distribution plot)是將一連續變項觀察值發生機率之分佈情形呈現的圖,大體來說,具有以下幾種特性:
1. 以平均數為中心,構成左右對稱的單峰鐘形曲線.
2. 平均數.中位數和眾數會是同一個值,全體觀察值範圍介於-∞~∞之間,
3. 當中68.26%的數值落在平均數 ± 1個標準差之間;95.44%的數值落在平均數 ± 2個標準差之間; 99.74%的數值落在平均數 ± 3個標準差之間.
因此常態分佈圖在繪製時會設定平均數為0,標準差為1, y軸則是機率密度函數(probability density function,p.d.f).

☺小幫手︰R軟體官方網站(可免費下載R軟體)
以下為筆者彙整的R指令,提供給諸位做參考.使用這套指令,就可以一次繪出上面的常態分佈圖,包含常態曲線圖(左邊)與常態分佈直方圖(右邊)
windows()
split.screen(c(1,2)) screen(1) curve(dnorm(x),from = -3.5, to = 3.5, ylab="p.d.f", main="normal distribution plot - n(0.1)") screen(2) x=rnorm(1000) hist(x, nclass=50)
close.screen(all=T)

以下為筆者彙整的R指令,提供給諸位做參考.使用這套指令,就可以一次繪出上面那張完整的二維標準常態分配的3D大全圖.
windows() x= seq(-3, 3, 0.1) y= x f= function(x, y){1/(2*pi)*exp(-0.5*(x^2 + y^2))} z= outer(x, y, f) split.screen(c(2,1)) split.screen(c(1,2), screen = 1) split.screen(c(1,2), screen = 2) screen(3) persp(x, y, z) screen(4) persp(x, y, z, theta=30, phi=30, box=F, main= "theta=30, phi=30") screen(5) contour(x, y, z) screen(6) image(x,y,z) close.screen(all=T)
常態機率圖(normal quantile-quantile plot,簡稱normal Q-Q plot),是一種能看出資料分布情形,是否符合常態分配的圖.
橫軸顯示的是理論分位數,縱軸則是樣本分位數,資料點散佈於圖上,並有一條虛擬的常態線通過.
以下為筆者使用R語言所繪製的一張圖表,裡面包含了常態分配(normal),正偏(positive),負偏(negative)和高狹峰(leptokurtic),
共四種資料分佈型態的直方圖與QQ圖.讀者可由兩兩對照的直方圖(左)和QQ圖(右),來了解不同資料型態的呈現情形.

由上圖可以了解,當資料服膺常態分配時,資料點大致會分佈在虛擬的常態線附近.
當資料為正偏分佈,也就是落在左側低分區的人數較多時,QQ圖的資料點就會往左側內凹;
當資料為負偏分佈,也就是落在右側高分區的人數較多時,QQ圖的資料點就會往右側外凸;
當資料為高狹分佈,也就是落在中間中分區的人數較多時,QQ圖的資料點就會呈現S型曲線.
以下為筆者彙整的R指令,提供給諸位做參考.使用下面這套指令,就可以一次繪出上面那張完整的常態QQ大全圖.
windows() normal = c(0,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,6) nn = 5000 rnor = rnorm(nn, 0, 1); hist(rnor) leptokurtic = c(0,1,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,5,6) positive = c(0,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,4,4,5,6) negative = c(0,1,2,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,5,6) split.screen(c(2,1)) split.screen(c(1,4), screen = 1) split.screen(c(1,4), screen = 2) screen(3) hist(normal) screen(4) qqnorm(normal) qqline(normal) screen(5) hist(leptokurtic) screen(6) qqnorm(leptokurtic) qqline(leptokurtic) screen(7) hist(positive) screen(8) qqnorm(positive) qqline(positive) screen(9) hist(negative) screen(10) qqnorm(negative) qqline(negative) close.screen(all=T)
希望能對諸位有所幫助,若有什麼建議也請不吝與我分享喔,祝研究順利^^