У меня есть модель регрессии, которая выглядит следующим образом:
... или в обозначении R: y ~ x1 + x2 + x3 + x1:x2 + x1:x3 + x1:x2:x3
Допустим, и являются категориальными переменными, а - числовыми. Сложность состоит в том, что имеет три уровня и вместо стандартных контрастов мне нужно проверить:
- Существенно ли отличается перехват для уровня от среднего перехвата для уровней и .
- Значительно ли отличается ответ между уровнем и средним значением уровней и .
- Значительно ли отличается наклон между уровнем и средним значением уровней и .
Исходя из этого поста, кажется, что матрица, которую я хочу ...
2
-1
-1
Я так и делаю contrasts(mydata$x1)<-t(ginv(cbind(2,-1,-1)))
. Оценка меняется, как и другие. Я могу воспроизвести новую оценку , вычтя предсказанные значения значений групп и (когда и находится на своем эталонном уровне) из двойного значения на этих уровнях. Но я не могу поверить, что я правильно указал свою контрастную матрицу, если я не могу также аналогичным образом вывести другие коэффициенты.
Кто-нибудь есть какой-нибудь совет о том, как обернуть мою голову вокруг отношений между клеточными средствами и контрастами? Спасибо. Есть ли стандартное название для этого типа контраста?
Ага! В соответствии с ссылкой, размещенной в ответе Glen_b , суть в том, что вы можете преобразовать ЛЮБОЕ сравнение групповых значений, которые вы хотите, в контрастный атрибут в стиле R следующим образом:
- Сделайте квадратную матрицу. Строки представляют уровни вашего фактора, а столбцы представляют контрасты. За исключением первого, которое сообщает модели, что должен представлять перехват.
- Если вы хотите, чтобы ваш перехват был средним значением, заполните первый столбец одним и тем же ненулевым значением, не важно, что. Если вы хотите, чтобы перехват был одним из средств уровня, поместите число в эту строку и заполните остальные нулями. Если вы хотите, чтобы перехват был средним для нескольких уровней, поместите числа в эти строки и нули в остальные. Если вы хотите, чтобы это было средневзвешенное значение, используйте разные числа, в противном случае используйте одно и то же число. Вы можете даже ввести отрицательные значения в столбец перехвата, что, вероятно, тоже что-то значит, но это полностью меняет другие контрасты, поэтому я понятия не имею, для чего это нужно
- Заполните остальные столбцы положительными и отрицательными значениями, указывающими, какие уровни вы хотите сравнить с другими. Я забыл, почему суммирование до нуля важно, но отрегулируйте значения так, чтобы столбцы суммировали до нуля.
- Транспонировать матрицу с помощью
t()
функции. - Используйте
ginv()
изMASS
пакета или,solve()
чтобы получить обратную транспонированную матрицу. - Оставьте первый столбец, например
mycontrast<-mycontrast[,-1]
. Теперь у вас есть матрица apx p-1, но информация, которую вы вводите для перехвата, была закодирована в матрице в целом на шаге 5. - Если вы хотите, чтобы надписи в итоговом выводе были более приятными для чтения, чем
lm()
вывод по умолчанию и др., Соответствующим образом назовите столбцы вашей матрицы. Однако, перехват всегда будет автоматически назван(Intercept)
. - Сделайте вашу матрицу новым контрастом для рассматриваемого фактора, например
contrasts(mydata$myfactor)<-mymatrix
- Запуск
lm()
(и , возможно , много других функций , которые используют формулы) , как обычно в стандартном R без нагрузкиglht
,doBy
, илиcontrasts
.
Glen_b, спасибо и спасибо UCLA Статистическая Консалтинговая Группа. Мой специалист по прикладной статистике провел несколько дней, размахивая рукой по этой теме, и я все еще не знал, как на самом деле написать свою собственную контрастную матрицу. И вот, час чтения и игры с R, и я наконец-то думаю, что понял. Думаю, мне следовало обратиться в UCLA. Или Университет StackExchange.
contra.helmert
?