Пользовательские контрасты очень широко используются в анализах, например: "Значения DV на уровне 1 и 3 уровня этого трехуровневого фактора значительно отличаются?"
Интуитивно этот контраст выражается в терминах клеточных средств как:
c(1,0,-1)
Один или несколько из этих контрастов, связанных как столбцы, образуют матрицу коэффициента контрастности, например
mat = matrix(ncol = 2, byrow = TRUE, data = c(
1, 0,
0, 1,
-1, -1)
)
[,1] [,2]
[1,] 1 0
[2,] 0 1
[3,] -1 -1
Однако, когда дело доходит до запуска этих контрастов, заданных матрицей коэффициентов, в Интернете и в книгах есть много (по-видимому, противоречивая) информация. Мой вопрос в том, какая информация верна?
Претензия 1: контрасты (коэффициент) принимают матрицу коэффициентов
В некоторых примерах пользователю показано, что матрицу интуитивного контрастного коэффициента можно использовать непосредственно через функции contrasts()
или C()
, Так что это просто:
contrasts(myFactor) <- mat
Претензия 2: коэффициенты преобразования для создания схемы кодирования
В другом месте (например, статистика UCLA) нам говорят, что матрица коэффициентов (или базовая матрица) должна быть преобразована из матрицы коэффициентов в контрастную матрицу перед использованием. Это включает в себя обратное преобразование матрицы коэффициентов: (mat')⁻¹
, или, в Rish:
contrasts(myFactor) = solve(t(mat))
Этот метод требует заполнения матрицы с помощью начального столбца средств для перехвата. Чтобы этого избежать, некоторые сайты рекомендуют использовать обобщенную обратную функцию, которая может справиться с неквадратичными матрицами, т.е. MASS::ginv()
contrasts(myFactor) = ginv(t(mat))
Третий вариант: преждевременно преобразовать, взять обратный и пост-умножить на преобразование
В другом месте (например, примечание от поддержка SPSS), мы узнаем, что правильная алгебра: (mat'mat)-¹ mat'
Имея в виду, что правильный способ создания матрицы контрастов должен быть:
x = solve(t(mat)%*% mat)%*% t(mat)
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 1 0 -1
[3,] 0 1 -1
contrasts(myFactor) = x
Мой вопрос в том, что правильно? (Если я правильно интерпретирую и описываю каждый совет). Как указать пользовательские контрасты в R для lm
, lme
и т.д.?
Refs