R 自學指引 資料處理命令簡介與操作

統計機率命令

R 中內建了很多機率分佈的命令,如常態分佈、二次分佈、卡方分佈、t 分佈等,可以幫使用者產出不同機率分佈的數值、機率值或特定值。這一系列命令的外觀都很相似,是由 d、p、q、r 四個英文字母與機率分佈名稱的排列組合成,所以在此先將四個英文字母(圖3)與機率分佈命令(圖4)拆開成兩個表來說明,使各位能更有系統性地了解。這些分佈命令都有一個共同性,就是每種分佈都擁有 4 個帶有首碼的命令。例如常態分佈,就有 dnorm、pnorm、qnorm 和 rnorm。這幾個首碼的意義如下。

圖3:表一、機率分佈命令首碼及其意義。
圖3:表一、機率分佈命令首碼及其意義。

 

圖4:表二、常機率分佈命令與意義。
圖4:表二、常機率分佈命令與意義。

圖 3 的每個英文字母都可以與表二的機率分佈命令組合,例如 d 加上 unif 的 dunif() 命令,就是回傳均勻分佈的密度值。因此我們有 4X5,共 20 組靈活的命令可供使用,以下是 dunif() 的範例,目的是回傳均勻分佈的機率密度值(圖5)。
> x <- seq(from = -1, to = 2, by = 0.01) (ENTER)
> y <- dunif(x) (ENTER)
> plot(x, y, type = “l”, ylab = “Density”) (ENTER)

圖5:回傳均勻分佈的機率密度值。
圖5:回傳均勻分佈的機率密度值。

punif() 範例如下,例如要回傳對應輸入的均勻分佈累積機率值,可用以下命令。
> punif(0.9) (ENTER)
[1] 0.9
我們也可用 qunif(),回傳對應累積機率值的均勻分佈輸入。
> qunif(0.9) (ENTER)
[1] 0.9 [1] 0.9
runif() 命令格式如下。
runif(n,min=0,max=1)
其中 n 表示生成的亂數數量,min 表示均勻分佈的下限,max 表示均勻分佈的上限。若省略參數 min、max, 則預設產生 [0,1] 上的均勻分佈亂數,以下是回傳 n(=1000) 個符合均勻分佈的隨機值(圖6)的例子。
> x <- runif(1000) (ENTER)
> hist(x, ylab = “Frequency”) (ENTER)

圖6:回傳 n(=1000) 個符合均勻分佈的隨機值。
圖6:回傳 n(=1000) 個符合均勻分佈的隨機值。

同樣地常態分佈(Normal Distribution,簡寫為 norm),也有以 d、p、q、r 為字首的四種命令也就是 dnorm、pnorm、qnorm、rnorm 等四個命令(圖7)。預設常態分佈為標準常態分佈,平均值為 0,標準差為 1,如果想要調整可以分別修改 mean 參數與 sd 參數。

圖7:表三、四種常態命令說明與語法。
圖7:表三、四種常態命令說明與語法。

透過 pdnorm() 可回傳常態分佈的機率密度值(圖8)。
x <- seq(from = -3, to = 3, by = 0.01) (ENTER)
y <- dnorm(x) (ENTER)
plot(x, y, type = “l”, ylab = “Density”) (ENTER)

用 pnorm() 和 qnorm,可回傳對應輸入的常態分佈累積機率值。
> pnorm(1.96) (ENTER)
[1] 0.9750021
接下來回傳對應累積機率值的常態分佈輸入。
> qnorm(0.975) (ENTER)
[1] 1.959964

圖8:回傳常態分佈的機率密度值。
圖8:回傳常態分佈的機率密度值。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。