Data&Knowledge
130 subscribers
25 photos
21 files
160 links
Работаем с данными
Download Telegram
Статья на википедии про распределение выборочного среднего:
https://en.wikipedia.org/wiki/Sampling_distribution

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

Даже если распределение генеральной совокупности ненормальное, то распределение выборки может быть близким к нормальному.

Для примерного установления распределения выборки можно использовать бутстрэп, метод Монте-Карло или положиться на асимптотическое распределение (https://en.wikipedia.org/wiki/Asymptotic_distribution).
Иными словами, на мой взгляд, мы можем использовать t-test, когда более менее уверены, что распределение генеральной совокупности близко к нормальному. Я думаю, что это можно установить несколькими способами:
1. Убедиться, что не было ошибок при формировании выборок. Эти ошибки могут убрать нормальность.
2. Проверить для начала, а не нормальна ли сама выборка. Посмотреть на коэффициенты ассиметрии (skewness) и эксцесса (kurtosis). Думаю, можно и проверить тестами Шапиро-Уилка или Колмогорова-Смирнова.
3. Проверить методом бутстрэпа на нормальность распределения выборочных средних.

Не очень-то густые инсайты. Теперь осталось понять требование к гомогенности дисперсий.
Итак, теперь про равенство дисперсий. Одно из предположений т-критерия Стьюдента состоит в том, что выборочные дисперсии равны. Кажется очевидным, что перед использование теста, необходимо проверить выборки на это самое равенство. Если же дисперсии не равны, то можно отказаться от т-теста Стьюдента в пользу т-теста Уэльча для выборок с разными дисперсиями. Почему же это нужно?

Оказывается, т-критерий Стьюдента начинает плохо себя вести, когда и размеры, и дисперсии выборок отличаются. Особенно ему плохеет, когда большая выборка имеет меньшую дисперсию. В таких ситуациях и рекомендуется использовать т-критерий Уэлча. А чтобы узнать, равны ли дисперсии, раньше предлагалось использовать тесты равенства дисперсий, к примеру, тест Левене.

Получается, что необходимо использовать тест Левене, а потом выбирать подходящий т-критерий? И тут всё становится слегка запутанным. Как и многие статистические тесты, тест Левене имеет свою мощность. Получается, он тоже с некоторой долей вероятности может допускать ошибки первого и второго рода. И в этот момент оказывается, что выигрыш от использования теста Левене и выбора более подходящего варианта из тестов Стьюдента и Уэлча не перекрывает выигрыш от просто постоянного использования т-критерия Уэлча (который работает слегка хуже на выборках одинакового размера с одинаковой дисперсией).

Практические выводы:
1. Т-критерий Стьюдента можно более-менее безопасно использовать при равных выборках или когда бОльшая выборка имеет пропорционально бОльшую дисперсию.
2. Можно просто постоянно использовать т-критерий Уэлча, особенно если выборки разного размера.

#t_test #т_критерий
Может кому-то это будет интересно и здесь. Для меня удивительно, что вычислительная сложность, которую мы обычно ассоциируем с алгоритмами, играет важную роль и в представлении знаний. К примеру, не так много людей знают, что кроме P и NP классов сложности, есть еще и PSPACE, EXPTIME, NEXPTIME, EXPSPACE. И разрешимость многих логик (дескриптивных, модальных), о которых я буду писать позже, лежит как раз за пределами NP.
В книге же по алгоритмам Бхаргавы таких сложностей нет. Там разбираются самые основы простым языком. Поэтому, если вы хотите погрузиться в мир алгоритмов, эта книга станет хорошим началом пути.
Forwarded from Учим Питон
А не начать ли нам книжный клуб? :D

А начать. И начнем мы с того, что нужно знать каждому программисту - алгоритмы. Если коротко, то алгоритм - это последовательность действий, решающая определенную задачу за конечно время. И хороший программист должен знать, как оценивать эффективность алгоритмов, как создавать эффективные алгоритмы и какие алгоритмы используются в его инструментах.

И начнем мы с книги для начинающих:
Бхаргава А. - Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих
План таков:
1. Заполучить книгу (купить, скачать из файлов ВК и т.д.)
2. Каждую неделю читать одну главу.

Итак, начинаем сегодня с главы "1. Знакомство с алгоритмами". Читаем её до следующих выходных. В конце следующей недели я сделаю небольшую выжимку по главе и подготовлю опрос.
Вопросы можно задавать в нашем чате в телеграмме: https://t.me/learnpythonforfun_chat.

#книжный_клуб #алгоритмы
Кстати, а кто-нибудь помнит, что мы начинали проходить курс по статистике? Ну ладно, я начинал. Вот он: https://stepik.org/course/76
В общем, прошлая тема была t-test. В какой-то мере мы с ней разобрались, следующая тема qq-плот. Как мне кажется, я нашел шикарный материал по этой теме.
Еще один источник для тех, кто хочет погрузиться в обработку языка:
https://web.stanford.edu/~jurafsky/slp3/
Еще два материала, которые рекомендуют для подготовки к собеседованиям:
https://www.statlearning.com/ - книги по машинному обучению
https://www.youtube.com/watch?v=5N9V07EIfIg&list=PLOg0ngHtcqbPTlZzRHA2ocQZqB1D_qZ5V&index=1 - youtube-плэйлист по нему же.
Мне тут в личку группы Учим Питон сам автор прислал статью, и я решил поделиться ею здесь: https://habr.com/p/802773/
Тема интересная, потому что, как мне кажется, визуализация данных - это 90% процентов успеха в анализе. Сначала проводишь разведочный анализ по графикам, а потом результаты анализа надо презентовать.
В статье мне понравился общий ход мыслей: думать о том, чтобы человеку было легко. Если бы мне надо было делать похожие графики, то я бы, как и автор, использовал разные цвета, визуально группировал бы одинаковые сущности, добавлял размерность через толщину/цвет точек.
С чем я не согласен. Я бы практически не трогал прозрачность элементов. В комнате плохой проектор? Часть данных будет не видна. Плохо печатает принтер? Часть данных сольется в одном цвете. В общем, я бы старался разные группы данных различать градиентом. Дополнительно, я бы побоялся включать более четырех линий в один график - мне такие воспринимать сложно. Ну и напоследок, я бы увеличил шрифты, а линию предсказания сделал бы прерывистой/пунктирной.
Если у кого есть вопросы/предложения, можете писать их в комментариях тут - автор обещал заглянуть и ответить :)
👍2
Я тут недавно поучаствовал в локальном онлайн-хакатоне от своего университета (https://bbdc.csl.uni-bremen.de/en/2024-2/professional-track/). Занял 14 место из 17, в своё оправдание могу сказать, что времени у меня было не очень много и я не использовал нейронные сети. Хакатон длился около месяца.
Задание.
В рамках задания были представлены данные акселерометра и фотоплетизмографа (штука, которая "меряет" пульс) + данные о пульсе, поле, возрасте, номере устройства. Участникам предлагалось классифицировать по этим данным настроение (['HAPPY', 'RELAXED', 'SAD', 'ANGRY']) и контекст (['WALKING', 'CONVERSATION', 'VIEW_BOOTH', 'OTHER']).
Что я сделал.
Мне показался скучным путь решения через натравливание нейронки, поэтому я пошел другим путем. В дополнение к трем осям, я вычислил общий вектор амплитуды через корень суммы квадратов. Сначала я прогнал данные через никзочастотный фильтр, чтобы убрать шумы. Потом применил RobustScaler, чтобы убрать выбросы и отмасштабировать данные. Затем я обнаружил пики для каждой оси. Дополнительно я вычислил метрики по этим пикам: ритм, среднее время шага, ско времени шага, регулярность шагов и т.д. Метрики были вычислены для интервалов, предшествующих событию измерения. Я использовал библиотеку sensormotion. Потом все эти фичи были скормлены в HistGradientBoostingClassifier из sklearn. Для классификации настроения и контекста я использовал окна разной длины.
Что я бы сделал по-другому.
Мне кажется, что главная ошибка, которую я допустил - мало времени провел над инжинирингом фич. По сути, получилось, что я скормил много мусора в классификатор, а он там что-то извлёк. Стоило лучше разобраться с тем, как работают алгоритмы детектирования пиков с самого начала, подумать о лучшем фильтре, посмотреть, какие ещё метрики могут быть использованы.
Ещё я хотел подумать, как решить проблему сопоставления осей. К примеру, что если одни часы имеют отличную ориентацию от других часов. В общем, надо было больше потратить времени на приведение входных данных в порядок.
Итог.
Я поучаствовал в хакатоне, мне было интересно поработать с данными, выучить новые уроки, немного набить руку. После окончания диссертации собираюсь засесть за ML+DL, надеюсь, после этого в хакатонах у меня дело пойдет пободрее 🙂
👍3
Всё ещё пишу свою диссертацию, но осталось уже буквально пара недель и затем, вероятно, я смогу вернуться к изучению статистики, NLP, нейронок и прочих вещей.

Из обновлений: в мае я собираюсь поучаствовать в стартап кэмпе с одной NLP-темой. Попробую предложить сервис извлечения основной информации из научных статей для борьбы с галлюцинациями у LLM моделей.
Еще нашел недавно интересную книжку:
Rodrigues, Miguel RD, and Yonina C. Eldar, eds. Information-theoretic methods in data science. Cambridge University Press, 2021.
В ней рассказывается о теории информации и дата сайнс - давно мечтал почитать что-то подобное.

В общем, пока что всё. И небольшой опрос напоследок :)
Вы что-нибудь слышали про bias-variance tradeoff?
Anonymous Poll
29%
Да
47%
Нет
24%
Посмотреть ответы
Нашел ещё один учебник по машинному обучению: https://education.yandex.ru/handbook/ml. В некоторых местах (про Байесовский подход), он мне показался довольно сложным и спутанным. Но, думаю, сойдет как альтернативный источник знаний.

Меня уже долгое время волнует вопрос: зачем люди делают всё новые и новые учебники, вместо того, чтобы сделать ресурс, где одни и те же темы будут объяснены под разными углами. У самого сделать такой ресурс просто не доходят руки :(
Что могу сказать, пара недель дописывания немного затянулась. К счастью, вчера я уже подал диссертацию, а это значит две вещи. Во-первых, через 2-4 месяца у меня будет защита. Во-вторых, мне надо повторить те статистические методы, что я использовал 😬

Итак, небольшой план на ближайшие пару месяцев:
1. Chi-square test
2. Fisher exact test
3. ANOVA
4. Factor Analysis
5. Structural Equation Modeling
6. Effect sizes, power analysis.

P.S. Покупка графического планшета не сделала создание постов проще, зато можно использовать стилус как элемент фото.
👍4
pearson1900.pdf
822.9 KB
Я тут попробовал разобраться, почему работает тест хи-квадрат. Чуть позже напишу про него подробнее, но я наконец понял, зачем нужен был матанализ в универе. Я ничего из него не помню и, честно, не смог пока разобраться в хи-квадрате. Если кто-то хочет окунуться в глубины отчаяния, вот оригинальная работа Пирсона по хи-квадрат. В более простом виде, вывод можно посмотреть на вики (https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test#Derivation). А я, как и сказал, постараюсь на днях описать, а что же это за тест, как его применять, и только в общих чертах, почему же он работает.
Вопрос: как делать посты?

Я решил, что неплохо бы делать посты на тему всяких статистических штук, но я не очень понимаю, как это сделать лучше. С одной стороны в постах будут картинки и формулы, поэтому телеграм не особо-то подходит. С другой же - давать ссылки на колаб-ноутбуки кажется не эффективным, люди просто не будут переходить.
Я тут сделал небольшой шаблон на английском для материалов по статистике. В нем сочетаются две идеи. Первая: материал должен быть интересен для читающих, люди должны понимать, зачем им это читать. Поэтому в пояснениях можно увидеть требования давать примеры использования и давать общие пояснения. Вторая идея - наш мозг работает чередуя периоды возбуждения и релаксации. Поэтому в шаблоне интересный и простой материал (мотивация, примеры) чередуется с более сложным (основные формулы и разбор принципов работы). Надеюсь, что нибудь из этого получится.
👍1