С контрастами сталкивались, наверное, все, кто имеет дело с линейными моделями. Тема достаточно подробно раскрыта в книге Статистический анализ и визуализация данных с помощью R (pdf; сообщение в блоге), а также в книге Р.Кабакова "R в действии" и во многих других источниках.
Для практического использования стандартных типов контрастов этого вполне достаточно, но один аспект в литературе обычно даже не упоминается, а именно: "контрасты" в R (то, что мы видим при использовании функции contrasts(factor)) не являются контрастами (т.е. взвешенными суммами средних значений уровней категориальной переменной).
Если коротко, то "контрасты" в R заданы в соответствии со схемой записи линейной модели при помощи фиктивных переменных, принимающих значения 0, 1 или 0, 1, -1.
Если коротко, то "контрасты" в R заданы в соответствии со схемой записи линейной модели при помощи фиктивных переменных, принимающих значения 0, 1 или 0, 1, -1.
Разберем простой пример из книги Logan M. "Biostatistical Design and Analysis Using R".
Пусть есть такие данные:
Зададим контрасты, которые R использует по умолчанию, т.е. контрасты комбинаций условий (или комбинаций воздействий, также известные как простые контрасты), которые сравнивают с первым (базовым) уровнем все остальные уровни фактора:
> contrasts(A) <- contr.treatment > contrasts(A) 2 3 G1 0 0 G2 1 0 G3 0 1
Можно заметить, что представленная матрица "контрастов" как таковых контрастов не содержит. Алгоритм получения данной матрицы следующий.
1. Записать оцениваемые коэффициенты линейной модели с контрастами в виде суммы средних значений сравниваемых уровней. Для фактора с тремя уровнями и простых контрастов с базовым первым уровнем:
\[\beta_0=1\mu_1+0\mu_2+0\mu_3\]
\[\beta_1=-1\mu_1+1\mu_2+0\mu_3\]
\[\beta_2=-1\mu_1+0\mu_2+1\mu_3\]
> solve(mat) [,1] [,2] [,3] [1,] 1 0 0 [2,] 1 1 0 [3,] 1 0 1
Первый столбец отвечает за свободный член (в данном случае это среднее значение для первого уровня фактора) и не является контрастом, а остальные столбцы представляют собой контрасты в R-понимании.
Об этом важно помнить при использовании пользовательских контрастов. Следующий пример из вышеназванной книги (пример неправильного способа задать контрасты). Сравниваем среднее значение группы G1 с общим средним значением групп G2 и G3:
Свободный член, равный 7, соответствует общему среднему всех трех групп. Среднее первой группы равно 3, второй - 7, третьей - 11; общее среднее второй и третьей группы - 9. Тогда второй коэффициент должен быть равен (3-7)-(9-7)=3-9=-6, а не -4, как у нас получилось.
Правильный вариант:
Здесь второй заданный контраст сравнивает среднее третьей группы с общий средним первых двух. Он, как и первый, равен -6.Об этом важно помнить при использовании пользовательских контрастов. Следующий пример из вышеназванной книги (пример неправильного способа задать контрасты). Сравниваем среднее значение группы G1 с общим средним значением групп G2 и G3:
> contrasts(A) <- cbind(c(1, -0.5, -0.5)) > contrasts(A) [,1] [,2] G1 1.0 -6.410345e-17 G2 -0.5 -7.071068e-01 G3 -0.5 7.071068e-01 > l <- lm(Y~A) > summary(l)$coefficients Estimate Std. Error t value Pr(>|t|) (Intercept) 7.000000 0.3333333 21.000000 7.595904e-07 A1 -4.000000 0.4714045 -8.485281 1.465426e-04 A2 2.828427 0.5773503 4.898979 2.713682e-03
Свободный член, равный 7, соответствует общему среднему всех трех групп. Среднее первой группы равно 3, второй - 7, третьей - 11; общее среднее второй и третьей группы - 9. Тогда второй коэффициент должен быть равен (3-7)-(9-7)=3-9=-6, а не -4, как у нас получилось.
Правильный вариант:
> mat <- rbind(c(1, 1, 1), c(1, -0.5, -0.5), c(0.5, 0.5, -1)) > mat [,1] [,2] [,3] [1,] 1.0 1.0 1.0 [2,] 1.0 -0.5 -0.5 [3,] 0.5 0.5 -1.0 > mat <- solve(mat) > mat [,1] [,2] [,3] [1,] 0.3333333 0.6666667 -3.702550e-17 [2,] 0.3333333 -0.6666667 6.666667e-01 [3,] 0.3333333 0.0000000 -6.666667e-01 > contrasts(A) <- mat[, -1] > l <- lm(Y~A) > summary(l)$coefficients Estimate Std. Error t value Pr(>|t|) (Intercept) 7 0.3333333 21.000000 7.595904e-07 A1 -6 0.7071068 -8.485281 1.465426e-04 A2 -6 0.7071068 -8.485281 1.465426e-04
Написано по мотивам http://sites.stat.psu.edu/~jls/stat512/lectures/ContrastsInR.pdf. Возможно, кому-то в первоисточнике будет понятнее.
Комментариев нет:
Отправить комментарий