Дисперсионный анализ (ANOVA) в системе R
-
Upload
sergey-mastitsky -
Category
Data & Analytics
-
view
1.238 -
download
2
description
Transcript of Дисперсионный анализ (ANOVA) в системе R
9.1. Однофакторный дисперсионный анализ
t-тест позволяет сравнить только две
группы
Однофакторный дисперсионный анализ
служит для сравнения 2 и более групп
Теория метода изложена здесь: http://r-analytics.blogspot.de/2013/01/blog-post.html
Author: Sergey Mastitsky
Изучаемый фактор не оказывает никакого
влияния на изучаемую зависимую
переменную, т.е. наблюдаемые различия
групповых средних случайны и в
действительности все эти группы являются
выборками из одной нормально
распределенной генеральной совокупности
Author: Sergey Mastitsky
С математической т.з., ANOVA является
линейной моделью (подробнее см.
http://r-analytics.blogspot.de/2013/02/blog-post.html) Соответственно используется та же функция,
что и для линейной регрессии – lm()
lm() выполняет все необходимые расчеты, а
затем функция anova() извлекает ANOVA-
таблицу из полученного модельного объекта
Author: Sergey Mastitsky
> library(ISwR)
> data(red.cell.folate)
> summary(red.cell.folate)
Концентрация ФК в эритроцитах
Три группы пациентов при разных режимах анестезии
Author: Sergey Mastitsky
> plot(folate ~ ventilation,
data = red.cell.folate)
Author: Sergey Mastitsky
# Рассчитываем параметры модели: > cell.mod <-
lm(folate ~ ventilation,
data = red.cell.folate)
# Извлекаем ANOVA-таблицу: > anova(cell.mod)
Author: Sergey Mastitsky
F-критерий
Р-значение
Author: Sergey Mastitsky
F-показывает, что средняя концентрация
ФК в исследованных группах
существенно различается (P = 0.0436)
Это единственный вывод, который
позволяет сделать дисперсионный
анализ. На этом этапе мы не можем
сказать, какие именно группы
отличаются др. от друга
Author: Sergey Mastitsky
9.2. Post-hoc анализ: множественные сравнения
групп
Author: Sergey Mastitsky
Если мы хотим выполнить все возможные парные сравнения групп,
мы должны скорректировать итоговые P-значения, поскольку чем
больше сравнений мы делаем, тем выше будет вероятность
совершить как минимум одну ошибку I рода (отклонение верной
нулевой гипотезы)
Подробнее см.: http://r-analytics.blogspot.de/2013/10/blog-post.html
Самый простой (и консервативный) метод
– поправка Бонферрони: P-значения
умножаются на число выполненных
сравнений
Подробнее см.: http://r-analytics.blogspot.de/2013/10/blog-post_13.html
Author: Sergey Mastitsky
> attach(red.cell.folate)
> pairwise.t.test(folate,
ventilation, p.adj = bonferroni")
Author: Sergey Mastitsky
Тест Тьюки: не такой консервативный, как
поправка Бонферрони
> TukeyHSD(aov(cell.mod))
Author: Sergey Mastitsky
> par(mar = c(4.5, 12, 3.5, 1))
> plot(TukeyHSD(aov(cell.mod)))
Author: Sergey Mastitsky
Author: Sergey Mastitsky
Метод Холма: http://r-analytics.blogspot.de/2013/10/blog-post_13.html
Метод Беньямини-Хохберга: http://r-analytics.blogspot.de/2013/11/blog-post.html
Метод Беньямини-Йекутили: http://r-analytics.blogspot.de/2013/11/blog-post_11.html
Большой набор методов, реализованных в пакете multcomp: http://r-analytics.blogspot.de/2014/01/multcomp.html
9.3. Проверка условий ANOVA
Традиционная ANOVA-модель предполагает
однородность («гомогенность») групповых
дисперсий
Один из тестов на выполнение этого условия –
тест Бартлетта (чувствителен к отклонениям от
условия нормальности!):
> bartlett.test(folate~ventilation)
Author: Sergey Mastitsky
Как и в случае с t-тестом, мы можем
применить поправку Уэлча:
> oneway.test(folate~ventilation)
Author: Sergey Mastitsky
Предполагается, что данные во всех
группах распределены нормально
Обычно это условие проверяется на
остатках модели
См. также: http://r-analytics.blogspot.com/2013/05/blog-post.html
Author: Sergey Mastitsky
9.4. Дисперсионный анализ по Краскелу-Уоллису
Подробнее см.: http://r-analytics.blogspot.de/2013/08/blog-post_29.html
При существенных отклонениях от условия
нормальности, Р-значениям, получаемым при
помощи параметрического ANOVA, доверять
нельзя
Выход: использование непараметрического
аналога – дисперсионного анализа по Краскелу-
Уоллису
Подобно тесту Уилкоксона, тест Краскела-
Уоллиса основан на суммах рангов
Author: Sergey Mastitsky
> kruskal.test(folate~ventilation)
Вывод: статистически значимых различий между
группами по среднему уровню ФК не выявлено
Это неудивительно:
1) Результат ANOVA был на пределе значимости
2) Тест K-W непараметрический = менее мощный
Author: Sergey Mastitsky
9.5. Двухфакторный дисперсионный анализ
> load(pH_experiment.rda)
> names(LWdata)
# Требуется выяснить эффект Treatment и Barrel на отношение Weight/Length
# Сначала проверим распределение W/L: > attach(PHdata)
> hist(Weigth/Length)
Author: Sergey Mastitsky
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
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
> LWratio <- sqrt(Weight/Length) > pH.mod <- lm(
LWratio ~ Treatment + Barrel)
> anova(pH.mod)
Author: Sergey Mastitsky