Hi, guys, I need to simulate Pareto distribution. But I found 'rpareto' didn't exist in R. And it seems that Pareto distribution don't have mathematical relationships with other distributions. What can I do? Thanks a lot. Ni --------------------------------- [[alternative HTML version deleted]]
Remigijus Lapinskas
2005-Jan-09 09:50 UTC
[R] How can I simulate Pareto distribution in R?
If you define Pareto density as p(x)=c*x^(-(c+1)) for x>1, then dpareto <- function(x,c){ if(c<=0)stop("c must be positive") # Diagnostic step ifelse(x<1,0,c/x^(c+1))} ppareto <- function(q,c){ if(c<=0)stop("c must be positive > 0") ifelse(q<1,0,1-1/q^c)} qpareto <- function(p,c){ if(c<=0) stop("c must be positive > 0") if(any(p<0)|any(p>1)) # Symbol | denotes logical OR stop("p must be between 0 and 1") q <- (1-p)^(-1/c) q} rpareto <- function(n,c){ if(c<=0) stop("c must be positive") rp <- runif(n)^(-1/c) rp} Good luck, Rem Sunday, January 9, 2005, 10:21:47 AM, you wrote: NX> Hi, guys, NX> I need to simulate Pareto distribution. But I found NX> 'rpareto' didn't exist in R. And it seems that Pareto distribution NX> don't have mathematical relationships with other distributions. NX> What can I do? NX> Thanks a lot. NX> Ni
On Sun, Jan 09, 2005 at 12:21:47AM -0800, Ni Xiao wrote:> Hi, guys, > I need to simulate Pareto distribution. But I found 'rpareto' didn't exist in R. And it seems that Pareto distribution don't have mathematical relationships with other distributions. What can I do?Well, it has a relation to the uniform distribution thru F(X) = U ~ uniform(0, 1), where X is Pareto with cdf F. Solve for X and you have just reinvented the "inverse method" of generating random numbers from a cdf F. Remigijus made that explicit for you. -- G?ran Brostr?m tel: +46 90 786 5223 Department of Statistics fax: +46 90 786 6614 Ume? University http://www.stat.umu.se/egna/gb/ SE-90187 Ume?, Sweden e-mail: gb at stat.umu.se