On 5/21/2009 10:15 AM, Mark Bilton wrote:
I am having a slight problem with probabilities.

To calculate the final probability of an event p(F), we can take the product of 
the chance that each independent event that makes p(F) will NOT occur.
So...
p(F) = 1- ( (1-p(A)) * (1-p(B)) * (1-p(C))...(1-p(x)) )

If the chance of an event within the product occurring remains the same, we can 
therefore raise this probability to a power of the number of times that event 
occurs.
e.g. rolling a dice p(A) = 1/6 of getting a 1...
p(F) = 1 - (1- (1/6))^z p(F) = 1 - (1-p(A))^z tells us the probabiltity of rolling a 1 'at least once' in z number of rolls.

So then to R...

if p(A) = 0.01; z = 4; p(F) = 0.039

obviously p(F) > p(A)

however the problem arises when we use very small numbers e.g. p(B) = 1 * 10^-30
R understands this value
However when you have 1-p(B) you get something very close to 1 as you 
expect...but R seems to think it is 1.
So when I calculate p(F) = 1 - (1-p(B))^z = 1 to the power anything equals 1 so 
p(F) = 0 and not just close to zero BUT zero.
It doesn't matter therefore if z = 1*10^1000, the answer is still zero !!

Obviously therefore now p(F) < p(B)

Is there any solution to my problem, e.g.
- is it a problem with the sum (-) ? ie could I change the number of bits the 
number understands (however it seems strange that it can hold it as a value 
close to 0 but not close to 1)
-or should I maybe use a function to calculate the exact answer ?

The problem is that R maintains about 15-16 decimal places of accuracy, and to that accuracy, 1- 1.e-30 is equal to 1. You need to find a different formula, e.g.

(1-x)^z = exp(z * log(1-x)) = exp(z * log1p(-x))

So if you have z = 1.e20, and p(A) = 1.e-30, then

1 - (1-1.e-30)^1.e20 can be calculated in R as

1 - exp(1.e20 * log1p(-1.e-30))

which works out to 1.e-10.

Duncan Murdoch

-or something else

Any help greatly appreciated
Mark
-



_________________________________________________________________


        [[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.

______________________________________________
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.

Reply via email to