R語言生成隨機數實例講解
1.概述
作為一種語言進行統計分析,R有一個隨機數生成各種統計分佈功能的綜合性圖書館。R語言可以針對不同的分佈,生成該分佈下的隨機數。其中,有許多常用的個分佈可以直接調用。本文簡單介紹生成常用分佈隨機數的方法,並介紹如何生成給定概率密度分佈下的隨機數。
2.常用分佈的隨機數
在R中各種概率函數都有統一的形式,即一套統一的 前綴+分佈函數名:
d 表示密度函數(density);
p 表示分佈函數(生成相應分佈的累積概率密度函數);
q 表示分位數函數,能夠返回特定分佈的分位數(quantile);
r 表示隨機函數,生成特定分佈的隨機數(random)。
2.1各種分佈的隨機數生存函數:
rnorm(n, mean=0, sd=1) #正態分佈 rexp(n, rate=1) #指數 rgamma(n, shape, rate=1, scale=1/rate) #r 分佈 rpois(n, lambda) #泊松 rt(n, df, ncp) #t 分佈 rf(n, df1, df2, ncp) #f 分佈 rchisq(n, df, ncp=0) #卡方分佈 rbinom(n, size, prob) #二項分佈 rweibull(n, shape, scale=1) #weibull 分佈 rbata(n, shape1, shape2) #bata 分佈runif(n,min=0,max=1) #均勻分佈
2.2以二項分佈為例,實現上述各類函數:
dbinom(x, size, prob, log = FALSE)# 可用於計算二項分佈的概率。 pbinom(q, size, prob, lower.tail = TRUE, log.p = FALSE)#二項分佈的分佈函數值 qbinom(p, size, prob, lower.tail = TRUE, log.p = FALSE)#生成二項分佈的特定分位數 rbinom(n, size, prob)#生成二項分佈的隨機數
二項分佈隨機數
二項分佈是指n次獨立重復伯努利試驗成功的次數的分佈,每次伯努利試驗的結果隻有兩個,成功和失敗,記成功的概率為p。生成二項分佈隨機數的函數是:rbinom() 。句法是:rbinom(n,size,prob)
。n表示生成的隨機數數量,size表示進行伯努利試驗的次數,prob表示一次貝努力試驗成功的概率。
#例:產生100個n為10,20,50,概率p為0.25的二項分佈隨機數: par(mfrow=c(1,3)) p=0.25 for( n in c(10,20,50)) { x=rbinom(100,n,p) hist(x,prob=T,main=paste("n =",n)) xvals=0:n points(xvals,dbinom(xvals,n,p),type="h",lwd=3) } par(mfrow=c(1,1))
3.離散隨機變量的生成3.1逆變換法
假設我們希望生成一個離散型隨機變量X,它有密度
我們首先可以生成一個均勻分佈的隨機數,使得:
#代碼實現如下:<br>p1<-0.15 p2<-0.2 p3<-0.3 p4<-0.35 disRand<-function(i){ u<-runif(1,0,1) if(u<p1) x<-4 else if(u<p2+p2) x<-2 else if(u<p3+p2+p1) x<-1 else x<-3 return(x) }
3.2二項隨機變量的生成
Example:假設要生成1000個服從b(100,0.6)的隨機數
p<-0.6 n<-100 c<-p/(1-p) i<-0 pp<-(1-p)^n f<-pp binomialRandomeV<-function(o){ u<-runif(1,0,1) f<- while(u>=f){ pp<-c*(n-i)*pp/(i+1) f<-f+pp i<-i+1 } return(i) } sapply(c(1:1000),binomialRandomeV)
到此這篇關於R語言生成隨機數實例講解的文章就介紹到這瞭,更多相關R語言生成隨機數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- R語言關於二項分佈知識點總結
- R語言隨機數生成的實現
- 詳解R語言MCMC:Metropolis-Hastings采樣用於回歸的貝葉斯估計
- R語言數據可視化ggplot添加左右y軸繪制天貓雙十一銷售圖
- R語言中的vector(向量),array(數組)使用總結