[Tagged] Re: Fwd: r-stats: Geometric Distribution
Jeff: I think you might be misdiagnosing the OP's problem; I'm not sure that the R parameterization is primarily intended to avoid FP problems, but rather is *one* possible sensible choice of definition. Note that the Wikipedia page on the geometric distribution: https://en.wikipedia.org/wiki/Geometric_distribution (obviously not an authoritative reference, but Wikipedia is generally very good for these things) gives *both* the starting-from-zero and starting-from-1 definitions. Sahil: this is not an error in R, it's simply a different (and equally sensible) choice of definition from yours. You can certainly write your code to do `dgeom(x-1, p)`: in fact, you could write a wrapper my_dgeom <- function(x, ...) dgeom(x-1, ...) so that you never have to think about it again ... cheers Ben Bolker
On 2023-10-19 3:20 a.m., Jeff Newmiller via R-help wrote:
What makes sense in a math class is not necessarily the same as what makes sense in a floating point analysis environment. You lose a lot of significant digits when you add 1 to a floating point number that is close to zero, and this implementation allows the user to avoid that structural deficiency inherent in your preferred formulation. This is a case where you need to read the documentation and adapt your handling of numbers to get the most accurate results. Or write your own version that destroys significant digits. There are other functions that allow for similar maintenance of significant digits... like log1p and expm1. See i.e. https://en.m.wikipedia.org/wiki/Natural_logarithm#lnp1 for discussion. On October 18, 2023 10:44:21 PM PDT, Sahil Sharma <sahilsharmahimalaya at gmail.com> wrote:
Hi, today I came across the same problem. And, I'm able to explain it with an example as well. Suppose I want to PDF or P(X=5) in Geometric Distribution with P = 0.2. The theoretical formula is P * (1-P) ^ (x -1). But the R function dgeom(x, p) works like P * (1-P) ^ x, it does not reduce 1 from x because in r the x starts from 0. In that case, if I am writing x as 5 then in-principle it should work like x = 4 because starting from zero, 4 is the 5th place of x. E.g., 0,1,2,3,4 there are five digits. However, the x in dgeom(x,p) is exactly working like 5. Here are some codes that I used:
dgeom(5, 0.2)
[1] 0.065536 If I use the formula manually, i.e., p(1-P)^x-1, I get this.
0.2 * (1-0.2)^(5-1)
[1] 0.08192 Even if x starts from 0 in r, that's why we do not minus 1 from x, it should work like 4 when I'm writing 5, but not, it is working exactly 5. For example, if I manually put the 5 at the place of X, I get same results as dgeom(x,p).
0.2 * (1-0.2)^(5)
[1] 0.065536 I guess there is a need for solution to this problem otherwise, it may result in erroneous calculations. Either the function dgeom(x,p) can perform and result as per the theoretical definition of PDF in Geometric Distribution, or the user applying this function must be prompted about the nature of this function so that the user manually minus one from x and then enter it into the function dgeom(x,p). Thanks, and Regards Sahil On Tue, Oct 17, 2023 at 6:39?PM Ivan Krylov <krylov.r00t at gmail.com> wrote:
? Tue, 17 Oct 2023 12:12:05 +0530 Sahil Sharma <sahilsharmahimalaya at gmail.com> ?????:
The original formula for Geometric Distribution PDF is *((1-p)^x-1)*P*. However, the current r function *dgeom(x, p)* is doing this: *((1-p)^x)*P, *it is not reducing 1 from x.
Your definition is valid for integer 'x' starting from 1. ('x'th trial
is the first success.)
The definition in help(dgeom):
p(x) = p (1-p)^x for x = 0, 1, 2, ..., 0 < p <= 1.
...is valid for integer x starting from 0. ('x' failures until the
first success.)
They are equivalent, but they use the name 'x' for two subtly different
things.
Thank you for giving attention to this and best of luck in your future
research!
--
Best regards,
Ivan
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.