口离散型场合 设X为一离散型随机变量,其可能取值记为 ,<ti-1<xi<ri+1<… 定义 Fx(u)=inf{x:Fx(e)≥u 则逆变换为F(u=工,其中Fx(c:-1)<u≤Fx(红).从而产生一个随机 数x的方式为 1.从均匀分布U(0,1)中产生一个随机数u 2.取x=E,若Fx(ai-1)<u≤Fx(x: Previous Next First Last Back Forward 9
❏l—.|‹ Xèòl—.ëÅC˛, ŸåUäPè · · · < xi−1 < xi < xi+1 < · · · ½¬ F −1 X (u) = inf{x : FX(x) ≥ u} K_CÜèF −1 X (u) = xi, Ÿ•FX(xi−1) < u ≤ FX(xi). l )òáëÅ Íxê™è 1. l˛!©ŸU(0, 1)•)òáëÅÍu 2. x = xi, eFX(xi−1) < u ≤ FX(xi). Previous Next First Last Back Forward 9
对某些分布来说,计算Fx(红-1)<u≤Fx(x)可能比较困难.在离散型 场合应用逆变换方法产生随机数的不同方式可以参考Devroye?第三章. 例:使用逆变换方法产生0-1分布的随机数, 此时Fx(O)=fx(0)=1-p以及Fx(1)=1.因此若u>1-p, 则Fx(u)=1:若u≤1-p,则Fx1(u=0.因此 n<-1000 p<-0.4 u<-runif(n) x<-as.integer(u>1-p) mean(x)#理论值p var(x)#理论值p(1-p) Code 在R中,我们使用rbinom(n,l,P)来产生0-1分布长为n的一个随机观测向量. 例:使用逆变换方法产生几何分布的随机数. 由于几何分布的分布函数Fx(x)=1-q,x=1,2,·.因此每个随机 Previous Next First Last Back Forward 10
È, ©Ÿ5`, OéFX(xi−1) < u ≤ FX(xi)åU'(J. 3l—. |‹A^_CÜê{)ëÅÍÿ”ê™å±ÎDevroye1nŸ. ~: ¶^_CÜê{)0-1©ŸëÅÍ. dûFX(0) = fX(0) = 1 − p±9FX(1) = 1. œdeu > 1 − p, KF −1 X (u) = 1; eu ≤ 1 − p, K F −1 X (u) = 0. œd ↑Code n<-1000 p<-0.4 u<-runif(n) x<-as.integer(u>1-p) mean(x) #nÿä p var(x) #nÿäp(1-p) ↓Code 3R•,·Ç¶^rbinom(n,1,p)5)0-1©ŸènòáëÅ*ˇï˛. ~: ¶^_CÜê{)A¤©ŸëÅÍ. duA¤©Ÿ©ŸºÍFX(x) = 1 − q x, x = 1, 2, · · · . œdzáëÅ Previous Next First Last Back Forward 10
数都要计算 1-g-1<u≤1-9 这个不等式等价于x-1<log(1-u)/log(g)≤x,其解为x=[log(1- u)/log(q)l,这里「tl表示不小于t的最小整数(ceiling).因此 TCode n<-1000 p<-0.4 u<-runif(n) x<-ceiling(log(1-u)/log(1-p)) Code 注意到U和1-U同分布,以及log(1-U)/log(q)取整数的概率为0,从而上述 代码最后一步可以等价为 TCode k<-floor(log(u)/log(1-p))+1 Code Previous Next First Last Back Forward 11
Í —áOé 1 − q x−1 < u ≤ 1 − q x . ˘áÿ™dux − 1 < log(1 − u)/log(q) ≤ x, Ÿ)èx = dlog(1 − u)/log(q)e, ˘pdteL´ÿutÅÍ(ceiling). œd ↑Code n<-1000 p<-0.4 u<-runif(n) x<-ceiling(log(1-u)/log(1-p)) ↓Code 5øU⁄1 − U”©Ÿ, ±9log(1 − U)/log(q)ÍV«è0, l ˛„ ìËÅò⁄å±dè ↑Code k<-floor(log(u)/log(1-p))+1 ↓Code Previous Next First Last Back Forward 11
在R中,我们使用rgeom(n,p)来产生参数为p的几何分布的长为n的一个随 机观测向量 例:使用逆变换方法产生Poisson分布的随机数 对Poisson分布来说,求解F(x-1)<u≤F(x)比起几何分布情形时要复 杂的多.产生Poisso分布的基本方法是通过如下递推关系产生和存储分布函 数: f+1)= F(x+1)=F(x)+f(x+1): x+1 从而可以通过存储下的分布函数序列中寻求F(x-1)<u≤F(x)的解.R中 可以通过rpois(n,lambda)来产生Poisson分布的长为n的一组观测向量 例:使用逆变换方法产生如下对数分布的随机数 四=PX==g,2=12, 其中0<0<1以及a=(-log(1-8)-1. Previous Next First Last Back Forward 12
3R•,·Ç¶^rgeom(n,p)5)ÎÍèpA¤©Ÿènòáë Å*ˇï˛. ~: ¶^_CÜê{)Poisson©ŸëÅÍ. ÈPoisson©Ÿ5`, ¶)F(x − 1) < u ≤ F(x)'ÂA¤©Ÿú/ûáE ,ı. )Poisson©Ÿ ƒê{¥œLXe4Ì'X)⁄;©Ÿº Í: f(x + 1) = λf(x) x + 1 ; F(x + 1) = F(x) + f(x + 1). l 屜L;e©ŸºÍS•œ¶F(x − 1) < u ≤ F(x)). R• 屜Lrpois(n,lambda)5)Poisson©Ÿènò|*ˇï˛. ~: ¶^_CÜê{)XeÈÍ©ŸëÅÍ. f(x) = P(X = x) = aθx x , x = 1, 2, · · · Ÿ•0 < θ < 1±9a = (−log(1 − θ))−1 . Previous Next First Last Back Forward 12
显然,递推关系为 +)=e=12 理论上讲,f(x)可以通过如上递推关系求值,但是对很大的x值这种计算方 法的精度不够,最终会导致f(x)=0,F(x)<1.因此我们通过f(x)的表达 式exp(log(a)+xlog()-log(x)来计算f(x)的值.为求解不等式,将F(x)的 值存储下来,初始可以选择一个大数N,设置向量F(x),x=1,·,N,然后在 有必要的时候再增大N.另外,对特定的u求解F(x一1)<u≤F(x),计算 满足F(x一1)<u的x的个数.当F存为向量时,F<u:为一逻辑向量,其值 为TRUE或者FALSE,而u:>F的和即为x-1.所以 Code rlogarithmic<-function(n,theta){ #return a random logarithmic(theta)sample size n u<-runif(n) #set the initial length of cdf vector N<-ceiling(-16/log10(theta)) Previous Next First Last Back Forward 13
w,, 4Ì'Xè f(x + 1) = θ x x + 1 f(x), x = 1, 2, · · · nÿ˛˘, f(x)屜LX˛4Ì'X¶ä, ¥ÈÈåx䢴Oéê {°›ÿ , Å™ ¨óf(x) = 0, F(x) < 1. œd·ÇœLf(x)Là ™exp(log(a) + xlog(θ) − log(x))5 Oéf(x)ä. è¶)ÿ™, ÚF(x) ä;e5, –©å±¿JòáåÍN, òï˛F(x), x = 1, · · · , N, ,3 k7áûˇ2OåN. , , ÈA½u¶)F(x − 1) < u ≤ F(x), Oé ˜vF(x − 1) < uxáÍ. Fèï˛û, F < uièò‹6ï˛, Ÿä èTRUE½ˆFALSE, ui > F⁄=èx − 1. §± ↑Code rlogarithmic<-function(n,theta){ #return a random logarithmic(theta) sample size n u<-runif(n) #set the initial length of cdf vector N<-ceiling(-16/log10(theta)) Previous Next First Last Back Forward 13