birthday {stats}  R Documentation 
Computes approximate answers to a generalised “birthday paradox”
problem. pbirthday
computes the probability of a coincidence
and qbirthday
computes the number of observations needed to
have a specified probability of coincidence.
qbirthday(prob = 0.5, classes = 365, coincident = 2) pbirthday(n, classes = 365, coincident = 2)
classes 
How many distinct categories the people could fall into 
prob 
The desired probability of coincidence 
n 
The number of people 
coincident 
The number of people to fall in the same category 
The birthday paradox is that a very small number of people, 23, suffices to have a 5050 chance that two of them have the same birthday. This function generalises the calculation to probabilities other than 0.5, numbers of coincident events other than 2, and numbers of classes other than 365.
This formula is approximate, as the example below shows. For
coincident=2
the exact computation is straightforward and may be
preferable.
qbirthday 
Number of people needed for a probability prob that k of
them have the same one out of classes equiprobable labels.

pbirthday 
Probability of the specified coincidence 
Diaconis P, Mosteller F., “Methods for studying coincidences”. JASA 84:853861
## the standard version qbirthday() ## same 4digit PIN number qbirthday(classes=10^4) ## 0.9 probability of three coincident birthdays qbirthday(coincident=3, prob=0.9) ## Chance of 4 coincident birthdays in 150 people pbirthday(150,coincident=4) ## 100 coincident birthdays in 1000 people: *very* rare: pbirthday(1000, coincident=100) ## Accuracy compared to exact calculation x1< sapply(10:100, pbirthday) x2< 1sapply(10:100, function(n)prod((365:(365n+1))/rep(365,n))) par(mfrow=c(2,2)) plot(x1, x2, xlab="approximate", ylab="exact") abline(0,1) plot(x1, x1x2, xlab="approximate", ylab="error") abline(h=0) plot(x1, x2, log="xy", xlab="approximate", ylab="exact") abline(0,1) plot(1x1, 1x2, log="xy", xlab="approximate", ylab="exact") abline(0,1)