Usaré letras minúsculas para vectores y letras mayúsculas para matrices.
En caso de un modelo lineal de la forma:
y = X β+ε
donde es unXn × ( k + 1 )k + 1 ≤ nε ∼ N( 0 , σ2)
Podemos estimar ββ^( X⊤X )- 1X⊤yX⊤X
Ahora, para el caso de ANOVA, tenemos que X( X⊤X )- 1( X⊤X )-
β
β^= ( X⊤X )-X⊤y⟹mi( β^) = ( X⊤X )-X⊤X β.
ββ
Tenemos que una combinación lineal de los 's, digamos gβsol⊤βunami( a⊤y )= g⊤β
sol
Y, los contrastes aparecen en el contexto de predictores categóricos en un modelo lineal. (si revisa el manual vinculado por @amoeba, verá que todos sus códigos de contraste están relacionados con variables categóricas). Luego, respondiendo a @Curious y @amoeba, vemos que surgen en ANOVA, pero no en un modelo de regresión "puro" con solo predictores continuos (también podemos hablar de contrastes en ANCOVA, ya que tenemos algunas variables categóricas en él).
y = X β + ε
Xmi( y ) = X⊤βsol⊤βunauna⊤X = g⊤sol⊤Xunauna⊤X = g⊤, como podemos ver en el siguiente ejemplo.
Ejemplo 1
yyo j= μ + αyo+ εyo j,i = 1 , 2, j = 1 , 2 , 3.
X = ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢1111111110 00 00 00 00 00 0111⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥,β = ⎡⎣⎢μτ1τ2⎤⎦⎥
sol⊤= [ 0 , 1 , - 1 ][ 0 , 1 , - 1 ] β = τ1- τ2
unauna⊤X = g⊤una⊤= [ 0 , 0 , 1 , - 1 , 0 , 0 ]una⊤= [ 1 , 0 , 0 , 0 , 0 , - 1 ]una⊤=[2,−1,0,0,1,−2]
Ejemplo 2
yyo j= μ + αyo+ βj+ εyo j,i=1,2,j=1,2
X = ⎡⎣⎢⎢⎢1111110 00 00 00 01110 010 00 010 01⎤⎦⎥⎥⎥,β = ⎡⎣⎢⎢⎢⎢⎢⎢μα1α2β1β2⎤⎦⎥⎥⎥⎥⎥⎥
X
X
⎡⎣⎢⎢⎢10 00 00 0- 10 0- 1- 10 00 011- 1- 1- 0- 10 010 01⎤⎦⎥⎥⎥
⎡⎣⎢⎢⎢10 00 00 0- 10 0- 1- 00 00 010 0- 1- 1- 0- 00 010 00 0⎤⎦⎥⎥⎥
β
sol⊤1βsol⊤2βsol⊤3β= μ + α1+ β1= β2- β1= α2- α1
sol⊤2βsol⊤3βsol
yyo j= μ + αyo+ εyo j,i = 1 , 2 , ... , k, j = 1 , 2 , ... , n .
H0 0: α1= … = Αk
Xβ = ( μ , α1, ... , αk)⊤βsol⊤∑yosolyo= 0∑yosolyoαyo∑yosolyo= 0
¿Por qué esto es verdad?
sol⊤β = ( 0 , g1, ... , gk) β = ∑yosolyoαyounasol⊤= a⊤XXuna⊤= [ a1, ... , unk]
[ 0 , g1, ... , gk] = g⊤= a⊤X = ( ∑younayo, una1, ... , unk)
Y el resultado sigue.
H0 0: ∑ gyoαyo= 0H0 0: 2 α1= α2+ α3H0 0: α1= α2+ α32α1α2α3
H0 0: g⊤β = 0sol⊤= ( 0 , g1, g2, ... , gk)q= 1
F=[ g⊤β^]⊤[ g⊤( X⊤X )-g ]- 1sol⊤β^SSmi/ k(n-1).
H0 0: α1= α2= … = ΑkG β=0
G = ⎡⎣⎢⎢⎢⎢⎢sol⊤1sol⊤2⋮sol⊤k⎤⎦⎥⎥⎥⎥⎥
sol⊤yosolj= 0H0 0: G β = 0F=SSHrango ( G )SSEk ( n - 1 )SSH = [ G β^]⊤[ G ( X⊤X )- 1sol⊤]- 1G β^
Ejemplo 3
k = 4H0 0: α1= α2= α3= α4 4,
H0 0: ⎡⎣⎢α1- α2α1- α3α1- α4 4⎤⎦⎥= ⎡⎣⎢0 00 00 0⎤⎦⎥
H0 0: G β = 0
H0 0: ⎡⎣⎢0 00 00 0111- 1- 0- 0- 0- 1-1- 0- 0- 1⎤⎦⎥G ,nuestra matriz de contraste⎡⎣⎢⎢⎢⎢⎢⎢μα1α2α3α4 4⎤⎦⎥⎥⎥⎥⎥⎥= ⎡⎣⎢0 00 00 0⎤⎦⎥
Entonces, vemos que las tres filas de nuestra matriz de contraste están definidas por los coeficientes de los contrastes de interés. Y cada columna da el nivel de factor que estamos usando en nuestra comparación.
Casi todo lo que he escrito fue tomado / copiado (descaradamente) de Rencher & Schaalje, "Modelos lineales en estadística", capítulos 8 y 13 (ejemplos, redacción de teoremas, algunas interpretaciones), pero otras cosas como el término "matriz de contraste "(que, de hecho, no aparece en este libro) y su definición dada aquí fue la mía.
Relacionar la matriz de contraste de OP con mi respuesta
Una de las matrices de OP (que también se puede encontrar en este manual ) es la siguiente:
> contr.treatment(4)
2 3 4
1 0 0 0
2 1 0 0
3 0 1 0
4 0 0 1
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥= ⎡⎣⎢⎢⎢⎢μμμμ⎤⎦⎥⎥⎥⎥+ ⎡⎣⎢⎢⎢una1una2una3una4 4⎤⎦⎥⎥⎥+ ⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
⎡⎣⎢⎢⎢y11y21y31y41⎤⎦⎥⎥⎥= ⎡⎣⎢⎢⎢111110 00 00 00 010 00 00 00 010 00 00 00 01⎤⎦⎥⎥⎥X⎡⎣⎢⎢⎢⎢⎢⎢μuna1una2una3una4 4⎤⎦⎥⎥⎥⎥⎥⎥β+ ⎡⎣⎢⎢⎢ε11ε21ε31ε41⎤⎦⎥⎥⎥
una1XX˜
⎡⎣⎢⎢⎢10 00 00 0- 1- 1- 1- 10 010 00 00 00 010 00 00 00 01⎤⎦⎥⎥⎥
⎡⎣⎢⎢⎢0 010 00 00 00 010 00 00 00 01⎤⎦⎥⎥⎥
De esta manera, la matriz contr.treatment (4) nos dice que están comparando los factores 2, 3 y 4 con el factor 1, y comparando el factor 1 con la constante (esto es mi comprensión de lo anterior).
sol
⎡⎣⎢0 00 00 0- 1- 1- 110 00 00 010 00 00 01⎤⎦⎥
H0 0: 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
Y las estimaciones son las mismas.
Relacionando la respuesta de @ttnphns a la mía.
j = 1
yyo j= μ + ayo+ εyo j,para i=1,2,3
H0 0: a1= a2= a3H0 0: a1- un3= a2- un3= 0una3 como nuestro grupo / factor de referencia.
⎡⎣⎢y11y21y31⎤⎦⎥= ⎡⎣⎢μμμ⎤⎦⎥+ ⎡⎣⎢una1una2una3⎤⎦⎥+ ⎡⎣⎢ε11ε21ε31⎤⎦⎥
⎡⎣⎢y11y21y31⎤⎦⎥= ⎡⎣⎢11110 00 00 010 00 00 01⎤⎦⎥X⎡⎣⎢⎢⎢μuna1una2una3⎤⎦⎥⎥⎥β+ ⎡⎣⎢ε11ε21ε31⎤⎦⎥
XX˜
X˜= ⎡⎣⎢0 00 0110 00 00 010 0- 1- 1- 1⎤⎦⎥
LX˜β
⎡⎣⎢0 00 0110 00 00 010 0- 1- 1- 1⎤⎦⎥⎡⎣⎢⎢⎢μuna1una2una3⎤⎦⎥⎥⎥= ⎡⎣⎢una1- un3una2- un3μ + a3⎤⎦⎥
C⊤1β = a1- un3C⊤2β = a2- un3C⊤3β = μ + a3 .
H0 0: c⊤yoβ = 0 , vemos a partir de lo anterior que estamos comparando nuestra constante con el coeficiente para el grupo de referencia (a_3); el coeficiente del grupo1 al coeficiente del grupo3; y el coeficiente del grupo2 al grupo3. O, como dijo @ttnphns: "Vemos inmediatamente, siguiendo los coeficientes, que la constante estimada será igual a la media Y en el grupo de referencia; ese parámetro b1 (es decir, de la variable ficticia A1) será igual a la diferencia: media Y en el grupo1 menos Y media en el grupo 3; y el parámetro b2 es la diferencia: media en el grupo 2 menos media en el grupo 3
C1C2sol
G = [ 00 010 00 01- 1- 1]
H0 0: G β = 0
Ejemplo
Utilizaremos los mismos datos que el "ejemplo de contraste definido por el usuario" de @ttnphns (me gustaría mencionar que la teoría que he escrito aquí requiere algunas modificaciones para considerar modelos con interacciones, por eso elegí este ejemplo. Sin embargo , las definiciones de contrastes y, lo que yo llamo, matriz de contraste siguen siendo las mismas).
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
Entonces, tenemos los mismos resultados.
Conclusión
Me parece que no hay un concepto que defina qué es una matriz de contraste.
sol
solsol
sol