R語言生成隨機數(shù)實例講解
1.概述
作為一種語言進行統(tǒng)計分析,R有一個隨機數(shù)生成各種統(tǒng)計分布功能的綜合性圖書館。R語言可以針對不同的分布,生成該分布下的隨機數(shù)。其中,有許多常用的個分布可以直接調(diào)用。本文簡單介紹生成常用分布隨機數(shù)的方法,并介紹如何生成給定概率密度分布下的隨機數(shù)。
2.常用分布的隨機數(shù)
在R中各種概率函數(shù)都有統(tǒng)一的形式,即一套統(tǒng)一的 前綴+分布函數(shù)名:
d 表示密度函數(shù)(density);
p 表示分布函數(shù)(生成相應(yīng)分布的累積概率密度函數(shù));
q 表示分位數(shù)函數(shù),能夠返回特定分布的分位數(shù)(quantile);
r 表示隨機函數(shù),生成特定分布的隨機數(shù)(random)。
2.1各種分布的隨機數(shù)生存函數(shù):
rnorm(n, mean=0, sd=1) #正態(tài)分布 rexp(n, rate=1) #指數(shù) 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以二項分布為例,實現(xiàn)上述各類函數(shù):
dbinom(x, size, prob, log = FALSE)# 可用于計算二項分布的概率。 pbinom(q, size, prob, lower.tail = TRUE, log.p = FALSE)#二項分布的分布函數(shù)值 qbinom(p, size, prob, lower.tail = TRUE, log.p = FALSE)#生成二項分布的特定分位數(shù) rbinom(n, size, prob)#生成二項分布的隨機數(shù)
二項分布隨機數(shù)
二項分布是指n次獨立重復(fù)伯努利試驗成功的次數(shù)的分布,每次伯努利試驗的結(jié)果只有兩個,成功和失敗,記成功的概率為p。生成二項分布隨機數(shù)的函數(shù)是:rbinom() 。句法是:rbinom(n,size,prob)
。n表示生成的隨機數(shù)數(shù)量,size表示進行伯努利試驗的次數(shù),prob表示一次貝努力試驗成功的概率。
#例:產(chǎn)生100個n為10,20,50,概率p為0.25的二項分布隨機數(shù): 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逆變換法
假設(shè)我們希望生成一個離散型隨機變量X,它有密度
我們首先可以生成一個均勻分布的隨機數(shù),使得:
#代碼實現(xiàn)如下:<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:假設(shè)要生成1000個服從b(100,0.6)的隨機數(shù)
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)
到此這篇關(guān)于R語言生成隨機數(shù)實例講解的文章就介紹到這了,更多相關(guān)R語言生成隨機數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于R語言時間序列的平穩(wěn)時間序列模型預(yù)測圖文詳解
時間序列是將統(tǒng)一統(tǒng)計值按照時間發(fā)生的先后順序來進行排列,時間序列分析的主要目的是根據(jù)已有數(shù)據(jù)對未來進行預(yù)測,下面這篇文章主要給大家介紹了基于R語言時間序列的平穩(wěn)時間序列模型預(yù)測的相關(guān)資料,需要的朋友可以參考下2022-12-12R語言繪制數(shù)據(jù)可視化Dumbbell?plot啞鈴圖
這篇文章主要為大家介紹了R語言繪制數(shù)據(jù)可視化Dumbbell?plot啞鈴圖的實現(xiàn)步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02R語言實現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程
Python語言越來越流行,尤其是在機器學(xué)習(xí)與深度學(xué)習(xí)等領(lǐng)域,但是R語言在數(shù)據(jù)分析與可視化方面仍然具有絕對的優(yōu)勢,下面這篇文章主要給大家介紹了關(guān)于R語言實現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程,需要的朋友可以參考下2022-11-11