1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/thales-ucas-postgrad

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
reexamine.md 9.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:22 2e47472

Вероятность успеха на повторном экзамене

Мы прошли через повторный экзамен, и теперь мы попробуем использовать математический метод для расчёта вашей вероятности успеха.

Вероятность

Например, если было набрано 12 человек из общего числа кандидатов в 20 человек, то существует $C_{20}^{12}$ возможных комбинаций. Если вы были выбраны специально, то остаётся только $C_{19}^{11}$ возможных комбинаций для остальных кандидатов.

Таким образом, ваша вероятность успеха составляет:

$\frac{C_{19}^{11}}{C_{20}^{12}}=\frac{19\times18\times...\times11}{20\times19\times...\times12}=\frac{11}{20}=55%$.

Однако это не совсем верно, поскольку выбор не является случайным, а зависит от результатов первого экзамена.

Анализ повторного экзамена

Доля участия

Если результат первого экзамена составляет 350 баллов (если это экзамен по управлению, пожалуйста, измените значение), а доля участия в повторном экзамене составляет 50%, например, результат повторного экзамена равен 75 баллам, тогда:

$50\times\frac{350}{500} + 50\times\frac{75}{100} = 72.5$.

Возможно, в некоторых школах доля участия в повторном экзамене отличается, поэтому необходимо скорректировать соответствующие параметры.

Распределение баллов

Баллы за повторный экзамен обычно находятся в диапазоне от 60 до 100, и очень редко они ниже 60. Однако большинство баллов должно быть в среднем диапазоне от 70 до 80, а баллы выше 90 встречаются довольно редко.

Поэтому график распределения баллов должен представлять собой функцию, которая имеет асимметричное распределение с пиком в середине.

f(x) = x^3^

Это гарантирует, что среднее распределение значений x будет приводить к асимметричному распределению значений y с меньшим количеством положительных и отрицательных экстремумов.

Нам нужно преобразовать эту функцию так, чтобы она представляла собой распределение от 0 до 1 для удобства использования random для генерации случайных чисел.

f(x) = (2x - 1)^3^

Теперь мы можем определить функцию, которая будет давать нам баллы в диапазоне от 60 до 100:

f(x) = 20(2x - 1)^3^ + 60

Из графика видно, что значения ниже 70 встречаются редко, а значения выше 90 также редки.

Если вы считаете, что распределение всё ещё слишком широкое, можно увеличить степень функции. Например:

f(x) = 20(2x - 1)^9^ + 60

Можно увидеть, что фиолетовая линия представляет собой более узкое распределение по сравнению с красной линией.

Мы создадим функцию, которая принимает в качестве входных данных результаты первого экзамена и генерирует случайные баллы за повторный экзамен.

import random
def total(score):
    x = random.random()
    y = ((x*2 - 1) ** 3)*20 + 80
    return 50 * (score/500) + 50 * (y/100)

Давайте попробуем применить эту функцию к результату первого экзамена в 350 баллов.

total(350)

Повторим несколько раз, чтобы увидеть результаты:

74.99852414320696
81.45032134393863
73.09044610824242
83.15058028025783
75.82464128224818
69.43091475827083
74.4028400901793

Разброс результатов всё ещё довольно большой.

Статистическая проверка случайности

Вернёмся к исходным условиям:

  1. Набрано 12 кандидатов из 20.
  2. Вы заняли 14-е место.
  3. Ваш результат первого экзамена составил 350 баллов.
  4. Это означает, что вам нужно получить балл выше 12-го места после повторного экзамена, чтобы пройти отбор.

Проведём симуляцию, чтобы оценить вероятность этого события.

Симуляция играет важную роль в области искусственного интеллекта, особенно в методах Монте-Карло.

Класс

import pandas as pd
class Aggregate:
    def __init__(self):
        pass
    def preliminary(self, xls, id, rank):
        """
        Первичный экзамен
        xls — таблица результатов
        id — идентификатор кандидата
        rank — позиция отбора
        """
        self.df = pd.read_excel(xls)
        self.id = id
        self.rank = rank
    def reexam(self, seed=1):
        """
        Моделирование результата повторного экзамена
        """
        random.seed(seed)
        self.df['Повторный экзамен'] = self.df['Баллы'].map(lambda x:((random.random()*2 - 1) ** 3)*20 + 80)
        self.df['Общий балл'] = 50 * (self.df['Баллы']/500) + 50 * (self.df['Повторный экзамен']/100)
        self.df = self.df.sort_values(by="Общий балл", ascending=False)
        return self.df
    def sim(self):
        """
        Симуляция
        """
        enroll = 0
        times = 500 # Симуляция 500 раз
        for n in range(1, times):
            df = self.reexam(n)
            target = df[df['Идентификатор'] == self.id]
            rank = df[df['Общий балл'] > target['Общий балл'].values[0]]
            if rank.count()[0] <= 12:
                enroll += 1
        return enroll / times

После создания класса Aggregate мы загрузим таблицу результатов предварительного экзамена, установим ваш идентификатор как 10014 и общее количество отобранных кандидатов как 12.

agg = Aggregate()
agg.preliminary('./preliminary.xlsx', 10014, 12)
agg.df

Затем мы можем посмотреть на данные:

Идентификатор Баллы
10001 400
10002 381
10003 380
10004 376
10005 373
10006 372
10007 370
10008 362
10009 361
10010 359
10011 353
10012 351
10013 350
10014 350
10015 350
10016 349
10017 349
10018 348
10019 348
10020 348

Теперь давайте посмотрим на результаты симуляции:

agg.sim()

Результат составляет 0,524, что означает, что ваша вероятность прохождения составляет 52,4%.

Вероятность прохождения для первого кандидата

agg = Aggregate()
agg.preliminary('./preliminary.xlsx', 10001, 12)
agg.sim()

Вероятность прохождения составляет 89,6%.

Вероятность прохождения для последнего кандидата

agg = Aggregate()
agg.preliminary('./preliminary.xlsx', 10020, 12)
agg.sim()

Вероятность прохождения составляет 42,4%.

Заключение

  1. Если вы отстаёте от двух кандидатов, у вас есть только половина шансов на прохождение.
  2. Даже первый кандидат не имеет 100% шансов на успех, а только 9 из 10 шансов.
  3. Последний кандидат также может успешно пройти повторную аттестацию.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/thales-ucas-postgrad.git
git@api.gitlife.ru:oschina-mirror/thales-ucas-postgrad.git
oschina-mirror
thales-ucas-postgrad
thales-ucas-postgrad
main