我将对向量使用小写字母,对矩阵使用大写字母。
对于以下形式的线性模型:
y=Xβ+ε
其中是等级的矩阵,我们假设。 Ñ × (ķ + 1 )ķ + 1 ≤ Ñ ε 〜Ñ(0 ,σ 2)Xn×(k+1)k+1≤nε∼N(0,σ2)
我们可以通过来估算,因为倒数存在。β^(X⊤X)−1X⊤yX⊤X
现在,对于方差分析,我们认为不再是完整排名。这意味着我们没有,我们必须满足广义逆。X(X⊤X)−1(X⊤X)−
使用这种广义逆的问题之一是它不是唯一的。另一个问题是,由于
,我们找不到的无偏估计量β
β^=(X⊤X)−X⊤y⟹E(β^)=(X⊤X)−X⊤Xβ.
因此,我们无法估计。但是我们可以估计的线性组合吗?ββ
如果存在向量使得,则的线性组合,例如是可以估计的。β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
我们可以看到向量不同选择会产生:以 ; 或 ; 或。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
从( 2、3和4行中减去第1行):
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
在此设置下,矩阵并非完全排名,因此并非唯一且。为了使其可估计,只要,我们就可以将与相乘。换句话说,如果,则是可估计的。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章(示例,定理的措词,一些解释),但还有其他内容,例如术语“对比矩阵” ”(实际上,这本书中没有出现),这里给出的定义是我自己的。
将OP的对比度矩阵与我的答案相关
OP的矩阵之一(也可以在本手册中找到)如下:
> 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.treatment(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⎤⎦⎥
现在,如果从第1行和第2行中减去第3行,则变为(我将其称为: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)的系数进行比较;group1的系数到group3的系数;第2组与第3组的系数。或者,就像@ttnphns所说的:“我们随即看到系数,估计的常数将等于参考组中的Y均值;参数b1(即虚拟变量A1)将等于该差:组1中的Y均值减去Y是第3组的平均值;而参数b2是差异:第2组的平均值减去第3组的平均值。”H0:c⊤iβ=0
此外,观察到(遵循对比度的定义:可估计函数+行和= 0),向量和是对比度。而且,如果我们创建一个由constrasts组成的矩阵,我们将: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)组成,因此对我来说,将称为“对比度矩阵”( Monahan-“线性模型入门”也使用此术语。GG
但是,正如@ttnphns很好地解释的那样,软件将其他东西称为“对比度矩阵”,我找不到矩阵与SPSS内置命令/矩阵之间的直接关系(@ttnphns )或R(OP的问题),只有相似之处。但我相信,这里进行的精彩讨论/协商将有助于澄清此类概念和定义。G