Дисперсионный анализ (ANOVA) в системе R

29
Тема 9 Сергей Мастицкий БГУ, Минск, май 2014

description

Приведен пример выполнения дисперсионног анализа (ANOVA) в среде статистических вычислений R.

Transcript of Дисперсионный анализ (ANOVA) в системе R

Page 1: Дисперсионный анализ (ANOVA) в системе R

Тема 9

Сергей Мастицкий БГУ, Минск, май 2014

Page 2: Дисперсионный анализ (ANOVA) в системе R

9.1. Однофакторный дисперсионный анализ

Page 3: Дисперсионный анализ (ANOVA) в системе R

t-тест позволяет сравнить только две

группы

Однофакторный дисперсионный анализ

служит для сравнения 2 и более групп

Теория метода изложена здесь: http://r-analytics.blogspot.de/2013/01/blog-post.html

Author: Sergey Mastitsky

Page 4: Дисперсионный анализ (ANOVA) в системе R

Изучаемый фактор не оказывает никакого

влияния на изучаемую зависимую

переменную, т.е. наблюдаемые различия

групповых средних случайны и в

действительности все эти группы являются

выборками из одной нормально

распределенной генеральной совокупности

Author: Sergey Mastitsky

Page 5: Дисперсионный анализ (ANOVA) в системе R

С математической т.з., ANOVA является

линейной моделью (подробнее см.

http://r-analytics.blogspot.de/2013/02/blog-post.html) Соответственно используется та же функция,

что и для линейной регрессии – lm()

lm() выполняет все необходимые расчеты, а

затем функция anova() извлекает ANOVA-

таблицу из полученного модельного объекта

Author: Sergey Mastitsky

Page 6: Дисперсионный анализ (ANOVA) в системе R

> library(ISwR)

> data(red.cell.folate)

> summary(red.cell.folate)

Концентрация ФК в эритроцитах

Три группы пациентов при разных режимах анестезии

Author: Sergey Mastitsky

Page 7: Дисперсионный анализ (ANOVA) в системе R

> plot(folate ~ ventilation,

data = red.cell.folate)

Author: Sergey Mastitsky

Page 8: Дисперсионный анализ (ANOVA) в системе R

# Рассчитываем параметры модели: > cell.mod <-

lm(folate ~ ventilation,

data = red.cell.folate)

# Извлекаем ANOVA-таблицу: > anova(cell.mod)

Author: Sergey Mastitsky

Page 9: Дисперсионный анализ (ANOVA) в системе R

F-критерий

Р-значение

Author: Sergey Mastitsky

Page 10: Дисперсионный анализ (ANOVA) в системе R

F-показывает, что средняя концентрация

ФК в исследованных группах

существенно различается (P = 0.0436)

Это единственный вывод, который

позволяет сделать дисперсионный

анализ. На этом этапе мы не можем

сказать, какие именно группы

отличаются др. от друга

Author: Sergey Mastitsky

Page 11: Дисперсионный анализ (ANOVA) в системе R

9.2. Post-hoc анализ: множественные сравнения

групп

Page 12: Дисперсионный анализ (ANOVA) в системе R

Author: Sergey Mastitsky

Если мы хотим выполнить все возможные парные сравнения групп,

мы должны скорректировать итоговые P-значения, поскольку чем

больше сравнений мы делаем, тем выше будет вероятность

совершить как минимум одну ошибку I рода (отклонение верной

нулевой гипотезы)

Подробнее см.: http://r-analytics.blogspot.de/2013/10/blog-post.html

Page 13: Дисперсионный анализ (ANOVA) в системе R

Самый простой (и консервативный) метод

– поправка Бонферрони: P-значения

умножаются на число выполненных

сравнений

Подробнее см.: http://r-analytics.blogspot.de/2013/10/blog-post_13.html

Author: Sergey Mastitsky

Page 14: Дисперсионный анализ (ANOVA) в системе R

> attach(red.cell.folate)

> pairwise.t.test(folate,

ventilation, p.adj = bonferroni")

Author: Sergey Mastitsky

Page 15: Дисперсионный анализ (ANOVA) в системе R

Тест Тьюки: не такой консервативный, как

поправка Бонферрони

> TukeyHSD(aov(cell.mod))

Author: Sergey Mastitsky

Page 16: Дисперсионный анализ (ANOVA) в системе R

> par(mar = c(4.5, 12, 3.5, 1))

> plot(TukeyHSD(aov(cell.mod)))

Author: Sergey Mastitsky

Page 18: Дисперсионный анализ (ANOVA) в системе R

9.3. Проверка условий ANOVA

Page 19: Дисперсионный анализ (ANOVA) в системе R

Традиционная ANOVA-модель предполагает

однородность («гомогенность») групповых

дисперсий

Один из тестов на выполнение этого условия –

тест Бартлетта (чувствителен к отклонениям от

условия нормальности!):

> bartlett.test(folate~ventilation)

Author: Sergey Mastitsky

Page 20: Дисперсионный анализ (ANOVA) в системе R

Как и в случае с t-тестом, мы можем

применить поправку Уэлча:

> oneway.test(folate~ventilation)

Author: Sergey Mastitsky

Page 21: Дисперсионный анализ (ANOVA) в системе R

Предполагается, что данные во всех

группах распределены нормально

Обычно это условие проверяется на

остатках модели

См. также: http://r-analytics.blogspot.com/2013/05/blog-post.html

Author: Sergey Mastitsky

Page 22: Дисперсионный анализ (ANOVA) в системе R

9.4. Дисперсионный анализ по Краскелу-Уоллису

Подробнее см.: http://r-analytics.blogspot.de/2013/08/blog-post_29.html

Page 23: Дисперсионный анализ (ANOVA) в системе R

При существенных отклонениях от условия

нормальности, Р-значениям, получаемым при

помощи параметрического ANOVA, доверять

нельзя

Выход: использование непараметрического

аналога – дисперсионного анализа по Краскелу-

Уоллису

Подобно тесту Уилкоксона, тест Краскела-

Уоллиса основан на суммах рангов

Author: Sergey Mastitsky

Page 24: Дисперсионный анализ (ANOVA) в системе R

> kruskal.test(folate~ventilation)

Вывод: статистически значимых различий между

группами по среднему уровню ФК не выявлено

Это неудивительно:

1) Результат ANOVA был на пределе значимости

2) Тест K-W непараметрический = менее мощный

Author: Sergey Mastitsky

Page 25: Дисперсионный анализ (ANOVA) в системе R

9.5. Двухфакторный дисперсионный анализ

Page 26: Дисперсионный анализ (ANOVA) в системе R

> load(pH_experiment.rda)

> names(LWdata)

# Требуется выяснить эффект Treatment и Barrel на отношение Weight/Length

# Сначала проверим распределение W/L: > attach(PHdata)

> hist(Weigth/Length)

Author: Sergey Mastitsky

Page 27: Дисперсионный анализ (ANOVA) в системе R

W/L ratio

Fre

qu

en

cy

0.00 0.01 0.02 0.03 0.04

02

04

06

08

01

00

Author: Sergey Mastitsky

Page 28: Дисперсионный анализ (ANOVA) в системе R

W/L ratio

Fre

qu

en

cy

0.05 0.10 0.15 0.20

02

04

06

08

0

> hist(sqrt(Weigth/Length))

Author: Sergey Mastitsky

Page 29: Дисперсионный анализ (ANOVA) в системе R

> LWratio <- sqrt(Weight/Length) > pH.mod <- lm(

LWratio ~ Treatment + Barrel)

> anova(pH.mod)

Author: Sergey Mastitsky