Hello, I have been working with various probability distributions in R, and it seems the gamma distribution is inaccurate for some inputs.
For example, qgamma(1e-100, 5e-101, lower.tail=FALSE) gives: 1.0. However, it seems this is incorrect; I think the correct answer should be 0.082372029620717283. When I check these numbers using pgamma, I get: pgamma(1,5e-101, lower.tail=FALSE) = 9.1969860292859463e-102 and pgamma(0.082372029620717283,5e-101, lower.tail=FALSE) = 1.0000000000000166e-100. Similarly, for example: qgamma(1e-100,0.005,lower.tail=FALSE) = 109.36757177007101 pgamma(109.36757177007101, 0.005, lower.tail=FALSE) = 1.4787306506694758e-52. This looks completely wrong. The correct value, I think, should be 219.59373661415756. In fact, pgamma(219.59373661415756, 0.005, lower.tail=FALSE) = 9.9999999999999558e-101. In fact, when I do the following in R, the results are completely wrong, x<-c(5e-1,5e-2,5e-3,5e-4,5e-5,5e-6,5e-7,5e-8,5e-9,5e-10) z1 <-qgamma(1e-100,x,lower.tail=FALSE) y<-pgamma(z1,x,lower.tail=FALSE) The value of y that I get should be close to 1e-100, but they are not: > y [1] 1.000000e-100 1.871683e-51 1.478731e-52 1.444034e-53 1.440606e-54 [6] 1.440264e-55 1.440230e-56 1.440226e-57 1.440226e-58 1.440226e-59 The correct values of z1 should be: z1true <- c(226.97154111939946, 222.15218724493326, 219.59373661415756, 217.27485383840451, 214.98015408183574, 212.68797118872064, 210.39614286838227, 208.10445550564617, 205.81289009100664, 203.52144711679352) With these values of z1true, we get the expected values: y<-pgamma(z1true,x,lower.tail=FALSE) > y [1] 1e-100 1e-100 1e-100 1e-100 1e-100 1e-100 1e-100 1e-100 1e-100 1e-100 I am using the precompiled binary version of R, under Windows Vista. ----------- > version _ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 7.1 year 2008 month 06 day 23 svn rev 45970 language R version.string R version 2.7.1 (2008-06-23) ------------ So, it seems qgamma is inaccurate for small probability values in the upper tail, when the shape parameter is also small. Is this true, and if so can it be fixed, or am I missing something here? Thanks. [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.