連續均勻分布continuous-uniform-distribution


引言

當從一個連續的區間內,比如[a, b],隨機選擇隨機數的時候,給出的隨機數的數值就服從連續均勻分布。其概率函數,也可以比較容易理解,就是分段函數,區間外的部分概率是0,區間內的部分概率是均勻的值,即區間長度的倒數。

連續均勻分布是指從a到b的連續區間內隨機選擇隨機數的概率分布,其密度函數定義如下:

連續均勻分布的密度函數

比如,當 a = 1, b = 3時,連續均勻分布的概率函數f(x)的圖像是:

unif 函數圖像

R實踐

  • R中提供了dunif函數, dunif gives the density,也即dunif函數計算,取出某個值的概率,如下:

dunif(x, min = 0, max = 1, log = FALSE)

# 從下可以看出,概率值在指定的區間內,是均勻的。在指定區間之外,概率值就是0.
> dunif(x = 0.5, min = 0, max = 1)
[1] 1
> dunif(x = 0.2, min = 0, max = 1)
[1] 1
> dunif(x = 0, min = 0, max = 3)
[1] 0.333
> dunif(x = -1, min = 0, max = 3)
[1] 0
> dunif(x = 4, min = 0, max = 3)
[1] 0

# 從下可以看出,均勻概率值的大小即為 1/(b-a)
> dunif(x = 0.2, min = 0, max = 2)
[1] 0.5
> dunif(x = 0.2, min = 0, max = 3)
[1] 0.333

所以可以利用dunif函數繪制上圖的概率函數曲線,如下:

> a <- 1
> b <- 3
> x <- seq(0, 5, 0.01)
> y <- dunif(x  = x, min = a, max = b)
> plot(x, y, main = "Density of uniform distribution",xlab = "x",ylab = "Density",col = "red",pch = 19, type = 'l')
  • R 中提供了punif 函數,punif gives the distribution function ,如下:

punif(q, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)

> punif(q = 0.5, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)
[1] 0.5
> punif(q = 0.5, min = 0, max = 2, lower.tail = TRUE, log.p = FALSE)
[1] 0.25
> punif(q = 0.5, min = 0, max = 3, lower.tail = TRUE, log.p = FALSE)
[1] 0.167
> punif(q = 0.2, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)
[1] 0.2
> punif(q = 0.1, min = 0, max = 1, lower.tail = TRUE, log.p = FALSE)
[1] 0.1

  • R 中提供了runif 函數,是生成隨機數的函數。如下:

runif(n, min = 0, max = 1)

> runif(n = 3, min = 0, max = 1)
[1] 0.240 0.812 0.876
> runif(n = 3, min = 0, max = 10)
[1] 9.30 6.60 6.89

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM