Статистика. Часть 1. Основные понятия и показатели.

Tags: math , learning , обучение , математика , statistics , статистика

Published 6 июля 2025 г. 19:44

Сейчас идет настоящая гонка между различными корпарациями и стартапами, основным продуктом которых является ИИ. Чуть ли не каждый день (а иногда и несколько раз в день!) нам рассказывают о новом инструменте на основе искусственного интеллекта, который призван улучшать нашу жизнь. Но откуда у машины появляется эти удивительные способности, которые, казалось бы, доступны только человеку?

Дело в том, что при разработке любой системы с искусственным интеллектом нам нужны данные. Они служат топливом нашим новым помощникам, без данных они безполезны 😥. Однако, чтобы сделать вывод (как это делают люди), машинам нужно очень много данных. Чем больше данных, тем лучше будет наша интеллектуальная система. Данные позволяют нам найти закономерности, обобщить природу различных явлений. 

RANDOM PICTURE WITH CAPTIONS; IS THIS A MEME? meme - Piñata Farms - The  best meme generator and meme maker for video & image memes

Для этого у нас есть замечательная штука, которая называется статистика! С её помощью мы собираем, анализируем и представляем (в виде диаграмм) полученные результаты. 

Например, телекомпания решила узнать, какие утренние телепередачи наиболее популярны среди населения. Для этого они решили сделать email рассылку опросника среди клиентов. Это сбор данных

А теперь следим за руками) Мы опросили пользователей только одной компании. Если нам нужно проанализировать данные только для этого неё, то мы будем использовать описательную статистику (в иностранных источниках известна как descriptive statistics). Она позволяет нам детально проанализировать и сделать выводы для этого конкретного набора данных. Мы не можем применить те же выводы для всех зрителей всех компании в нашем примере, используя данную выборку.

Если же нам необходимо сделать обобщенные выводы для всех утренних зрителей, мы должны использовать статистический вывод (aka inferential statistics). Благодаря ему мы можем сделать вывод для генеральной совокупности (всех смотрящих в экран телевизора с раннего утра), используя лишь отдельную выборку данных (данные зрителей одной телекомпании).

Вернемся к описательной статистике. И наконец будет пример с кодом! Для этого возьмем данные по средней продолжительности жизни по странам с 1952 года. Данные доступны на gapminder, или можно установить пакет plotly и импортировать датасет с его помощью:

import plotly.express as px
df = px.data.gapminder()

Итак, что же представляет собой описательная статистика? Прежде всего, она содержит 3 основных показателя: среднее арифметическое (mean) , медиана (median)  и мода (mode) (да, в статистике она тоже есть ( ͡° ͜ʖ ͡°)). Как и в любом разделе математики, здесь есть формулы, крепитесь).

Среднее арифметическое представляет собой сумму всех наблюдений, деленную на их количество:

Давайте разберем этот показатель на данных о продолжительности жизни. Для начала выберем один год из данных: 

# Для простоты выберем один год из данных
data = df[df["year"] == 2002]

Далее посчитаем средний ВВП на душу населения среди всех стран:

gdp_list = data['gdpPercap'].tolist()
mean_gdp = sum(gdp_list) / len(gdp_list)

В результате получаем почти 10к долларов (not bad, not bad).

Конечно же то же самое можно сделать используя встроенные функции библиотеки plotly:

mean_gdp_plotly = data['gdpPercap'].mean()

Следующая на очереди - медиана. Для того, чтобы получить эту статистическую величину, необходимо сперва отсортировать данные по возрастанию. Это нужно для того, чтобы найти среднее значение из данных. Сама по себе медиана позволяет нам обнаружить среднее значение из выборки не взирая на выбросы в данных.

Для чего это нужно? По этому случаю я часто вспоминаю одну байку из статистики: однажды в бар зашёл Илон Маск и в среднем капитал всех присутствующих увеличился на миллиард ✪ ω ✪. Конечно же это не значит, что все в баре стали миллиардерами). Среднее арифметическое не дает возможности дать адекватную оценку для среднего значения в данных при появлении таких выбросов. А вот медиана эти выбросы игнорирует.

Перейдем к коду. Сначала напишем руками (да, да, иногда это полезно).

def median(values):

    sorted_vals = sorted(values)

    n = len(sorted_vals)

    mid = n // 2

    if n % 2 == 0:

        return (sorted_vals[mid - 1] + sorted_vals[mid]) / 2

    else:

        return sorted_vals[mid]

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

И наконец - мода! Тут нет ничего сложного). Модой называется наиболее частое значение в массиве данных. Для ВВП это будет немного сложно показать, но если мы округлим значения до 100 (не будем забывать, что это 2002 год), то станет значительно интереснее ( ͡~ ͜ʖ ͡°). Вот функция для округления и определения наиболее частого значения ВВП и количества таких значений в датасете:

from collections import Counter

 

def rounded_mode(values, base=100):

    rounded = [round(x / base) * base for x in values]

    freq = Counter(rounded)

    most_common = freq.most_common(1)[0]

    return most_common[0], most_common[1]

Результат не слишком оптимистичный, но с данными не поспоришь:

Итак, сегодня вы узнали, что такое статистика, каких видов она бывает, зачем она нужна и пару основных показателей, которые используются для одурманивания людей того, чтобы делать выводы, основываясь на данных (на чем и основаны все ныне существующие ИИ системы).

В следующих постах мы рассмотрим более сложные концепции статистики и, конечно же, все они будут сопровождаться примерами кода на реальных данных! Репозиторий с кодом тут. Stay tuned!


Похожие публикации

Нет похожих публикаций