19 декабря 2012

2013 - Международный год статистики



По инициативе, выдвинутой несколькими крупными коммерческими организациями и профессиональными ассоциациями (например, American Statistical AssociationSAS Institute, The International Statistical Institute, и многие др.), 2013 г. объявлен Международным годом статистики. Цели этого мероприятия заключаются в следующем:
  • повышение осведомленности общественности о роли статистики в современном мире;
  • продвижение статистики как профессии, особенно среди молодых людей;
  • продвижение кретивности и новых разработок в области теории вероятностей и статистики.
В рамках Международного года статистики будет проведено большое количество научных конгрессов, конференций, и разного рода общественных мероприятий, со списком которых можно ознакомиться на официальном сайте проекта - www.statistics2013.org. Организация, в которой Вы работаете или учитесь, может поддержать этот проект, подав соответствующую заявку (эта регистрация ни к чему не обязывает - на сайте statistics2013.com просто будет размещена ссылка на Вашу организацию). Кроме того, Вы можете оказать поддержку, сообщив о Международном годе статистики в Вашем блоге, твиттере, в социальных сетях, включая размещение ссылки на официальный презентационный видеоролик:



С наступающим Новым Годом!


15 декабря 2012

Законы распределения вероятностей, реализованные в R



В базовой версии R имеются функции для работы с целым рядом распространенных законов распределения вероятностей. В зависимости от назначения, имена этих функций начинаются с одной из следующих четырех букв:
  • d (от "density", плотность): функции плотности вероятности ("функция распределения масс" для дискретных величин);
  • p (от "probability", вероятность): кумулятивные функции распределения вероятностей;
  • q (от "quantile", квантиль): функции для нахождения квантилей того или иного распределения;
  • r (от "random", случайный): функции для генерации случайных чисел в соответствии с параметрами того или иного закона распределения вероятностей.

08 декабря 2012

Shiny: опять хорошие новости



Меньше месяца назад я писал о выходе нового продукта проекта RStudio - пакета Shiny для создания веб-приложений на основе R. Появление этого пакета было весьма положительно воспринято R-сообществом, о чем можно судить по сообщениям, собранным на сайте-агрегаторе r-bloggers.com

В начале этой недели на CRAN была опубликована новая, стабильная версия Shiny - v0.2.3. Помимо исправления мелких багов, новая версия отличается расширенными функциональными возможностями - в частности, появились опции для сохранения файлов с результатами вычислений, выполненных веб-приложением.

30 ноября 2012

Новая версия RStudio обеспечивает тесную интеграцию с Rcpp



Вчера в официальном блоге RStudio было объявлено о выходе новой версии этой программы - v0.97.237. В новом релизе разработчики сосредоточили свои усилия на тесной интеграции RStudio с Rcpp - пакетом, который обеспечивает удобный API интерфейс между R и C++ (подробнее см. здесь). Не секрет, что исполнение кода, написанного на R, может быть достаточно медленным (особенно если функции не векторизованы), тогда как интеграция R-функций, переписанных на С++, позволяет увеличить скорость в 2-3 и более раз. В новой версии RStudio реализован ряд опций, значительно облегчающих работу с C++ кодом и Rcpp. Отличное введение в основы работы с Rccp можно найти на github-странице Хэдли Укхэма.

RStudio в режиме редактирования C++ кода (источник: блог RStudio)




24 ноября 2012

Векторизованные вычисления в R с использованием apply-функций



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

18 ноября 2012

Классические методы статистики: критерий Мак-Немара



Рассмотренный ранее критерий \(\chi^2\) для анализ таблиц сопряженности размером 2х2 применим только в отношении независимых наблюдений. Если же учет какого-либо дихотомического признака выполняется, например, на одних и тех же испытуемых, вместо критерия \(\chi^2\) следует использовать критерий Мак-Немара (назван по имени автора - американского психолога и статистика Куинна Мак-Немара; оригинальная статья, в которой был описан этот критерий (McNemar 1947), доступна для скачивания в свободном доступе с сайта издательсва Springer).

10 ноября 2012

Знакомьтесь - Shiny, пакет для создания интерактивных веб-приложений на основе R



На днях в официальном блоге проекта RStudio было объявлено о выходе их нового продукта - пакета Shiny ("сияющий"), предназначенного для создания интерактивных веб-приложений на базе R. Это не первая разработка такого рода - существует несколько пакетов для создания пользовательских интерфейсов и веб-приложений на основе R (например, tcltk, RGtk2rpanel, gWidgets, gWidgetsWWW2, и другие). Однако, как утверждают разработчики, Shiny отличается особой простотой, с которой пользователи могут создавать свои приложения (в частности, не требуется знания HTML и/или Java). В этом сообщении я приведу небольшой пример, демонстрирующий возможности Shiny.

30 октября 2012

Новые версии R и RStudio



На этой неделе была опубликована новая версиия R - v2.15.2. С полным списком нововведений и исправленных багов можно ознакомиться здесь. Наряду с оптимизацией движка R, стоит отметить также следующие новинки:
  • В базовом пакете stats появился новый метод - Multistratum MANOVA
  • Стал доступным новый метод (Hyman's method) для монотонной интерполяции кубических сплайнов
  • Оптимизирована скорость работы и функциональные возможности некоторых часто используемых функций (например, array(), rep(), tabulate(), qqline(), hist())
  • Увеличен лимит оперативной памяти, доступной для R на 64-битных машинах (с 16 Gb до 32 Gb).
Помимо новости о выпуске новой версии R, стало также известно о публикации тестовой версии RStudio - v0.97. В частности, после периода тестирования в полноценной версии v0.97 появятся:
  • ряд опций, поддерживащих разработку новых пакетов для R (например, интеграция с Roxygen, devtools и Rcpp)
  • подсветка синтаксиса С/C++
  • режим эмуляции текстового редактора Vim
  • новые команды - Restart R (Перезапустить R) и Terminate R (Завершить работу R)

26 октября 2012

Оценка статистической мощности при сравнении долей



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

Источник: http://apgovernment2010.yolasite.com
Представим, что мы входим в команду кандитата в президенты страны X. Согласно результатам опросов, выполненных командой кандидата-соперника, выяснилось, что популярность нашего кандидата у городских жителей выше, чем у жителей села (28% против 20% среди 100 и 100 опрошенных респондентов соответственно). Безусловно, это важная информация, которая может помочь в планировании агитационных мероприятий (возможно, например, что следует направить больше ресурсов на агитацию среди сельских жителей). Однако, стоит ли доверять информации из лагеря соперника?

13 октября 2012

Оценка статистической мощности t-критерия Стьюдента



В этом сообщении я покажу, как можно рассчитать статистическую мощность t-критерия Стьюдента средствами R. Начнем с краткого рассмотрения сути проблемы.

Статистическая мощность (реже "чувствительность") (англ. statistical power) - это вероятность того, что тот или иной статистический критерий правильно отклонит неверную нулевую гипотезу. Иными словами - это способность критерия обнаружить различия там, где они действительно существуют. Обычно процесс проверки статистической гипотезы включает следующие шаги:
  • Формулировка собственно проверяемой нулевой гипотезы. Например, в случае двухвыборочного критерия Стьюдента она состоит в том, что обе выборки происходят из нормально распределенных генеральных совокупностей с одинаковыми средними значениями (подробнее см. здесь).
  • Выбор подходящего статистического критерия для проверки нулевой гипотезы. Вычисление значения этого критерия по имеющимся выборочным данным.
  • Определение критического значения критерия, исходя из желаемого уровня статистической значимости \(\alpha\) и свойств теоретического распределения этого критерия.
  • Проверка того, превышает ли рассчитанный по выборочным данным критерий критическое значение. Если такое превышение не наблюдается, делают вывод о том, что нулевая гипотеза верна.

06 октября 2012

Пакет sos: быстрый и эффективный поиск справочной информации по R



В силу разных причин, поиск технической информации по R (например, справки о том или ином пакете или функции) может быть проблематичным. Конечно, при удачной формулировке поискового запроса Google и другие поисковые системы в большинстве случаев помогут найти необходимую информацию - вопрос лишь в том, сколько уйдет времении на выбор наиболее релевантных ссылок среди результатов поиска и знакомство с ними. Эта проблема давно волнует R-сообщество, что привело к созданию нескольких специализированных инструментов для осуществления онлайн-поиска справочной информации по R (ссылки на пять основных таких "поисковиков" приведены на странице R Search сайта R-проекта).

21 сентября 2012

Классические методы статистики: коэффициент корреляции



Коэффициент корреляции (\(r\)) - очень удобный показатель степени взаимосвязи между двумя переменными. Он представляет собой безразмерную величину, которая изменяется от \(-1\) до \(+1\). При независимом варьировании переменных, когда связь между ними отсутствует, \(r = 0\). Чем сильнее связь, тем больше величина коэффициента корреляции. При этом положительные значения \(r\) указывают на положительную (= прямую) связь (т.е. при увеличении значений одной переменной в среднем возрастают значения и другой переменной), а отрицательные - на отрицательную (= обратную) связь (при возрастании одной переменной другая уменьшается).

09 сентября 2012

Вышла новая версия графического пакета ggplot2 - v0.9.2



В блоге проекта RStudio проф. Хэдли Уикхэм (Hadley Wickham) объявил о выходе новой версии ggplot2 - самого популярного графического пакета для R. Версия 0.9.2, опубликованная на сайте CRAN 4 сентября, включает ряд существенных изменений, которые, прежде всего, касаются шаблонов графиков ("themes", как называют их создатели пакета). Теперь изменять исходные настройки шаблонов стало проще (см. примеры здесь). Кроме того, ряду функций были даные новые, более информативные имена (утверждается, что ранее написанный код будет работать и с новыми функциями, но программа будет выдавать соответствующие предупреждения). Вот примеры лишь некоторых заметных изменений:
  • Устарело имя функции opts(). Теперь вместо него следует использовать theme()
  • theme_blank(), theme_text(), theme_rect(), theme_line() и theme_segment() также устарели. Их следует заменить на element_blank(), element_text(), element_rect() и element_line()
  • Ранее заголовок графика задавался следующим образом: opts(title = "Title text"). В новой версии это делается при помощи ggtitle("Title text") или labs(title = "Title text").
С дополнительными изменениями можно ознакомиться на github-странице проекта ggplot2.


07 сентября 2012

Классические методы статистики: точный тест Фишера



Одно из условий применимости рассмотренного ранее критерия \(\chi^2\) состоит в том, что ожидаемые частоты в любой из ячеек таблицы сопряженности не должны быть меньше 5 (Гланц 1999). При небольшом числе наблюдений, это условие может не выполняться, и тогда более корректным подходом (с точки зрения получаемых Р-значений) будет использование точного теста Фишера (Fisher’s exact test). Он основан на переборе всех возможных вариантов заполнения таблицы сопряженности при имеющейся численности групп, и поэтому чем эта численность меньше, тем проще выполнить соотвествующие вычисления. Так, вероятность получить некоторую таблицу сопряженности размером 2х2 равна
\[P = \frac{{R}_{1}!{R}_{2}!{C}_{1}!{C}_{2}!}{N!({O}_{11}!{O}_{12}!{O}_{21}!{O}_{22}!)}\]


Столбец 1
Столбец 2
Суммы по строкам
Строка 1
\({O}_{11}\)
\({O}_{12}\)
\({R}_{1}\)
Строка 2
\({O}_{21}\)
\({O}_{22}\)
\({R}_{2}\)
Суммы по столбцам
\({C}_{1}\)
\({C}_{2}\)
\(N\)


01 сентября 2012

RStan: быстрый расчет байесовских моделей со смешанными эффектами в R



В последние лет десять одной из стандартных программ для аналитиков, представляющих байесовскую школу, была система статистических вычислений BUGS (Bayesian inference Using Gibbs Sampler; позднее также ее open-source инкарнации OpenBugs и JAGS). BUGS (может вызываться из R благодаря пакету R2WinBUGS) служит для построения статистических моделей со смешанными эффектами (mixed-effects models; также multilevel models - многоуровневые модели, или hierarchical models - иерархические модели). Будучи основанной на определенном подходе к математическому описанию таких моделей, программа позволяет задать случайным эффектам необходимые статистические распределения, назначить байесовские априорные оценки параметров этих распределений, а также указать взаимодействия между случайными эффектами. Несмотря на развитый математический аппарат таких моделей, расчет их параметров представляет собой нетривиальную вычислительную проблему и требует значительных машинных ресурсов, поскольку параллельно выполняются несколько сотен или тысяч симуляций Монте Карло для каждой случайной переменной. Соответствующие симуляции обычно выполняются по схеме марковских цепей с использованием сэмплера Гиббса. К сожалению, расчеты моделей с большим и даже умеренным количеством параметров могут занимать очень много времени и даже оканчиваться неудачей в связи с несходимостью алгоритма.

19 августа 2012

Критерий хи-квадрат для таблиц сопряженности размером больше 2x2



В одном из предыдущих сообщений я описал принцип работы критерия \(\chi^2\) и привел пример его применения в отношении простейшего случая - анализа частот, сведенных в таблицу сопряженности размером \(2\times 2\). Безусловно, на практике можно столкнуться с данными, имеющими более сложную структуру. В целом, можно говорить о таблицах сопряженности размером \(R\times C\), где \(R\) - количество строк, а \(C\) - количество столбцов в таблице. Число степеней свободы в таких таблицах составляет \(df = (R - 1)(C - 1)\).

Источник: wikipedia.org
Предположим, мы выполнили исследование трех популяций наземных моллюсков, в ходе которого отмечали цвет раковины. Цвет выражался следующими тремя градациями - "светлый" (light), "темный" (dark) и "очень темный" (very dark). Необходимо выяснить, различаются ли частоты встречаемости каждого из вариантов окраски в исследованных популяциях.