Я буду використовувати малі літери для векторів і великі літери для матриць.
У випадку лінійної моделі форми:
y=Xβ+ε
де - матриця рангу , і ми припускаємо .Xn×(k+1)k+1≤nε∼N(0,σ2)
Ми можемо оцінити по , оскільки інверсія існує.β^(X⊤X)−1X⊤yX⊤X
Тепер для випадку ANOVA ми маємо, що вже не є повноцінним. Очевидність цього полягає в тому, що у нас немає і ми повинні погодитися на узагальнену інверсію .X(X⊤X)−1(X⊤X)−
Однією з проблем використання цього узагальненого зворотного є те, що він не є унікальним. Інша проблема полягає в тому, що ми не можемо знайти об'єктивного оцінювача для , оскільки
β
β^=(X⊤X)−X⊤y⟹E(β^)=(X⊤X)−X⊤Xβ.
Отже, ми не можемо оцінити . Але чи можна оцінити лінійну комбінацію ?ββ
У нас є , що лінійна комбінація «s, скажімо , є поважним , якщо існує вектор таке , що .βg⊤βaE(a⊤y)=g⊤β
У контрасти являють собою особливий випадок , оцінюваних функцій , в яких сума коефіцієнтів дорівнює нулю.g
І, контрасти виникають у контексті категоричних провісників у лінійній моделі. (якщо ви перевірите посібник, пов’язаний з @amoeba, ви побачите, що всі їх контрастні кодування пов'язані з категоричними змінними). Тоді, відповідаючи @Curious та @amoeba, ми бачимо, що вони виникають в ANOVA, але не в «чистій» регресійній моделі з лише безперервними прогнозами (ми можемо також говорити про контрасти в ANCOVA, оскільки в ній є деякі категоричні змінні).
Тепер у моделі де не є повноцінним, а , лінійна функція є оцінною, якщо існує вектор такий, що . Тобто є лінійною комбінацією рядків . Також є багато варіантів вектора , такий, що , як ми бачимо в прикладі нижче.
y=Xβ+ε
XE(y)=X⊤βg⊤βaa⊤X=g⊤g⊤Xaa⊤X=g⊤
Приклад 1
Розглянемо однобічну модель:
yij=μ+αi+εij,i=1,2,j=1,2,3.
X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢111111111000000111⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥,β=⎡⎣⎢μτ1τ2⎤⎦⎥
І припустимо, , тому ми хочемо оцінити .g⊤=[0,1,−1][0,1,−1]β=τ1−τ2
Ми можемо бачити, що існують різні варіанти вектора які дають : take ; або ; або .aa⊤X=g⊤a⊤=[0,0,1,−1,0,0]a⊤=[1,0,0,0,0,−1]a⊤=[2,−1,0,0,1,−2]
Приклад 2
Візьміть двосторонню модель:
.
yij=μ+αi+βj+εij,i=1,2,j=1,2
X=⎡⎣⎢⎢⎢11111100001110100101⎤⎦⎥⎥⎥,β=⎡⎣⎢⎢⎢⎢⎢⎢μα1α2β1β2⎤⎦⎥⎥⎥⎥⎥⎥
Ми можемо визначити оціночні функції, взявши лінійні комбінації рядків .X
Віднімання рядка 1 з рядків 2, 3 і 4 (з ):
X
⎡⎣⎢⎢⎢1000−10−1−10011−1−1−0−10101⎤⎦⎥⎥⎥
І взявши рядки 2 і 3 з четвертого ряду:
⎡⎣⎢⎢⎢1000−10−1−00010−1−1−0−00100⎤⎦⎥⎥⎥
Помноживши це на виходить:
β
g⊤1βg⊤2βg⊤3β=μ+α1+β1=β2−β1=α2−α1
Отже, у нас є три лінійно незалежні оціночні функції. Тепер лише та можна вважати контрастами, оскільки сума його коефіцієнтів (або рядок сума відповідного вектора ) дорівнює нулю.g⊤2βg⊤3βg
Повернення до однобічної збалансованої моделі
yij=μ+αi+εij,i=1,2,…,k,j=1,2,…,n.
І припустимо, ми хочемо перевірити гіпотезу .H0:α1=…=αk
У цьому налаштуванні матриця не є повноцінною, тому не є унікальним і не піддається оцінці. Щоб зробити його оцінним, ми можемо помножити на , доки . Іншими словами, є оцінним iff .Xβ=(μ,α1,…,αk)⊤βg⊤∑igi=0∑igiαi∑igi=0
Чому це правда?
Ми знаємо, що є оцінним, якщо існує вектор такий, що . Взявши окремі рядки і , тоді:
g⊤β=(0,g1,…,gk)β=∑igiαiag⊤=a⊤XXa⊤=[a1,…,ak]
[0,g1,…,gk]=g⊤=a⊤X=(∑iai,a1,…,ak)
І результат випливає.
Якщо ми хотіли б перевірити конкретний контраст, наша гіпотеза . Наприклад: , які можна записати як , тому ми порівнюємо із середнім значенням та .H0:∑giαi=0H0:2α1=α2+α3H0:α1=α2+α32α1α2α3
Цю гіпотезу можна виразити як , де . У цьому випадку і ми перевіряємо цю гіпотезу за допомогою такої статистики:
H0:g⊤β=0g⊤=(0,g1,g2,…,gk)q=1
F=[g⊤β^]⊤[g⊤(X⊤X)−g]−1g⊤β^SSE/k(n−1).
Якщо виражається як де рядки матриці
є взаємно ортогональними контрастами ( ), тоді ми можемо перевірити використовуючи статистику , деH0:α1=α2=…=αkGβ=0
G=⎡⎣⎢⎢⎢⎢⎢g⊤1g⊤2⋮g⊤k⎤⎦⎥⎥⎥⎥⎥
g⊤igj=0H0:Gβ=0F=SSHrank(G)SSEk(n−1)SSH=[Gβ^]⊤[G(X⊤X)−1G⊤]−1Gβ^.
Приклад 3
Щоб краще зрозуміти це, скористаємося , і припустимо, ми хочемо протестувати яке можна виразити як
k=4H0:α1=α2=α3=α4,
H0:⎡⎣⎢α1−α2α1−α3α1−α4⎤⎦⎥=⎡⎣⎢000⎤⎦⎥
Або як :
H0:Gβ=0
H0:⎡⎣⎢000111−1−0−0−0−1−1−0−0−1⎤⎦⎥G,our contrast matrix⎡⎣⎢⎢⎢⎢⎢⎢μα1α2α3α4⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢000⎤⎦⎥
Отже, ми бачимо, що три рядки нашої контрастної матриці визначаються коефіцієнтами контрастуючих відсотків. І кожен стовпець дає рівень фактора, який ми використовуємо в нашому порівнянні.
В основному все, що я написав, було взято \ скопійовано (безсоромно) з Rencher & Schaalje, "Лінійні моделі в статистиці", глави 8 та 13 (приклади, формулювання теорем, деякі інтерпретації), але інші речі, такі як термін "контрастна матриця "(що, справді, не відображається в цій книзі) та його дане тут визначення було моїм власним.
Відношення контрастної матриці ОП до моєї відповіді
Одна з матриць ОП (яку також можна знайти в цьому посібнику ):
> contr.treatment(4)
2 3 4
1 0 0 0
2 1 0 0
3 0 1 0
4 0 0 1
У цьому випадку наш коефіцієнт має 4 рівні, і ми можемо записати модель наступним чином: Це може бути записано в матричній формі у вигляді:
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢μμμμ⎤⎦⎥⎥⎥⎥+⎡⎣⎢⎢⎢a1a2a3a4⎤⎦⎥⎥⎥+⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
Або
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢11111000010000100001⎤⎦⎥⎥⎥X⎡⎣⎢⎢⎢⎢⎢⎢μa1a2a3a4⎤⎦⎥⎥⎥⎥⎥⎥β+⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
Тепер для прикладу кодування манекенів у тому ж посібнику вони використовують як референтну групу. Таким чином, ми віднімаємо рядок 1 з кожного другого рядка в матриці , що дає :a1XX˜
⎡⎣⎢⎢⎢1000−1−1−1−1010000100001⎤⎦⎥⎥⎥
Якщо ви спостерігаєте за нумерацією рядків та стовпців у матриці contr.tretment (4), ви побачите, що вони враховують усі рядки та лише стовпці, пов'язані з факторами 2, 3 та 4. Якщо ми робимо те саме в наведені вище показники матриці:
⎡⎣⎢⎢⎢010000100001⎤⎦⎥⎥⎥
Таким чином, матриця contr.treatment (4) говорить нам про те, що вони порівнюють коефіцієнти 2, 3 і 4 з фактором 1 і порівнюють фактор 1 з постійним (це моє розуміння вище).
І, визначаючи (тобто беручи лише ті рядки, які дорівнює 0, у вищевказаній матриці):
G
⎡⎣⎢000−1−1−1100010001⎤⎦⎥
Ми можемо перевірити і знайти оцінки контрастів.H0:Gβ=0
hsb2 = read.table('http://www.ats.ucla.edu/stat/data/hsb2.csv', header=T, sep=",")
y<-hsb2$write
dummies <- model.matrix(~factor(hsb2$race)+0)
X<-cbind(1,dummies)
# Defining G, what I call contrast matrix
G<-matrix(0,3,5)
G[1,]<-c(0,-1,1,0,0)
G[2,]<-c(0,-1,0,1,0)
G[3,]<-c(0,-1,0,0,1)
G
[,1] [,2] [,3] [,4] [,5]
[1,] 0 -1 1 0 0
[2,] 0 -1 0 1 0
[3,] 0 -1 0 0 1
# Estimating Beta
X.X<-t(X)%*%X
X.y<-t(X)%*%y
library(MASS)
Betas<-ginv(X.X)%*%X.y
# Final estimators:
G%*%Betas
[,1]
[1,] 11.541667
[2,] 1.741667
[3,] 7.596839
І оцінки однакові.
Відношення @ttnphns відповідь моє.
На їх першому прикладі налаштування має категоричний фактор A, який має три рівні. Ми можемо записати це як модель (припустимо, для простоти, що ):
j=1
yij=μ+ai+εij,for i=1,2,3
І припустимо, ми хочемо перевірити , або , при цьому є нашою референтною групою / фактором.H0:a1=a2=a3H0:a1−a3=a2−a3=0a3
Це може бути записано у матричній формі у вигляді:
⎡⎣⎢y11y21y31⎤⎦⎥=⎡⎣⎢μμμ⎤⎦⎥+⎡⎣⎢a1a2a3⎤⎦⎥+⎡⎣⎢ε11ε21ε31⎤⎦⎥
Або
⎡⎣⎢y11y21y31⎤⎦⎥=⎡⎣⎢111100010001⎤⎦⎥X⎡⎣⎢⎢⎢μa1a2a3⎤⎦⎥⎥⎥β+⎡⎣⎢ε11ε21ε31⎤⎦⎥
Тепер, якщо відняти рядок 3 від рядка 1 і рядка 2, у нас вийде, що стає (я називатиму його :XX˜
X˜=⎡⎣⎢001100010−1−1−1⎤⎦⎥
Порівняйте останні 3 стовпці вищевказаної матриці з матрицею @ttnphns . Незважаючи на порядок, вони досить схожі. Дійсно, якщо помножити , отримаємо:LX˜β
⎡⎣⎢001100010−1−1−1⎤⎦⎥⎡⎣⎢⎢⎢μa1a2a3⎤⎦⎥⎥⎥=⎡⎣⎢a1−a3a2−a3μ+a3⎤⎦⎥
Отже, ми маємо оціночні функції: ; ; .c⊤1β=a1−a3c⊤2β=a2−a3c⊤3β=μ+a3
Оскільки , ми бачимо з вищесказаного, що ми порівнюємо нашу константу з коефіцієнтом для референтної групи (a_3); коефіцієнт групи1 до коефіцієнта групи 3; і коефіцієнт групи2 до групи3. Або, як сказав @ttnphns: "Ми одразу бачимо, слідуючи коефіцієнтам, що розрахункова Константа буде дорівнює середньому значенню Y у референтній групі; цей параметр b1 (тобто фіктивна змінна A1) буде дорівнює різниці: Y означає в групі1 мінус Y означає в групі 3; параметр b2 - різниця: середнє значення у групі2 мінус середнє в групі 3 ".H0:c⊤iβ=0
Більше того, зауважте, що (дотримуючись визначення контрасту: функція оцінювання + сума рядків = 0), що вектори та є контрастами. І якщо ми створимо матрицю обмежень, ми маємо:c1c2G
G=[001001−1−1]
Наша контрастна матриця для тестуванняH0:Gβ=0
Приклад
Ми будемо використовувати ті самі дані, що і у @ttnphns "Приклад контрасту, визначений користувачем" (я хотів би зазначити, що теорія, яку я написав тут, вимагає декількох модифікацій для розгляду моделей взаємодій, тому я вибрав цей приклад. Однак , визначення контрастів і - як я називаю - матриця контрасту залишаються однаковими).
Y<-c(0.226,0.6836,-1.772,-0.5085,1.1836,0.5633,0.8709,0.2858,0.4057,-1.156,1.5199,
-0.1388,0.4865,-0.7653,0.3418,-1.273,1.4042,-0.1622,0.3347,-0.4576,0.7585,0.4084,
1.4165,-0.5138,0.9725,0.2373,-1.562,1.3985,0.0397,-0.4689,-1.499,-0.7654,0.1442,
-1.404,-0.2201,-1.166,0.7282,0.9524,-1.462,-0.3478,0.5679,0.5608,1.0338,-1.161,
-0.1037,2.047,2.3613,0.1222)
F_<-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,
5,5,5,5,5,5,5,5,5,5,5)
dummies.F<-model.matrix(~as.factor(F_)+0)
X_F<-cbind(1,dummies.F)
G_F<-matrix(0,4,6)
G_F[1,]<-c(0,3,3,-2,-2,-2)
G_F[2,]<-c(0,1,-1,0,0,0)
G_F[3,]<-c(0,0,0,2,-1,-1)
G_F[4,]<-c(0,0,0,0,1,-1)
G
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 3 3 -2 -2 -2
[2,] 0 1 -1 0 0 0
[3,] 0 0 0 2 -1 -1
[4,] 0 0 0 0 1 -1
# Estimating Beta
X_F.X_F<-t(X_F)%*%X_F
X_F.Y<-t(X_F)%*%Y
Betas_F<-ginv(X_F.X_F)%*%X_F.Y
# Final estimators:
G_F%*%Betas_F
[,1]
[1,] 0.5888183
[2,] -0.1468029
[3,] 0.6115212
[4,] -0.9279030
Отже, у нас однакові результати.
Висновок
Мені здається, що не існує однієї визначальної концепції того, що таке контрастна матриця.
Якщо ви візьмете визначення контрасту, яке дано Scheffe ("Аналіз варіації", стор. 66), ви побачите, що це оцінна функція, коефіцієнти якої дорівнюють нулю. Отже, якщо ми хочемо протестувати різні лінійні комбінації коефіцієнтів наших категоричних змінних, використовуємо матрицю . Це матриця, в якій рядки дорівнюють нулю, яку ми використовуємо для множення нашої матриці коефіцієнтів на, щоб зробити ці коефіцієнти оцінюваними. Її рядки вказують на різні лінійні комбінації контрастів, які ми тестуємо, а його стовпці вказують, які фактори (коефіцієнти) порівнюються.G
Оскільки матриця побудована таким чином, що кожен її рядок складається з контрастного вектора (який дорівнює 0), для мене є сенс називати "контрастною матрицею" ( Монахан - «Буквар на лінійних моделях» - також використовує цю термінологію).GG
Однак, як прекрасно пояснив @ttnphns, програмне забезпечення називає щось інше як "контрастна матриця", і я не зміг знайти прямий зв’язок між матрицею та вбудованими командами / матрицями від SPSS (@ttnphns ) або R (питання ОП), лише схожість. Але я вважаю, що приємна дискусія / співпраця, представлена тут, допоможе прояснити такі поняття та визначення.G