22 июня 2012

Протокол разведочного анализа данных: выявление избыточного количества нулевых значений



Важным этапом разведочного анализа данных является обнаружение "избыточного" количества нулевых значений (Zuur et al. 2010). Данные, включающие большое количество нулей, весьма обычны, например, в экологических исследованиях, когда исследователь оценивает численность популяции того или иного вида. Особи одной популяции редко респределены в пространстве равномерно - чаще они образуют скопления в силу, например, неоднородности распределения необходимых им факторов среды или для повышения выживаемости. Обследуя территорию, на которой обитает популяций с таким типом пространственного распределения, исследователь в большинстве случаев не встретит ни одной особи изучаемого вида, реже ему попадутся единичные особи, и лишь иногда - большие скопления особей.

Для анализа характера распределения данных такого рода (англ. count data - "счетные данные") бывает достаточно построить гистограмму или полигон частот (см. рисунок ниже). Часто счетные данные подчиняются отрицательному биномиальному распределению или распределению Пуассона, и для их анализа обычные линейные модели (вроде линейной регрессии, предполагающей нормальное распределение остатков) не подойдут - следует использовать обобщенные линейные модели (Generalized Liner Models) с соответствующим распределением остатков (см. справочный файл по R-функции glm()). Однако во многих случаях количество нулей оказывается бóльшим, чем предсказывают отрицательное биномиальное распределение или распределение Пуассона - в таких данных имеет место избыточная дисперсия, с которой обычным обобщенным линейным моделям "не справиться". Выходом здесь могут стать т.н. Zero Inflated Generalized Linear Models - обобщенные линейные модели для данных с избыточным количеством нулей. Рекомендую в этой связи почитать часто цитируемую обзорную работу Zeileis et al. (2008), в которой рассмотрены возможности R для регрессионного анализа счетных данных, включая Zero Inflated GLM. Много подробных примеров из экологии (с сопутствующим R-кодом) можно найти в книге Zuur et al. (2009) Mixed Effects Models and Extensions in Ecology with R, а также в совсем недавно опубликованной книге Zuur et al. (2012) Zero Inflated Model and Generalized Linear Models with R.


Рисунок 1. Одним из паразитов двустворчатого моллюска Dreissena polymorpha является инфузория Ophryoglena sp. На этом графике представлено распределение частот встречаемости особей Ophryoglena в 240 обследованных особях дрейссены. Инфузории не были обнаружены в 95 из 240 вскрытых моллюсков (Mastitsky et al., unpublished).


Определение закона распределения вероятностей, которому подчиняются эмпирические данные - это отдельная большая тема. Отличную статью на русском языке с примерами подгонки распределений средствами R можно почитать здесь. Советую также обратить внимание на пакет fitdistrplus и на руководство по работе с ним (англ. яз.).


2 комментария :

Анонимный комментирует...

Здравствуйте, Сергей!
Во-первых, большое спасибо Вам за книгу и блог - очень полезно и познавательно, особенно тем кто не в ладах с великим и могучим английским языком ...
Во-вторых, позвольте задать Вам вопрос.
Вопрос про glm(). В ряде работ встречал два вида записи зависимостей:
1. glm(mortality ~ dosa * pol, family=binomial(), ...),
2. glm(mortality ~ dosa + pol, family=binomial(), ...),
где pol - это "male" или "female",
mortality - умер/выжил (0/1).
но не понял в чем разница между "~ dosa * pol" и "~ dosa + pol" ???
Спасибо за ответ.

Sergey Mastitsky комментирует...

Символ * обозначает взаимодействие между предикторами и применяется для более компактной записи формулы модели, которая в развернутом виде выглядела бы как mortality ~ dosa + pol + dosa:pol. См. разд. 6.6 в книге, где это объясняется.

Отправить комментарий