Userò lettere minuscole per i vettori e lettere maiuscole per le matrici.
Nel caso di un modello lineare del modulo:
y=Xβ+ε
dove è una matrice di rango , e ipotizziamo .Xn×(k+1)k+1≤nε∼N(0,σ2)
Possiamo stimare di , poiché il esiste l' inverso di .β^(X⊤X)−1X⊤yX⊤X
Ora, per il caso ANOVA, abbiamo che non è più al completo. Ciò implica che non abbiamo e dobbiamo accontentarci del contrario generalizzato .X(X⊤X)−1(X⊤X)−
Uno dei problemi dell'utilizzo di questo inverso generalizzato è che non è unico. Un altro problema è che non possiamo trovare uno stimatore imparziale per , poiché
β
β^=(X⊤X)−X⊤y⟹E(β^)=(X⊤X)−X⊤Xβ.
Pertanto, non possiamo stimare . Ma possiamo stimare una combinazione lineare di ?ββ
Abbiamo che una combinazione lineare di , diciamo , è stimabile se esiste un vettore tale che .βg⊤βaE(a⊤y)=g⊤β
I contrasti sono un caso speciale di funzioni stimabili in cui la somma dei coefficienti di è uguale a zero.g
E i contrasti emergono nel contesto dei predittori categorici in un modello lineare. (se controlli il manuale collegato da @amoeba, vedi che tutta la loro codifica del contrasto è correlata a variabili categoriali). Quindi, rispondendo a @Curious e @amoeba, vediamo che sorgono in ANOVA, ma non in un modello di regressione "pura" con solo predittori continui (possiamo anche parlare di contrasti in ANCOVA, poiché abbiamo alcune variabili categoriche in esso).
Ora, nel modello dove non è full-rank ed , la funzione lineare è stimabile se esiste un vettore tale che . Cioè, è una combinazione lineare delle righe di . Inoltre, ci sono molte scelte del vettore , tale che , come possiamo vedere nell'esempio seguente.
y=Xβ+ε
XE(y)=X⊤βg⊤βaa⊤X=g⊤g⊤Xaa⊤X=g⊤
Esempio 1
Considera il modello unidirezionale:
yij=μ+αi+εij,i=1,2,j=1,2,3.
X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢111111111000000111⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥,β=⎡⎣⎢μτ1τ2⎤⎦⎥
Supponiamo , quindi vogliamo stimare .g⊤=[0,1,−1][0,1,−1]β=τ1−τ2
Possiamo vedere che ci sono diverse scelte del vettore che producono : take ; o ; oppure .aa⊤X=g⊤a⊤=[0,0,1,−1,0,0]a⊤=[1,0,0,0,0,−1]a⊤=[2,−1,0,0,1,−2]
Esempio 2
Prendi il modello a due vie:
.
yij=μ+αi+βj+εij,i=1,2,j=1,2
X=⎡⎣⎢⎢⎢11111100001110100101⎤⎦⎥⎥⎥,β=⎡⎣⎢⎢⎢⎢⎢⎢μα1α2β1β2⎤⎦⎥⎥⎥⎥⎥⎥
Possiamo definire le funzioni stimabili prendendo combinazioni lineari delle righe di .X
Sottraendo la riga 1 dalle righe 2, 3 e 4 (di ):
X
⎡⎣⎢⎢⎢1000−10−1−10011−1−1−0−10101⎤⎦⎥⎥⎥
E prendendo le righe 2 e 3 dalla quarta fila:
⎡⎣⎢⎢⎢1000−10−1−00010−1−1−0−00100⎤⎦⎥⎥⎥
Moltiplicando questo per ottiene:
β
g⊤1βg⊤2βg⊤3β=μ+α1+β1=β2−β1=α2−α1
Quindi, abbiamo tre funzioni stimabili linearmente indipendenti. Ora, solo e possono essere considerati contrasti, poiché la somma dei suoi coefficienti (o, la riga la somma del rispettivo vettore ) è uguale a zero.g⊤2βg⊤3βg
Tornando a un modello bilanciato a senso unico
yij=μ+αi+εij,i=1,2,…,k,j=1,2,…,n.
E supponiamo di voler testare l'ipotesi .H0:α1=…=αk
In questa impostazione la matrice non è a pieno titolo, quindi non è unica e non stimabile. Per renderlo stimabile, possiamo moltiplicare per , purché . In altre parole, è stimabile iff .Xβ=(μ,α1,…,αk)⊤βg⊤∑igi=0∑igiαi∑igi=0
Perché questo è vero?
Sappiamo che è stimabile se esiste un vettore tale che . Prendendo le righe distinte di e , quindi:
g⊤β=(0,g1,…,gk)β=∑igiαiag⊤=a⊤XXa⊤=[a1,…,ak]
[0,g1,…,gk]=g⊤=a⊤X=(∑iai,a1,…,ak)
E il risultato segue.
Se desideriamo testare un contrasto specifico, la nostra ipotesi è . Ad esempio: , che può essere scritto come , quindi stiamo confrontando con la media di e .H0:∑giαi=0H0:2α1=α2+α3H0:α1=α2+α32α1α2α3
Questa ipotesi può essere espressa come , dove . In questo caso, e questa ipotesi con la seguente statistica:
H0:g⊤β=0g⊤=(0,g1,g2,…,gk)q=1
F=[g⊤β^]⊤[g⊤(X⊤X)−g]−1g⊤β^SSE/k(n−1).
Se è espresso come dove le righe della matrice
sono contrasti reciprocamente ortogonali ( ), quindi possiamo testare usando la statistica , doveH0:α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β^.
Esempio 3
Per capirlo meglio, usiamo e supponiamo di voler testare che può essere espresso come
k=4H0:α1=α2=α3=α4,
H0:⎡⎣⎢α1−α2α1−α3α1−α4⎤⎦⎥=⎡⎣⎢000⎤⎦⎥
Oppure, come :
H0:Gβ=0
H0:⎡⎣⎢000111−1−0−0−0−1−1−0−0−1⎤⎦⎥G,our contrast matrix⎡⎣⎢⎢⎢⎢⎢⎢μα1α2α3α4⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢000⎤⎦⎥
Quindi, vediamo che le tre file della nostra matrice di contrasto sono definite dai coefficienti dei contrasti di interesse. E ogni colonna indica il livello del fattore che stiamo usando nel nostro confronto.
Praticamente tutto ciò che ho scritto è stato preso / copiato (spudoratamente) da Rencher & Schaalje, "Modelli lineari in statistica", capitoli 8 e 13 (esempi, formulazione di teoremi, alcune interpretazioni), ma altre cose come il termine "matrice di contrasto "(che, in effetti, non appare in questo libro) e la sua definizione fornita qui era la mia.
Mettere in relazione la matrice di contrasto di OP con la mia risposta
Una delle matrici di OP (che si trova anche in questo manuale ) è la seguente:
> contr.treatment(4)
2 3 4
1 0 0 0
2 1 0 0
3 0 1 0
4 0 0 1
In questo caso, il nostro fattore ha 4 livelli e possiamo scrivere il modello nel modo seguente: Questo può essere scritto sotto forma di matrice come:
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢μμμμ⎤⎦⎥⎥⎥⎥+⎡⎣⎢⎢⎢a1a2a3a4⎤⎦⎥⎥⎥+⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
Oppure
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢11111000010000100001⎤⎦⎥⎥⎥X⎡⎣⎢⎢⎢⎢⎢⎢μa1a2a3a4⎤⎦⎥⎥⎥⎥⎥⎥β+⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
Ora, per l'esempio di codifica fittizia nello stesso manuale, usano come gruppo di riferimento. Pertanto, sottraggiamo la riga 1 da ogni altra riga nella matrice , che produce la :a1XX˜
⎡⎣⎢⎢⎢1000−1−1−1−1010000100001⎤⎦⎥⎥⎥
Se osservi la numerazione delle righe e delle colonne nella matrice contr.treatment (4), vedrai che considerano tutte le righe e solo le colonne correlate ai fattori 2, 3 e 4. Se facciamo lo stesso in i rendimenti della matrice sopra:
⎡⎣⎢⎢⎢010000100001⎤⎦⎥⎥⎥
In questo modo, la matrice del trattamento contr. (4) ci sta dicendo che stanno confrontando i fattori 2, 3 e 4 con il fattore 1 e confrontando il fattore 1 con la costante (questa è la mia comprensione di quanto sopra).
E, definendo (ovvero prendendo solo le righe che si sommano a 0 nella matrice sopra):
G
⎡⎣⎢000−1−1−1100010001⎤⎦⎥
Possiamo testare e trovare le stime dei contrasti.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
E le stime sono le stesse.
Correlare la risposta di @ttnphns alla mia.
Nel loro primo esempio, l'installazione ha un fattore categorico A con tre livelli. Possiamo scrivere questo come modello (supponiamo, per semplicità, che ):
j=1
yij=μ+ai+εij,for i=1,2,3
E supponiamo di voler testare o , con come gruppo / fattore di riferimento.H0:a1=a2=a3H0:a1−a3=a2−a3=0a3
Questo può essere scritto sotto forma di matrice come:
⎡⎣⎢y11y21y31⎤⎦⎥=⎡⎣⎢μμμ⎤⎦⎥+⎡⎣⎢a1a2a3⎤⎦⎥+⎡⎣⎢ε11ε21ε31⎤⎦⎥
Oppure
⎡⎣⎢y11y21y31⎤⎦⎥=⎡⎣⎢111100010001⎤⎦⎥X⎡⎣⎢⎢⎢μa1a2a3⎤⎦⎥⎥⎥β+⎡⎣⎢ε11ε21ε31⎤⎦⎥
Ora, se sottraggiamo la riga 3 dalla riga 1 e la riga 2, abbiamo che diventa (lo chiamerò :XX˜
X˜=⎡⎣⎢001100010−1−1−1⎤⎦⎥
Confronta le ultime 3 colonne della matrice sopra con la matrice di @ttnphns . Nonostante l'ordine, sono abbastanza simili. Infatti, se moltiplica , otteniamo:LX˜β
⎡⎣⎢001100010−1−1−1⎤⎦⎥⎡⎣⎢⎢⎢μa1a2a3⎤⎦⎥⎥⎥=⎡⎣⎢a1−a3a2−a3μ+a3⎤⎦⎥
Quindi, abbiamo le funzioni stimabili: ; ; .c⊤1β=a1−a3c⊤2β=a2−a3c⊤3β=μ+a3
Poiché , vediamo da quanto sopra che stiamo confrontando la nostra costante con il coefficiente per il gruppo di riferimento (a_3); il coefficiente del gruppo1 al coefficiente del gruppo3; e il coefficiente di gruppo2 rispetto al gruppo3. Oppure, come ha detto @ttnphns: "Vediamo immediatamente, seguendo i coefficienti, che la costante stimata sarà uguale alla media Y nel gruppo di riferimento; che il parametro b1 (cioè della variabile fittizia A1) sarà uguale alla differenza: media Y nel gruppo 1 meno Media Y nel gruppo 3 e il parametro b2 è la differenza: media nel gruppo 2 meno media nel gruppo 3 ".H0:c⊤iβ=0
Inoltre, osserva che (seguendo la definizione di contrasto: funzione stimabile + somma riga = 0), che i vettori e sono contrasti. E, se creiamo una matrice di costrutti, abbiamo:c1c2G
G=[001001−1−1]
La nostra matrice di contrasto per testareH0:Gβ=0
Esempio
Useremo gli stessi dati dell '"Esempio di contrasto definito dall'utente" di @ttnphns (vorrei ricordare che la teoria che ho scritto qui richiede alcune modifiche per considerare i modelli con interazioni, ecco perché ho scelto questo esempio. Tuttavia , le definizioni dei contrasti e - ciò che chiamo - la matrice di contrasto rimangono le stesse).
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
Quindi, abbiamo gli stessi risultati.
Conclusione
Mi sembra che non ci sia un concetto che definisce una matrice di contrasto.
Se prendi la definizione di contrasto, data da Scheffe ("L'analisi della varianza", pagina 66), vedrai che è una funzione stimabile i cui coefficienti si sommano a zero. Quindi, se desideriamo testare diverse combinazioni lineari dei coefficienti delle nostre variabili categoriali, utilizziamo la matrice . Questa è una matrice in cui le righe si sommano a zero, che usiamo per moltiplicare la nostra matrice di coefficienti per renderli stimabili. Le sue righe indicano le diverse combinazioni lineari di contrasti che stiamo testando e le sue colonne indicano quali fattori (coefficienti) vengono confrontati.G
Poiché la matrice sopra è costruita in modo tale che ciascuna delle sue righe sia composta da un vettore di contrasto (che somma a 0), per me ha senso chiamare una "matrice di contrasto" ( Monahan - "Un primer sui modelli lineari" - usa anche questa terminologia).GG
Tuttavia, come ben spiegato da @ttnphns, i software chiamano qualcos'altro come "matrice di contrasto" e non sono riuscito a trovare una relazione diretta tra la matrice e i comandi / matrici incorporati da SPSS (@ttnphns ) o R (domanda del PO), solo somiglianze. Ma credo che la bella discussione / collaborazione presentata qui aiuterà a chiarire tali concetti e definizioni.G