Я кодирую проблему дня рождения. Мой код:
> k = 100
> for (n in 1:100) {
+ prob = 1 - (0:(n-1))/365
+ k[n] = 1 - prod(prob) }
> plot(k)
Мне нужно найти n, для которого ~ 50% вероятность, что у двух людей один день рождения. Любая помощь? Я пробовал погуглить, но могу найти информацию только о популярных дистрибутивах.
3 ответа
Вы уже решили проблему. Вы можете найти его "на глаз", просто наберите "k" и начинайте считать. Или вы можете попросить R найти его для вас. Первый день, когда вероятность больше или равна 0,5, является номером дня:
#TRUE is the maximum, pick the first of the ties:
which.max(k >= .5)
Мы можем найти день с минимальным абсолютным отличием от вероятности 0,5:
which.min(abs(k - .5))
Попробуйте следующее из пакета stats
...
approx(k,1:100, xout = .5)
Вышеупомянутое использует линейную интерполяцию между двумя ближайшими предоставленными точками, на которые я могу попасть, потому что это неточно ...
Но если мы решаем задачу о дне рождения, я предполагаю, что мы изучаем кодирование, а не запускаем ракету, так что, может быть, это достаточно близко?
«Задача дня рождения» уже имеет две функции R, предназначенные для решения различных ее форм:
birthday {stats} R Documentation
Probability of coincidences
Description
Computes answers to a generalised birthday paradox problem. pbirthday computes the
probability of a coincidence and qbirthday computes the smallest number of observations
needed to have at least a specified probability of coincidence.
Usage
qbirthday(prob = 0.5, classes = 365, coincident = 2)
pbirthday(n, classes = 365, coincident = 2)
Итак, значения по умолчанию для `qbirthday ::
> qbirthday()
[1] 23
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат полностью. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.