python依照概率抽样_R语言之随机数与抽样模拟篇
R語(yǔ)言生成均勻分布隨機(jī)數(shù)的函數(shù)是runif()
句法是:runif(n,min=0,max=1) ?n表示生成的隨機(jī)數(shù)數(shù)量,min表示均勻分布的下限,max表示均勻分布的上限;若省略參數(shù)min、max,則默認(rèn)生成[0,1]上的均勻分布隨機(jī)數(shù)。
例1:
> runif(5,0,1) ?# 生成5個(gè)[0,1]的均勻分布的隨機(jī)數(shù)
[1] 0.5993 0.7391 0.2617 0.5077 0.7199
> runif(5) ?# 默認(rèn)生成5個(gè)[0,1]上的均勻分布隨機(jī)數(shù)
[1] 0.2784 0.7755 0.4107 0.8392 0.7455
例2
隨機(jī)產(chǎn)生100個(gè)均勻分布隨機(jī)數(shù),作其概率直方圖,再添加均勻分布的密度函數(shù)線,程序如下:
> x=runif(100)?> hist(x,prob=T,col=gray(.9),main="uniform on
[0,1]")?> curve(dunif(x,0,1),add=T) ?#添加均勻分布的密度函數(shù)線
3.1.2 正態(tài)分布隨機(jī)數(shù)
正態(tài)分布隨機(jī)數(shù)的生成函數(shù)是 rnorm()
句法是:rnorm(n,mean=0,sd=1)
其中n表示生成的隨機(jī)數(shù)數(shù)量,mean是正態(tài)分布的均值,默認(rèn)為0,sd是正態(tài)分布的標(biāo)準(zhǔn)差,默認(rèn)時(shí)為1;
例:
隨機(jī)產(chǎn)生100個(gè)正態(tài)分布隨機(jī)數(shù),作其概率直方圖,再添加正態(tài)分布的密度函數(shù)線
> x=rnorm(100)?> hist(x,prob=T,main="normal
mu=0,sigma=1")?> curve(dnorm(x),add=T)
3.1.3 二項(xiàng)分布隨機(jī)數(shù)
二項(xiàng)分布是指n次獨(dú)立重復(fù)貝努力試驗(yàn)成功的次數(shù)的分布,每次貝努力試驗(yàn)的結(jié)果只有兩個(gè),成功和失敗,記成功的概率為p
生成二項(xiàng)分布隨機(jī)數(shù)的函數(shù)是:rbinom()
句法是:rbinom(n,size,prob) ?n表示生成的隨機(jī)數(shù)數(shù)量,size表示進(jìn)行貝努力試驗(yàn)的次數(shù),prob表示一次貝努力試驗(yàn)成功的概率
例:
產(chǎn)生100個(gè)n為10,15,50,概率p為0.25的二項(xiàng)分布隨機(jī)數(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.1.4 ?指數(shù)分布隨機(jī)數(shù)
R生成指數(shù)分布隨機(jī)數(shù)的函數(shù)是:rexp()
其句法是:rexp(n,lamda=1) n表示生成的隨機(jī)數(shù)個(gè)數(shù),lamda=1/mean
例:
>x=rexp(100,1/10) ?# 生成100個(gè)均值為10的指數(shù)分布隨機(jī)數(shù)
>hist(x,prob=T,col=gray(0.9),main=“均值為10的指數(shù)分布隨機(jī)數(shù)”)?>curve(dexp(x,1/10),add=T) #添加指數(shù)分布密度線
3.1.5 常見(jiàn)的分布函數(shù)
產(chǎn)生分布的隨機(jī)數(shù),只需要在相應(yīng)的分布前加r就行
表 3-1 常見(jiàn)分布函數(shù)表?分布 ?中文名稱(chēng) R中的表達(dá) ?參數(shù)
Beta ?貝塔分布 beta(a,b) ?shape1,
shape2?Binomial ?二項(xiàng)分布 binom(n,p) ?size,
prob
Cauchy ?柯西分布 cauchy( ) ?location,
scale ?Chi-square
卡方分布 chisq(df) ?df
Exponential ?指數(shù)分布 exp(lamda)
rate ?F ?F分布
f(df1,df2) ?df1 ?df2
Gamma ?伽瑪分布 gamma() ?shape
rate
Geometric ?幾何分布 geom() ?prob
Hypergeometric ?超幾何分布 hyper()
m,n,k?Logistic ?邏輯分布 logis() ?location
scale
Negative binomial ?負(fù)二項(xiàng)分布 nbinom()
size ?prob
Normal ?正態(tài)分布 norm() ?mean, sd
Multivariate normal ?多元正態(tài)分布
mvnorm() ?mean,cov?Poisson ?泊松分布 pois() ?lambda
T ?t 分布 t()
df?Uniform ?均勻分布 unif() ?min,
max
Weibull ?威布兒分布 weibull()
shape, ?scale?Wilcoxon ?威爾考可森分布 ?wilcox()
m, ?n
表 3-2 與分布相關(guān)的函數(shù)及代號(hào)
函數(shù)代號(hào) ?函數(shù)作用
r- ?生成相應(yīng)分布的隨機(jī)數(shù)
d- ?生成相應(yīng)分布的密度函數(shù)
p- ?生成相應(yīng)分布的累積概率密度函數(shù)
q- ?生成相應(yīng)分布的分位數(shù)函數(shù)
例:
dnorm表示正態(tài)分布密度函數(shù)
pnorm表示正態(tài)分布累積概率密度函數(shù)
qnorm表示正態(tài)分布分位數(shù)函數(shù)(即正態(tài)累積概率密度函數(shù)的逆函數(shù))
3.2 ?隨機(jī)抽樣
3.2.1 放回與無(wú)放回抽樣
R可以進(jìn)行有放回、無(wú)放回抽樣
sample()函數(shù)即可以實(shí)現(xiàn)
句法為:sample(x,n,replace=F,prob=NULL)
3.3 統(tǒng)計(jì)模擬
3.3.1 幾種常見(jiàn)的模擬方法
1 中心極限定理:
2 二項(xiàng)分布模擬中心極限定理
3 用函數(shù)進(jìn)行模擬
指定模擬次數(shù)m=100,樣本量n=10,概率=0.25,如果要改變這些參數(shù)來(lái)重新進(jìn)行模擬將會(huì)很麻煩,下面將展示如何將上面的程序形成一個(gè)模擬函數(shù)再進(jìn)行模擬。
> sim.clt
(m=100,n=10,p=0.25)?{ z = rbinom(m,n,p) ?x = (z-n*p)/sqrt(n*p*(1-p))
hist(x,prob=T,breaks=20,main=paste("n =",n,”p
=”,p))?curve(dnorm(x),add=T) ?}?> sim.clt() ?# 默認(rèn) m=100,n=10,p=0.25?> sim.clt(1000) ?# 取
m=1000,n=10,p=0.25?> sim.clt(1000,30) ?# 取
m=1000,n=30,p=0.25?> sim.clt(1000,30,0.5) ?# 取
m=1000,n=30,p=0.5
4 正態(tài)概率模擬
能比直方圖更好判定隨機(jī)數(shù)是否近似服從正態(tài)分布的是正態(tài)概率圖。
其基本思想是:作實(shí)際數(shù)據(jù)的分位數(shù)與正態(tài)分布數(shù)據(jù)的分位數(shù)的散點(diǎn)圖,也就是作樣本分位數(shù)與理論分位數(shù)的散點(diǎn)圖。
3.3.2 模擬函數(shù)的建立方法
若每次模擬都要編寫(xiě)一個(gè)循環(huán),非常麻煩.
sim.fun()就是專(zhuān)門(mén)用來(lái)解決這類(lèi)問(wèn)題的
只需要編寫(xiě)一個(gè)用來(lái)生成隨機(jī)數(shù)的函數(shù),剩下的工作就交給sim.fun來(lái)完成
sim.fun
模擬樣本次數(shù),f需模擬的函數(shù)
{?sample
{?sample[i]
sample?}
例:
二項(xiàng)分布:
先編寫(xiě)一個(gè)函數(shù)用來(lái)生成一個(gè)二項(xiàng)分布隨機(jī)的標(biāo)準(zhǔn)化值
>f
}
> x=sim.fun(1000,f) ?# 模擬1000個(gè)二項(xiàng)隨機(jī)數(shù)
> hist(x,prob=T)
均勻分布來(lái)模擬中心極限定理:
> f = function(n=10)
(mean(runif(n)-1/2)/(1/sqrt(12*n))?> x=sim.fun(1000,f) ?# 模擬1000個(gè)均勻隨機(jī)數(shù)
> hist(x,prob=T)
正態(tài)分布:
>f=function(n=10,mu=0,sigma=1){r=rnorm(n,mu,sigma);(mean(r)-m
u)/(sigma/sqrt(n)) }?> x = sim.fun(1000,f) ?#模擬1000個(gè)樣本量為10的N(0,1)隨機(jī)數(shù)
> hist(x,breaks=10,prob=T)
> x = sim.fun(1000,f,30,5,2) ?#
模擬1000個(gè)樣本量為30的N(5,4)隨機(jī)數(shù)
> hist(x,breaks=10,prob=T)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python依照概率抽样_R语言之随机数与抽样模拟篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中字符串文件如何打开_pyt
- 下一篇: python降维之时间类型数据的处理_p