I think you fail to understand the floating point arithmetic involved. The
smallest floating point number that can be represented to full precision
is
> .Machine$double.xmin
[1] 2.225074e-308
and
> pgamma(.Machine$double.xmin, 0.001, rate=0.01)
[1] 0.4904533
Your distribution is so extreme that in computer representation it is
largely discrete.
Now, on your platform there are denormalized doubles, so
> table(rgamma(1e6, 0.001, rate=0.01) < .Machine$double.xmin)
FALSE TRUE
509073 490927> table(rgamma(1e6, 0.001, rate=0.01) == 0)
FALSE TRUE
525187 474813
> x <- rgamma(1e6, 0.001, rate=0.01)
> sort(x[x> 0]) [1:10]
[1] 4.940656e-322 4.940656e-322 4.940656e-322 4.940656e-322 4.940656e-322
[6] 4.940656e-322 4.940656e-322 4.940656e-322 4.940656e-322 4.940656e-322
is pretty much what I expected.
On Tue, 29 Aug 2006, pxi at stat.cmu.edu wrote:
> Full_Name: Peiyi Xi
> Version: R 2.2.0
You are specifically asked NOT to report on obselete versions of R.
> OS: Windows XP Professional
> Submission from: (NULL) (128.2.3.141)
>
>
> When I use rgamma(n, shape, rate ) to generate gamma samples, it
> gives zeros when both shape and rate are very small.
>
> But we know that if x follows a gamma distribution, x should be positive.
>
> e.g.
> > temp=rgamma(10, 0.001, rate=0.01)
> > temp
> [1] 2.438078e-33 5.101136e-130 1.760830e-54 2.724731e-166 0.000000e+00
> [6] 4.461151e-146 1.332914e-55 2.336396e-277 0.000000e+00 0.000000e+00
> > temp[5]
> [1] 0
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595