birthday package:stats R Documentation _P_r_o_b_a_b_i_l_i_t_y _o_f _c_o_i_n_c_i_d_e_n_c_e_s _D_e_s_c_r_i_p_t_i_o_n: 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. _U_s_a_g_e: qbirthday(prob = 0.5, classes = 365, coincident = 2) pbirthday(n, classes = 365, coincident = 2) _A_r_g_u_m_e_n_t_s: 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 _D_e_t_a_i_l_s: The birthday paradox is that a very small number of people, 23, suffices to have a 50-50 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. _V_a_l_u_e: 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 _R_e_f_e_r_e_n_c_e_s: Diaconis, P. and Mosteller F. (1989) Methods for studying coincidences. J. American Statistical Association, *84*, 853-861. _E_x_a_m_p_l_e_s: require(graphics) ## the standard version qbirthday() ## same 4-digit 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<- 1-sapply(10:100, function(n)prod((365:(365-n+1))/rep(365,n))) par(mfrow=c(2,2)) plot(x1, x2, xlab="approximate", ylab="exact") abline(0,1) plot(x1, x1-x2, xlab="approximate", ylab="error") abline(h=0) plot(x1, x2, log="xy", xlab="approximate", ylab="exact") abline(0,1) plot(1-x1, 1-x2, log="xy", xlab="approximate", ylab="exact") abline(0,1)