how to prove sum of probabilities to be one in R?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

how to prove sum of probabilities to be one in R?

Shaami
Hi Dear

I am facing a floating-point problem related to the sum of probabilities.
It is really difficult to prove that sum of probabilities is 1 because of
some minor differences. The MWE is as follows.

> p1=0.99999999
> p2=0.00000000003> p1+p2==1[1] FALSE

The sum of probabilities is approximately 1. The difference from 1 is
1-p1-p2 =  9.97e-09, that is very small. I need to apply the sum of
probabilities conditions in my many functions. But execution is halted
because of floating point.

Could anyone please guide about that?

Thank you

Regards

Shaami

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: how to prove sum of probabilities to be one in R?

Duncan Murdoch-2
On 20/08/2020 3:42 a.m., Shaami wrote:
 > Hi Dear
 >
 > I am facing a floating-point problem related to the sum of probabilities.
 > It is really difficult to prove that sum of probabilities is 1 because of
 > some minor differences. The MWE is as follows.
 >
 >> p1=0.99999999
 >> p2=0.00000000003> p1+p2==1[1] FALSE
 >
 > The sum of probabilities is approximately 1. The difference from 1 is
 > 1-p1-p2 =  9.97e-09, that is very small. I need to apply the sum of
 > probabilities conditions in my many functions. But execution is halted
 > because of floating point.
 >
 > Could anyone please guide about that?
Use the approximate test

isTRUE(all.equal(p1+p2, 1))

If the default tolerance of sqrt(.Machine$double.eps) (about 1.5e-8) is
wrong, change it:

isTRUE(all.equal(p1+p2, 1, tolerance = 0.1))

This says anything between 0.9 and 1.1 is equal to 1.

Duncan Murdoch

______________________________________________
[hidden email] 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.