设计矩阵
在统计学中,一个设计矩阵(design matrix)也被称为模型矩阵(model matrix)或回归矩阵(regressor matrix),它是一系列解释变量(explanatory variable)值的矩阵,通常命名为X。每行代表一个独立的观测对象,每列代表这个对象相应的变量。一些统计模型中常常会用到设计矩阵,例如广义线性模型(generalized linear models)。这种模型中通常会包含一些哑变量(例如0或1),这些哑变量用于区分不同的分组。设计矩阵的数据是一些解释变量的数据,解释变量用于解释应变量。
设计矩阵举例
在一个设计矩阵$X$中,$X_{ij}$表示矩阵$X$矩阵中第$j$列,第$i$行的一个变量值,在回归模型中,它可以写为$y=X\beta$这样的形式,其中$X$就是一个设计矩阵,$\beta$就是一个模型系数的向量,而$y$就是预测值的一个向量。我的理解就是,这个向量含有n值的组合,如果是简单线性回归,那么这个向量就是一个值,如果是多元线性回归,那么这个$\beta$就是多个值组成一个向量,在此,多元线性回归与简单线性回归在本质上是一样的。
一个$n \times p$的矩阵指的就是n个观测样本,p个变量(也可以理解为特征),如下所示:
|
|
在上面的这个矩阵里,n就是2,6就是p,这个矩阵就是$2\times6$矩阵。而在统计学中,当用设计矩阵(我觉得这样命名,主要是因为这个矩阵是与实验设计有关的)来表示一个实验时,这个n值就是在一个实验中的不同的重复。而列则表示一个样本中要检测的不同变量。例如当我们进行一个问卷调查时,问了10个人4个问题,那么最终在处理数据时,用设计矩阵来表示就是$10 \times 4$矩阵,这个10表示10个人,4表示4个问题,如果用i表示行(一共有10行),j表示列(一共有4列),那么这个矩阵中的某个值就可以看作是我问了第i个人的第j个问题。
再来看一个案例,这个案例是简单线性回归模型。在这个简单线性回归模型中,它的解释变量只有1个,也就是说,用设计矩阵来表示时,它只有1列,我们先假设它有7行,也就是i=7,用公式来表示这个简单线性模型就是下面的这个样子:
其中$\beta_{0}$表示上面这个方程在y轴上的截矩,而$\beta_{1}$表示斜率,上面的这个方程用设计矩阵来表示就是下面的这个样子:
再来看一个多元线性回归的案例,它有两个协变量,分别为w和x,假设我们有7个观测值,用方程来表示这个多元线性回归就是如下所示:
用设计矩阵来表示就是下面的这个样子:
这个矩阵就是一个$7\times 3$矩阵。
来看one-way ANOVA的案例。在这个案例中,我们有3个实验组,7个观测值。其中前3个观测值属于1组,第4和第5这两个观测值属于1组,第6和第7这两个观测值属于一组,那么这个模型可以写为下面的公式:
用设计矩阵来表示就是下面的这个样子:
其中$\mu_{i}$表示第$i$组的均值。
ANOVA模型通常可以写为每组的参数$\tau_{i}$与某些参考值的差值。通常这个参考值指提某个组的组。这样在多组进行比较时,例如多个实验组与一个对照组比较时就比较方便。在下面的案例中,我们选择group 1作为参考组,那么上面的这个公式就可以写为下面的这个样子:
如果写为设计矩阵,就是下面的这个样子:
在这个模型中,$\mu$是参考组的均值,而$\tau_{i}$则是group i与参考组的差值,上面的矩阵中不含有$\tau_{1}$是因为它与参考组的差值为0。
当我们使用R中的lm
或aov
或glm
来进行线性描述时,就需要从formula
和data
参数中来创建一个模型矩阵。
看一个R中的简单线性回归的矩阵,如下所示:
|
|
我们还可以从一个formula
和data
中直接创建一个模型矩阵,如下所示:
|
|
在上面的这个公式中,~
只有右边的变量,没有左边的变量,因为我们并不需要应变量来研究模型矩阵。双边公式(a two-sided formula)也可以写为单边公式,
再看一个单因素方差分析模型,如下所示:
|
|
线性回归的截矩
在R中,formula是一个符号表达式对象,它表示的一个或多个自变量(右边)与应变量(左边)的关系,在经典回归或ANOVA中,lm()
函数能够闺怨一个formula对象转化为一个设计矩阵X和一个系数向量B,然后通过一定的统计学方法得到向量B的最佳估计。通常公式中的每项都会被转换为X上的一个或多个列。而model.matrix()
函数则能将参数转换为设计矩阵X。看一个案例,如下所示:
|
|
其中Fuel
是一个应变量,Weight
和Displacement
是自变量。这个公式的拟合过程就是找到下面统计模型的参数,如下所示:
$Fuel = \alpha + \beta_{1}Weight + \beta_{2}Displacement + \epsilon$
需要注意的是,这个公式并没有明确地包含α或ε,但是这个截矩在上面的公式中已经隐含了,如果我们添加了1
,那么就明确表示截矩存在,如下所示:
|
|
如果我们要拟合的线性模型中不含截矩,那么此时要添加上0,或者是-1
,如下所示:
|
|