我们至少要知道模型公式是如何指定模型矩阵的列项的。 对于连续变量这是比较简单的,因为每一个变量对应于 模型矩阵的一个列(如果模型中包含截距, 会在矩阵中列出这一列的)。
对于一个 k-水平的因子 A 该如何处理呢?无序和有序因子的
结论是不一样的。对于无序因子 k -
1 列用于作为因子第二,...,
第 k 水平的指标(因此隐含的参数就是
其他水平和第一个水平的响应程度的比较)。对于
有序因子,k - 1 列是
在 1, ..., k 上的正交项,并且忽略常数项。
尽管这里的回答有点复杂,但这不是事情的全部。
首先在含有一个因子项的模型中忽略截距项,
这一项将会被编入指示所有因子水平的 k 列中。
其次整个行为可以通过
options 设置参数 contrasts 而改变。
R 的默认设置为
options(contrasts = c("contr.treatment", "contr.poly"))
提这些内容的主要原因是 R 和 S 对无序因子 采用不同的默认值。S采用 Helmert 对照。因此,当你需要比较某本书上或者论文上用 S-Plus 写的代码,你必须设置
options(contrasts = c("contr.helmert", "contr.poly"))
这是一个经过认真考虑的改变。因为处理对照(treatment contrast)(R默认) 对于新手是比较容易理解的。
这还没有结束,因为在各个模型的各个项中对照方式可以用
函数 contrasts 和 C
重新设置。
我们还没有考虑交互作用项:这将会产生
各分量项的复合项。
尽管细节是复杂的,R 里面的模型公式 可以产生统计专家所期望的各种模型1。 例如,利用关联项而非主要效应的模型拟合 常常会产生令人惊讶的结果, 不过这些仅仅为统计专家们设计的。