Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
98 - Telegram Web
Telegram Web
Опубликовала первое видео на ютубе, посвященное истории языка R, и ответу на животрепещущий вопрос*, почему в сообществе принято использовать оператор <-, а не =. Планируется записать ~15 видео по R и примерно столько же по статистике, так что подписывайтесь, все будет опубликовано здесь.

По результатам опроса 66% подписчиков канала используют оператор <-, что в целом неудивительно, скорее меня озадачило использование обоих операторов одновременно (почему - смотрите в видео).

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

*примерно раз в месяц в биоинформатических чатах появляется обсуждение, чем же <- лучше =

#R #youtube
Результаты репетиторской программы по статистике

Около года назад я запустила репетиторство по R, статистике и биоинформатике (условия описаны здесь). Настало время подвести итоги - основные моменты оформила в карточках (кстати, как вам такой формат подачи информации?).

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

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

Сейчас тоже возможно записаться на индивидуальные занятия, условия описаны в последней карточке, пишите в личные сообщения @lena_astr. После нового года скорее всего будет повышение цены, поэтому успевайте записаться сейчас!

#R #stats
📈 Рекомендация курса "Статистика, R и анализ данных" от бластима

Всем привет! А я снова буду техническим ассистентом на курсе бластима по статистике, R и анализу данных, и если вы ждали знак, чтобы записаться на курс — то вот он. А еще по читкоду промокоду LENAASTRR вы получите 10% скидку! Также для студентов есть 30% скидка, а для аспирантов 10%.

Почему именно вам стоит записаться на курс?

📊 Вы хотите более системно разобраться в статистических тестах, в их ограничениях и правильной интерпретации.

🖥 Давно собирались автоматизировать анализ и визуализацию данных в R, делать это быстро и эффективно, не спотыкаться о синтаксис.

🧬 Хотите освоить биоинформатические методы, в частности обработку NGS данных.

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

На курсе будем разбирать язык R с самых основ, что подходит людям без опыта программирования, но также обсудим и продвинутые штуки, что будет полезно и интересно тем, кто уже изучал язык. Самое главное преимущество курса — системность в освоении нового, например, подробно будет разбираться тема функционального программирования в R и обработка данных с помощью tidyverse-подхода, что является лучшими практиками в области (как в науке, так и в индустрии).

Курс будет проходить 23 — 27 октября + 4, 5 и 11, 12 ноября очно в Москве и онлайн. Я буду помогать 4, 5 и 11, 12 ноября на части по статистике, буду рада увидеть в числе участников подписчиков канала!

Записывайтесь на курс на сайте: agency.blastim.ru/stat_r, не забудьте про промокод. Если есть вопросы по курсу, формату проведения или еще о чем-то, можете задавать их здесь в комментариях, постараюсь ответить на все.

#R #stat #blastim #реклама
Please open Telegram to view this post
VIEW IN TELEGRAM
История факторов в R

Сегодня разберем историю факторов в R, почему раньше при чтении таблиц аргумент stringsAsFactors по умолчанию был TRUE, и почему с версии R 4.0 это отменили, а также нужны ли факторы сейчас.

Моя история знакомства с факторами в R была такова: когда я только начинала осваивать R (это было в 2017 году), и использовала его для работы с табличками дифференциальной экспрессии генов, то мне сразу сказали, что при чтении таблицы надо использовать аргумент stringsAsFactors = FALSE, чтобы строки не превратились в факторы. Прозвучало это супер непонятно, но далее я обратила внимание, что если этого не делать, то после фильтрации таблицы в строковых переменных остаются какие-то уровни (levels), это было неудобно, поэтому я стала следить, чтобы всегда при чтении таблиц было указано stringsAsFactors = FALSE. И потом при работе уже с дисперсионным анализом поняла, зачем нужны были факторы, и как их использовать, но все равно они оставались чем-то загадочным, средним между строкой и числом, даже казались мне ближе к строке (но это не так, сейчас разберем почему).

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

Кроме этого, есть еще одна менее очевидная причина. Раньше хранение факторов занимало меньше места в памяти, чем хранение строк. Дело в том, что факторы во внутреннем представлении R – это integer, то есть целые числа, соответственно занимают около 4 байт памяти. При этом строки занимают больше памяти и при работе с категориальными переменными каждая строка таблицы занимала свое место в памяти (то есть если записано disease в 100 строках, то грубо говоря и памяти будет занято как место занимаемое строкой disease*100) [1].
Плюс сравнивать факторы было проще, чем строки, поскольку сравнение чисел происходит за фиксированное время, в то время как для сравнения строк необходимо было "проходить" каждую строку побайтно.


🖥 Все изменилось в обновлении R 2.6.0 в 2007 году, когда сделали хеширование CHARSXP, что означало, что теперь ВСЕ строки хешируются и хранятся в глобальном пуле строк, и теперь к строкам обращались по целочисленным указателям: не было нужды хранить каждую копию строки, достаточно было хранить только указатель.
Между прочим, это обновление было сделано благодаря проекту Bioconductor, потому что разработчикам приходилось работать с большими строками, например, с последовательностями нуклеиновых кислот и белков, и без хеширования строк работа со старым типом была максимально неэффективной.

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

Иллюстрация объема памяти, занимаемого на хранение строк (пример взят из книги Advanced R):
banana <- "bananas bananas bananas"
obj_size(banana)
#> 136 B
obj_size(rep(banana, 100))
#> 928 B

Мы создали 100 копий строки, но при этом занимаемый объем увеличился всего в 6.8 раз!

При чтении таблиц средствами базового R аргумент stringsAsFactors был TRUE, и только в 2020 году с версии R 4.0 разработчики R это изменили на FALSE. Только в функциях из пакета readr строки не превращались в факторы по умолчанию. На мой взгляд, разработчики R довольно поздно изменили дефолтное поведение функций read.table и read.csv, но лучше уж поздно чем никогда, хотя я сейчас пользуюсь только readr-ом для загрузки таблиц (и fread, при необходимости).

Ссылки на источники:
1. https://simplystatistics.org/posts/2015-07-24-stringsasfactors-an-unauthorized-biography/
2. https://notstatschat.rbind.io/2015/07/25/stringsasfactors-sigh/
3. https://notstatschat.rbind.io/2022/03/31/stringsasfactors-do-you-feel-lucky/

#R #history #baseR
Please open Telegram to view this post
VIEW IN TELEGRAM
Рекомендация курса "Анализ данных RNA-seq" от Бластима

А я к вам с еще одной рекомендацией, на этот раз курса Бластим по анализу RNA-seq данных.

Исторически повелось и у Бластима, и у многих других школ, что NGS — это сборная солянка обо всем в области: и метагеномика, и филогенетика, и дифференциальная экспрессия, но мало кому реально все это нужно на практике в коротком промежутке времени. Поэтому рекомендую пойти на курс RNA-seq — это быстрее и дешевле.

Курс стартует уже через неделю, 25 октября, но еще не поздно записаться + у меня есть промокод на скидку 15%: LENAASTRRNA.

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

Преимущества курса:

- Удобный формат, занятия проходят онлайн раз в неделю вечером.
- Сочетание теории с практикой, возможность проанализировать собственные RNA-seq данные с сопровождением преподавателей, обратной связью и финальной презентацией результатов.
- В программе курса есть все необходимое, чтобы освоить стандартный пайплайн обработки RNA-seq данных, включая работу как с модельными, так и с немодельными организмами.
- Плюс введение в single-cell, для тех кто хочет вкатиться в эту область (но это скорее стартовые знания, дальше нужно будет углубляться самому).

Итак, записывайтесь на сайте, всех жду!

#реклама #blastim
Brian Moore про Властелин Колец в попытке найти, а кто действительно главный герой трилогии на основании сказанных слов, появлений на экране и взаимрдействий.

ps табло гики, советую обязательно подсмотреть, что все картинки героев – не картинки, а полигоны! Прям очень необычно.
Очень классная визуализация в Tableau частоты встречаемости героев Властелина Колец. Мне лично интересно, какая частотность упоминания штанов Арагорна (спойлер: скорее всего 0, потому что похоже что во всем тексте упоминаний не было).

#data_vis
Основные изменения в tidyverse 2.0.0

Совсем недавно (31 октября) вышла новая версия R 4.3.2 и я обнаружила, что на домашнем ноутбуке сижу на версии R уже прошлого года, а значит пора обновиться. К тому же при подготовке лекции по tidyverse обнаружила, что у меня не самая актуальная версия, а ведь еще в марте вышло обновление tidyverse до 2.0.0 версии, о чем мы сегодня поговорим.

Наиболее полно описаны основные изменения в статье Mine Çetinkaya-Rundel "Teaching the tidyverse in 2023", здесь я выделю ключевые моменты.
1) lubridate стал одним из уже 9 пакетов core tidyverse, что для меня довольно удобно, потому что все время нужен для работы с датами и временем.
2) Немного изменился синтаксис функции dplyr::case_when(), теперь значение по умолчанию пишется как .default = , а не TRUE ~ , как было раньше. При этом синтаксис с TRUE все еще работает, что радует, хотя в новых скриптах стоит переходить на новый.
3) Функции if_else() и case_when() перестали быть настолько строгими с пропущенными значениями, так, раньше:
# previously
df |>
mutate(
x = case_when(
~ "value 1",
~ "value 2",
~ "value 3",
TRUE ~ NA_character_
)
)

в случае использования NA в качестве результата выражения, необходимо было прописывать тип пропущенных значений (NA_character_, NA_real_ и тп). Теперь это отменили, что неплохо, хотя мне казалось полезным контролировать тип пропущенных значений. Но если честно, ошибка была непонятная, в случае если не знаешь в чем дело.

4) Появилась возможность прописывать группировку непосредственно в функции summarise() аргументом .by.

# previously
df |>
group_by(x) |>
summarize(mean(y))


Это важно, поскольку после group_by() + summarise() датафрейм остается сгруппированным, что может повлиять на дальнейшие расчеты, и иногда необходимо разгруппировать датафрейм. Теперь, если сгруппированный датафрейм не нужен в дальнейшем, то можно написать так:

# now, optionally
df |>
summarize(
mean(y),
.by = x
)

Звучит неплохо, но связка group_by+summarise уже настолько привычна, что отвыкать придется долго.
В целом, после обновления обратная совместимость сохраняется, порадовало например, что синтаксис с TRUE в case_when() не сломался.

И помимо этого, в телеграме появилась возможность использовать подсветку синтаксиса для чанков с кодом с версии 4.11 для десктопа. Это очень круто, кто еще не сделал, обновите телеграм, код получается супер красивым и отформатированным. Для подсветки синтаксиса используются три бэктика ``` и название языка, далее код и три закрывающих бэктика. По умолчанию такое форматирование делает reprex::reprex() (про репрекс можно почитать мой пост, который не утратил актуальности).

Также планирую в ближайшие две недели продолжить запись лекций по R, так что обязательно следите за новостями!

Пишите комментарии, заценили ли обновление tidyverse и телеграма, используете ли аргумент .by вместо group_by() и любые вопросы!

#R #tidyverse
Поправки на множественное тестирование

Возвращение долгожданных лонгридов по статистике!

На подготовку материала потребовалось достаточно много времени, но думаю получилось очень интересно, читаем пост по ссылке:
https://ubogoeva.github.io/R4Analytics/posts/multiple_testing.html

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

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

#stats #stat_hard

Статистика и R
Один статистик 40 лет проработал в самой успешной биотех компании. Долго, хорошо работал, тимлидом стал.
И была у него всю жизнь одна привычка: каждое утро он открывал левый верхний ящичек стола, заглядывал в него, а потом закрывал на ключик. Когда он ушел на пенсию, сотрудники бросились к столу и вскрыли этот ящик – там лежала старая-старая, потрепанная бумажка, на которой было написано: "p-value это вероятность получить такое же или еще более экстремальное значение тестовой статистики при условии верности нулевой гипотезы"

#stat_fun

@stats_for_science
Дорогие подписчики, посты на телеграм-канал возвращаются. Немного выпала из публикаций, в связи с относительно большой преподавательской нагрузкой:

Я все еще провожу репетиторство по основам R и статистики, актуальная стоимость: 2500р в час. А также участвую в проекте Статистика и R для селекционеров (кстати, если кому-то интересно, то еще можно присоединиться).

Еще у Александра Гинько выходит перевод легендарной книги Хэдли Викхама Advanced R, прочитать про перевод можно здесь, а также получить промокод на скидку. Очень здорово, что выходит перевод такой книги, планирую заказать бумажный вариант (в оригинале читала, но на бумаге почитать тоже приятно). От переводчика я ранее читала перевод книги Mastering Shiny, качество перевода очень высокое.

В настоящий момент я больше занимаюсь изучением продуктовой аналитики: продуктовые метрики, A/B тесты и прочие связанные вещи. Собираюсь делиться интересными мыслями на эти темы здесь на канале. От основного фокуса канала, отраженного в названии, не отказываюсь, но хочу немного расширить профиль.

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

По статистике: я готовлю пост про роль нормального распределения для параметрических статистических тестов, так что оставайтесь на связи, в течение месяца планирую дописать.

Статистика и R
Channel name was changed to «Статистика и R в науке и аналитике»
Не только tidyverse: материалы по data.table

По работе понадобилось разбираться с data.table, который я игнорировала достаточно долгое время, в силу отсутствия особой необходимости работы с большими объемами данных. На самом деле давно пора было, потому что он реально нужен в арсенале инструментов аналитика данных.

Для быстрого освоения data.table рекомендую материалы (учебник и запись вебинаров) Филиппа Управителева, очень здорово расписано. Также документация по dt написана достаточно лаконично и исчерпывающе (что соответствует dt-подходу в целом).

В целом, в извечном споре tidyverse vs data.table (спор при этом не совсем корректен, так как tidyverse — экосистема пакетов, а data.table один пакет для обработки таблиц) можно не занимать какую-то сторону, а использовать преимущества обоих подходов, подробнее можно почитать у Ильи Шутова на канале R in Action.

Еще вчера вышел перевод Advanced R от Александра Гинько, я уже купила pdf-версию, хочу более внимательно прочитать часть про метапрограммирование, круто, что такие книги появляются на русском языке + можно купить бумажное издание.

#R #tidyverse #data_table

Статистика и R
2024/12/22 02:41:48
Back to Top
HTML Embed Code: