Usarei letras minúsculas para vetores e letras maiúsculas para matrizes.
No caso de um modelo linear do formulário:
y=Xβ+ε
onde é uma matriz da classificação , e assumimos . n × ( k + 1 ) k + 1 ≤ n ε ∼ N ( 0 , σ 2 )Xn×(k+1)k+1≤nε∼N(0,σ2)
Podemos estimar por , desde que o existe o inverso de . (X⊤X)-1X⊤yX⊤Xβ^(X⊤X)−1X⊤yX⊤X
Agora, para o caso ANOVA, temos que não é mais uma classificação completa. A implicação disso é que não temos e precisamos nos contentar com o inverso generalizado . ( X ⊤ X ) - 1 ( X ⊤ X ) -X(X⊤X)−1(X⊤X)−
Um dos problemas do uso dessa inversa generalizada é que ela não é única. Outro problema é que não conseguimos encontrar um estimador imparcial para , pois
β
β^=(X⊤X)−X⊤y⟹E(β^)=(X⊤X)−X⊤Xβ.
Portanto, não podemos estimar . Mas podemos estimar uma combinação linear dos 's?ββ
Temos que uma combinação linear dos , digamos , é estimada se existir um vetor tal que .βg⊤βaE(a⊤y)=g⊤β
Os contrastes são um caso especial de funções estimadas em que a soma dos coeficientes de é igual a zero.g
E, contrastes surgem no contexto de preditores categóricos em um modelo linear. (se você verificar o manual vinculado por @amoeba, verá que toda a codificação de contraste está relacionada a variáveis categóricas). Então, respondendo a @Curious e @amoeba, vemos que eles surgem na ANOVA, mas não em um modelo de regressão "puro", com apenas preditores contínuos (também podemos falar sobre contrastes na ANCOVA, pois temos algumas variáveis categóricas).
Agora, no modelo que não possui classificação completa e , a função linear é calculável se existir um vetor como . Ou seja, é uma combinação linear das linhas de . Além disso, existem muitas opções para o vetor , como , como podemos ver no exemplo abaixo.X E ( y ) = X ⊤ β g ⊤ β um um ⊤ X = g ⊤
y=Xβ+ε
XE(y)=X⊤βg⊤βaa⊤X=g⊤X um um ⊤ X = g ⊤g⊤Xaa⊤X=g⊤
Exemplo 1
Considere o modelo :
yij=μ+αi+εij,i=1,2,j=1,2,3.
X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢111111111000000111⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥,β=⎡⎣⎢μτ1τ2⎤⎦⎥
E suponha , então queremos estimar .g⊤=[0,1,−1][0,1,−1]β=τ1−τ2
Podemos ver que existem diferentes opções do vetor que produzem : take ; ou ; ou .aa⊤X=g⊤a⊤=[0,0,1,−1,0,0]a⊤=[1,0,0,0,0,−1]a⊤=[2,−1,0,0,1,−2]
Exemplo 2
Pegue o modelo bidirecional:
.
yij=μ+αi+βj+εij,i=1,2,j=1,2
X=⎡⎣⎢⎢⎢11111100001110100101⎤⎦⎥⎥⎥,β=⎡⎣⎢⎢⎢⎢⎢⎢μα1α2β1β2⎤⎦⎥⎥⎥⎥⎥⎥
Podemos definir as funções estimadas usando combinações lineares das linhas de .X
Subtraindo a linha 1 das linhas 2, 3 e 4 (de ):
X
⎡⎣⎢⎢⎢1000−10−1−10011−1−1−0−10101⎤⎦⎥⎥⎥
E seguindo as linhas 2 e 3 da quarta linha:
⎡⎣⎢⎢⎢1000−10−1−00010−1−1−0−00100⎤⎦⎥⎥⎥
Multiplicar isso por produz:
β
g⊤1βg⊤2βg⊤3β=μ+α1+β1=β2−β1=α2−α1
Portanto, temos três funções estimadas linearmente independentes. Agora, apenas e podem ser considerados contrastes, uma vez que a soma de seus coeficientes (ou a linha a soma do vetor respectivo ) é igual a zero.g⊤2βg⊤3βg
Voltando a um modelo balanceado
yij=μ+αi+εij,i=1,2,…,k,j=1,2,…,n.
E suponha que desejamos testar a hipótese .H0:α1=…=αk
Nesse cenário, a matriz não possui classificação completa, portanto não é exclusivo e não pode ser estimado. Para torná-lo estimado, podemos multiplicar por , contanto que . Em outras palavras, é estimado se .Xβ=(μ,α1,…,αk)⊤βg⊤∑igi=0∑igiαi∑igi=0
Por que isso é verdade?
Sabemos que é calculável se existir um vetor modo que . Tomando as linhas distintas de e , em seguida:
g⊤β=(0,g1,…,gk)β=∑igiαiag⊤=a⊤XXa⊤=[a1,…,ak]
[0,g1,…,gk]=g⊤=a⊤X=(∑iai,a1,…,ak)
E o resultado segue.
Se quisermos testar um contraste específico, nossa hipótese é . Por exemplo: , que pode ser escrito como , por isso estamos comparando à média de e .H0:∑giαi=0H0:2α1=α2+α3H0:α1=α2+α32α1α2α3
Essa hipótese pode ser expressa como , onde . Nesse caso, e testamos essa hipótese com a seguinte estatística:
H0:g⊤β=0g⊤=(0,g1,g2,…,gk)q=1
F=[g⊤β^]⊤[g⊤(X⊤X)−g]−1g⊤β^SSE/k(n−1).
Se for expresso como que as linhas da matriz
são contrastes mutuamente ortogonais ( ), então podemos testar usando a estatística , em queH0:α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β^.
Exemplo 3
Para entender melhor, vamos usar e suponha que queremos testar que pode ser expresso como
k=4H0:α1=α2=α3=α4,
H0:⎡⎣⎢α1−α2α1−α3α1−α4⎤⎦⎥=⎡⎣⎢000⎤⎦⎥
Ou, como :
H0:Gβ=0
H0:⎡⎣⎢000111−1−0−0−0−1−1−0−0−1⎤⎦⎥G,our contrast matrix⎡⎣⎢⎢⎢⎢⎢⎢μα1α2α3α4⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢000⎤⎦⎥
Portanto, vemos que as três linhas da nossa matriz de contraste são definidas pelos coeficientes dos contrastes de interesse. E cada coluna fornece o nível de fator que estamos usando em nossa comparação.
Quase tudo o que escrevi foi copiado (sem vergonha) de Rencher & Schaalje, "Modelos lineares em estatística", capítulos 8 e 13 (exemplos, formulação de teoremas, algumas interpretações), mas outras coisas como o termo "matriz de contraste" "(que, de fato, não aparece neste livro) e sua definição dada aqui era minha.
Relacionando a matriz de contraste do OP à minha resposta
Uma das matrizes do OP (que também pode ser encontrada neste manual ) é a seguinte:
> contr.treatment(4)
2 3 4
1 0 0 0
2 1 0 0
3 0 1 0
4 0 0 1
Nesse caso, nosso fator possui 4 níveis e podemos escrever o modelo da seguinte maneira: Isso pode ser escrito em forma de matriz como:
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢μμμμ⎤⎦⎥⎥⎥⎥+⎡⎣⎢⎢⎢a1a2a3a4⎤⎦⎥⎥⎥+⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
Ou
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢11111000010000100001⎤⎦⎥⎥⎥X⎡⎣⎢⎢⎢⎢⎢⎢μa1a2a3a4⎤⎦⎥⎥⎥⎥⎥⎥β+⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
Agora, para o exemplo de codificação fictícia no mesmo manual, eles usam como o grupo de referência. Assim, subtraímos a Linha 1 de todas as outras linhas da matriz , que produz a :a1XX˜
⎡⎣⎢⎢⎢1000−1−1−1−1010000100001⎤⎦⎥⎥⎥
Se você observar a numeração das linhas e colunas na matriz contr.treatment (4), verá que elas consideram todas as linhas e apenas as colunas relacionadas aos fatores 2, 3 e 4. Se fizermos o mesmo em a matriz acima produz:
⎡⎣⎢⎢⎢010000100001⎤⎦⎥⎥⎥
Dessa forma, a matriz de tratamento (4) está nos dizendo que eles estão comparando os fatores 2, 3 e 4 com o fator 1 e comparando o fator 1 com a constante (esse é o meu entendimento do que foi dito acima).
E, definindo (ou seja, assumindo apenas as linhas que somam 0 na matriz acima):
G
⎡⎣⎢000−1−1−1100010001⎤⎦⎥
Podemos testar e encontrar as estimativas dos contrastes.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 as estimativas são as mesmas.
Relacionando a resposta @ttnphns à minha.
No primeiro exemplo, a instalação possui um fator categórico A com três níveis. Podemos escrever isso como o modelo (suponha, por simplicidade, que ):
j=1
yij=μ+ai+εij,for i=1,2,3
E suponha que queremos testar ou , com como nosso grupo / fator de referência.H0:a1=a2=a3H0:a1−a3=a2−a3=0a3
Isso pode ser escrito em forma de matriz como:
⎡⎣⎢y11y21y31⎤⎦⎥=⎡⎣⎢μμμ⎤⎦⎥+⎡⎣⎢a1a2a3⎤⎦⎥+⎡⎣⎢ε11ε21ε31⎤⎦⎥
Ou
⎡⎣⎢y11y21y31⎤⎦⎥=⎡⎣⎢111100010001⎤⎦⎥X⎡⎣⎢⎢⎢μa1a2a3⎤⎦⎥⎥⎥β+⎡⎣⎢ε11ε21ε31⎤⎦⎥
Agora, se subtrairmos a Linha 3 da Linha 1 e da Linha 2, temos que se torna (eu a chamarei :XX˜
X˜=⎡⎣⎢001100010−1−1−1⎤⎦⎥
Compare as 3 últimas colunas da matriz acima com @ttnphns 'matrix . Apesar da ordem, eles são bastante semelhantes. De fato, se multiplique , obteremos:LX˜β
⎡⎣⎢001100010−1−1−1⎤⎦⎥⎡⎣⎢⎢⎢μa1a2a3⎤⎦⎥⎥⎥=⎡⎣⎢a1−a3a2−a3μ+a3⎤⎦⎥
Portanto, temos as funções estimadas: ; ; .c⊤1β=a1−a3c⊤2β=a2−a3c⊤3β=μ+a3
Como , vemos do exposto acima que estamos comparando nossa constante com o coeficiente para o grupo de referência (a_3); o coeficiente do grupo1 para o coeficiente do grupo3; e o coeficiente do grupo2 para o grupo3. Ou, como @ttnphns disse: "Vemos imediatamente, seguindo os coeficientes, que a constante estimada será igual à média Y no grupo de referência; esse parâmetro b1 (ou seja, da variável dummy A1) será igual à diferença: Y média no grupo1 menos Média Y no grupo3; e o parâmetro b2 é a diferença: média no grupo2 menos média no grupo3 ".H0:c⊤iβ=0
Além disso, observe que (seguindo a definição de contraste: função estimada + soma da linha = 0), que os vetores e são contrastes. E, se criarmos uma matriz de construções, teremos:c1c2G
G=[001001−1−1]
Nossa matriz de contraste para testarH0:Gβ=0
Exemplo
Usaremos os mesmos dados que o "Exemplo de contraste definido pelo usuário" de @ttnphns (gostaria de mencionar que a teoria que escrevi aqui exige algumas modificações para considerar modelos com interações, por isso escolhi este exemplo. , as definições de contrastes e - o que eu chamo - matriz de contraste permanecem as mesmas).
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
Então, nós temos os mesmos resultados.
Conclusão
Parece-me que não existe um conceito definidor do que é uma matriz de contraste.
Se você usar a definição de contraste, dada por Scheffe ("A análise de variância", página 66), verá que é uma função estimada cujos coeficientes somam zero. Portanto, se desejamos testar diferentes combinações lineares dos coeficientes de nossas variáveis categóricas, usamos a matriz . Essa é uma matriz na qual as linhas somam zero, que usamos para multiplicar nossa matriz de coeficientes, a fim de torná-los estimados. Suas linhas indicam as diferentes combinações lineares de contrastes que estamos testando e suas colunas indicam quais fatores (coeficientes) estão sendo comparados.G
Como a matriz acima é construída de maneira que cada uma de suas linhas seja composta por um vetor de contraste (que soma 0), para mim faz sentido chamar uma "matriz de contraste" ( Monahan - "Uma cartilha em modelos lineares" - também usa essa terminologia).GG
No entanto, como lindamente explicado por @ttnphns, os softwares estão chamando outra coisa de "matriz de contraste" e não consegui encontrar uma relação direta entre a matriz e os comandos / matrizes internos do SPSS (@ttnphns ) ou R (pergunta do OP), apenas semelhanças. Mas acredito que a boa discussão / colaboração apresentada aqui ajudará a esclarecer tais conceitos e definições.G