У мене є регресійна модель, яка виглядає приблизно так:
... або у позначенні 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
?