[МУЗЫКА] [МУЗЫКА]
[МУЗЫКА] Уважаемые слушатели,
данный урок посвящен дисперсионному анализу и его реализации в пакете R.
Как вы могли узнать из презентации, дисперсионный анализ
применяется в частности в случае, когда мы хотим исследовать влияние некоторого
качественного фактора на количественный показатель.
В зависимости от количества факторов,
мы можем рассматривать однофакторный, двухфакторный и более анализ.
Рассмотрим на примере выручки одного небольшого магазина в зависимости
от двух факторов.
В качестве первого фактора мы рассмотрим бригаду продавцов,
которая работает в магазине.
Предполагается, что работает две бригады, и если одна из них более
квалифицированная, возможно она будет приносить большую выручку.
Второй фактор – это день недели.
Проверим, влияет ли день недели на выручку магазина.
Для начала выполним стандартные действия.
Очистим рабочее пространство.
Я уже выполнила эту операцию, как видите, рабочее пространство у нас пусто.
Далее, установим рабочую директорию и загрузим таблицу с данными,
которые сейчас у меня находятся в текстовом файле.
Мы с вам с этим файлом уже работали и делали для него предварительную обработку.
Посмотрим, что представляет наш новый объект tab, содержащий таблицу,
для которой мы будем выполнять рассчеты.
В данной таблице у нас имеется 42 наблюдения,
то есть где-то 6 полных рабочих недель.
День недели – это первая переменная,
которая в данном случае закодирована значениями от одного до семи.
1 соответствует понедельнику, 2 – вторнику и так далее до воскресенья.
Далее у нас работают две команды, или две бригады,
которые мы условно обозначим команда 1 и команда 2: T1 и T2,
они работают посменно через неделю.
И в последнем столбце у нас имеется информация о суточном доходе магазина.
Сначала выполним предварительную графическую обработку, выполним следующую
операцию: мы рассчитаем для начала средние значения по каждому показателю.
Обратите внимание, как можно выполнить операцию.
Мы хотим рассчитать средние значения для величин дохода,
но при этом мы хотим сгруппировать эти величины по дням недели.
При этом, ко всем этим группам, мы будем применять операцию среднего.
Для того чтобы выполнить эту операцию подобным образом,
мы используем функцию tapply, тем самым мы получим
значение средних для дохода, но по дням недели.
Сформируем этот новый объект и посмотрим, что у нас получилось.
Как видите, у нас данные были сгруппированы по семи значениям,
то есть по дням недели от первого до седьмого, и операция mean,
то есть вычисление среднего арифметического,
была применена к каждой группе, мы получили семь значений дохода.
Далее аналогично мы применим также операцию вычисления
среднего к величинам дохода, но теперь группировка будет идти по бригадам.
Выполняем аналогичную операцию, и выводим соответствующее значение, то
есть вот это среднее значение выручки, но теперь группировка шла по второму фактору.
Далее мы построим два графика, которые также сгруппируют нам значение выручки по
соответствующим уровням факторов, отдельно для дней недели о отдельно для бригады.
Первая группировка у нас будет идти по дню недели,
то есть наша формула — это величины дохода в зависимости от дня,
взятые из таблицы, ну и сразу подпишем этот график.
Посмотрите, что дает соответствующая операция stripchart.
Здесь у нас по оси x откладываются величины выручки,
по оси y — уровни фактора, от первого в данном случае для седьмого,
потому что мы сначала строим график для дня недели,
и мы видим вот это — уровни выручки для понедельника,
вот это — значения выручки для вторника, для среды и так далее до воскресенья.
Если внимательно присмотреться к этому графику,
можно заметить некоторую тенденцию, что в среднем значения выручки для первых
четырех дней чуть меньше, а для трех последних дней чуть побольше.
Ну понятно, что визуально однозначного вывода мы сделать не сможем,
нам нужно будет применить более строгие критерии.
Аналогичную картину мы построим для команды или для бригады.
И здесь мы видим похожий график,
также по оси x у нас откладываются значения выручки,
а по y у нас имеются два уровня второго фактора, то есть вот это выручка,
которую приносила первая бригада на протяжении данного периода работы,
а вот это, соответственно, вторая бригада.
Как мы видим, здесь такого явного отличия средних графически не наблюдается,
но это тоже требует более строгой проверки.
Какие графики мы можем построить еще?
Давайте выполним следующую операцию,
она строит нам значения средних по дню,
ну я сразу здесь указала цвет и подписали по оси x,
что это значения выручки, указанной по дням недели.
В данном случае день недели у нас откладывается по оси x,
а по оси y откладываются значения выручки.
Если вы обратите внимание, здесь у нас указан параметр type– 'o',
type– 'o' — это графический параметр, который определяет нам, каким
образом мы будем строить этот график, 'o' — это точки, соединенные линиями.
По этому графику мы также можем пронаблюдать
некоторую тенденцию к возрастанию выручки ближе к концу недели.
Первые четыре дня она держится примерно на одном не очень высоком уровне,
а потом пятница — начинается подъем.
Также построим аналогичный график для бригады.
Также будем строить его точками, соединенными линиями,
цвет выбираем голубой, подписываем оси.
Судя по данному графику видно,
что для первой бригады выручка чуть больше, чем для второй,
но нам необходимо проверить, является ли данное отличие статистически значимым.
На этот вопрос нам ответит как раз таки дисперсионный анализ,
который мы проведем чуть позже.
Какие еще графики можно построить при проведении подобного анализа?
Мы уже строили с вами диаграммы размаха, или box plot, или «коробка с усами».
Здесь мы также можем построить аналогичные графики, сгруппировав наши наблюдения
по бригаде или по дню недели, давайте также выполним эти действия.
Построим график box plot для бригады и мы видим аналогичную ситуацию,
то есть среднее значение для первой бригады у
нас чуть выше среднего значения для второй, ну и опять-таки у нас остается
открытым тот же вопрос: является ли вот это отличие статистически значимым?
Аналогичный график по дню недели, и здесь опять та же тенденция,
которую мы только что видели на графике средних, — примерно равные
уровни для первых четырех дней и некоторые возрастания к концу недели.
Для того чтобы представить эти графики более красиво и более наглядно, мы
можем раскрасить их в определенные цвета, если вы обратитесь к команде colors,
посмотрите всю палитру, выберете оттенки, которые вам больше нравятся...
Задаем вектор цвета и строим абсолютно аналогичный график,
добавляя дополнительный графический параметр, определяющий цвет.
Также мы можем построить сразу зависимость по двум факторам,
то есть если мы в формуле укажем, что мы хотим посмотреть влияние
фактора дня и команды или бригады на выручку,
мы получим вот такой вот график.
Ну а теперь проведем непосредственно дисперсионный анализ.
Основными предпосылками к применению дисперсионного анализа являются
требования, чтобы наблюдения подчинялись нормальному закону,
и чтобы дисперсии в группах были примерно равны.
Давайте проверим,
что наша выборка действительно подчиняется нормальному распределению.
Количественной величиной в данном случае у нас является доход,
именно для нее мы проверим гипотезу о нормальности.
Для этого применим критерий Шапиро-Уилка.
Как видим, значение p-value = 0,27,
при уровне значимости 0,05 значение p-value выше уровня значимости,
соответственно гипотеза о нормальности распределения в нашем случае принимается,
мы можем применять дисперсионный анализ.
Дисперсионный анализ в пакете R реализован функцией
aov — analysis of variance, анализ дисперсии.
Обратите внимание на то, что несмотря на свое название,
дисперсионный анализ проверяет гипотезу о равенстве средних, а не дисперсий.
То есть анализируются дисперсии, но вывод получается о том,
равны средние при разных уровнях фактора или не равны.
Для начала мы проверим гипотезу о том,
что значения дохода равны в среднем по всем дням недели.
Мы выполняем дисперсионный анализ и сразу выводим результаты.
То есть мы в операцию summary() подставляем операцию analyses of variance.
В данном случае эта команда выполнит нам
однофакторный дисперсионный анализ для дня недели.
То есть на второй фактор в данном случае мы не обращаем внимания,
как будто бы его просто нет.
Перед нами появляется таблица с основными результатами.
В данном случае мы должны посмотреть на значение p-value,
которое у нас указывается в соответствующей строке,
и в данном случае оно существенно меньше,
чем 0.05, чем заданный уровень значимости.
Соответственно, с очень высокой статистической значимостью мы можем
принять влияние данного фактора.
То есть гипотеза о равенстве средних в нашем случае отклоняется.
Также проведём аналогичный анализ для второй переменной бригады.
Это будет аналогичный однофакторный дисперсионный
анализ без рассмотрения второго фактора.
На самом деле, поскольку у нас в данном случае второй фактор имеет
всего два уровня, а наблюдения подчиняются нормальному распределению,
мы также могли бы применить здесь критерий Стьюдента.
Но поскольку мы с вами сейчас работаем в разделе дисперсионного анализа и у
нас также присутствует второй фактор, который содержит большее число уровней,
мы выполним аналогичную команду и для фактора с двумя уровнями.
Здесь аналогично проверяется гипотеза о том, что средние равны,
и в отличие от предыдущего случая значение p-value у нас получилось больше, чем 0.05.
Соответственно, гипотеза о равенстве средних по данному фактору у нас
принимается.
Следовательно, можно сделать вывод о том, что данный фактор не влияет на наблюдение.
А вот теперь мы проведём двухфакторных дисперсионный анализ,
когда в формулу будут включены оба фактора.
Пока мы не будем рассматривать эффект взаимодействия.
То есть просто добавляем влияние двух факторов в нашу модель.
Здесь дисперсии немного перераспределились,
как раз таки по двум предположительно влияющим факторам.
У нас часть дисперсии объясняется фактором бригады,
часть дисперсии объясняется влиянием дня, и также,
естественно, присутствует остаточная дисперсия.
Сами эти значения у нас указаны во втором столбце, точнее, это не совсем дисперсия,
а суммы квадратов, а в последнем столбце мы видим значение p-value для
проверки гипотез о равенстве средних по всем уровням соответствующего фактора.
Для бригады это значение чуть больше, чем 0.05,
соответственно, гипотеза о равенстве средних в данном случае принимается.
Для второго фактора «день» значение p-value существенно меньше,
чем 0.05, соответственно с достаточно высокой статистической
значимостью мы отклоняем гипотезу о равенстве средних по дню
и выносим решение о влиянии соответствующего фактора.
В нашем случае задача лишена смысла, но, тем не менее,
иногда бывает необходимым включить в модель эффект взаимодействия,
когда предполагается, что сочетание каких-то уровней
фактора может дополнительно влиять на зависимую переменную.
В этом случае формула должна выглядеть следующим образом: у нас имеются
показатели дохода, на который отдельно влияет бригада,
отдельно влияет день недели, но также через произведение мы указываем,
что могут влиять и оба фактора вместе, то есть их сочетания.
В данном случае это будет двухфакторный дисперсионный анализ с эффектом
взаимодействия.
Но, как я уже сказала, поскольку в нашем случае взаимодействие бригады
и дня недели с практической точки зрения маловероятно, то, скорее всего,
этот эффект взаимодействия будет отклонён, то есть его влияние не будет приниматься.
Тем не менее давайте посмотрим, как это работает.
Выполняем соответствующую операцию, и,
как мы и предполагали, для эффекта взаимодействия — вот она,
третья последняя строка — мы получили вероятность p-value очень-очень высокую.
Существенно выше уровня значимости, то есть с высокой степенью
надёжности влияние эффекта взаимодействия в данном случае отклоняется.
То есть мы получили при двухфакторном дисперсионном анализе, что из
двух факторов статистически значимо на выручку в нашем случае влияет день недели.
Определим цвета для обоих наборов данных
и построим график.
[МУЗЫКА] [МУЗЫКА]