←
PDF 385 / 520 Categorical Variables
→
English · PDF 385
Original PDF page 385
中文 · PDF 385

) model_matrix(df, y ~ x1) #> # 一个 tibble:2 × 2 #> (Intercept) x1 #> #> 1 1 2 #> 2 1 1

R 向模型添加截距的方式,只是通过增加一列全为 1 的数值来实现。默认情况下,R 总是会添加这一列。如果你不想要这一列,需要用 -1 显式地将其去掉:

model_matrix(df, y ~ x1 - 1) #> # 一个 tibble:2 × 1 #> x1 #> #> 1 2 #> 2 1

当你向模型中添加更多变量时,模型矩阵会以毫不意外的方式增长:

model_matrix(df, y ~ x1 + x2) #> # 一个 tibble:2 × 3 #> (Intercept) x1 x2 #> #> 1 1 2 5 #> 2 1 1 6

这种公式表示法有时被称为“Wilkinson-Rogers 表示法”,最初由 G. N. Wilkinson 和 C. E. Rogers 在 方差分析因子模型的符号描述 Models for Analysis of Variance 一文中提出。如果你想了解建模代数的全部细节,值得找来阅读这篇原始论文。

接下来的几节将详细说明这种公式表示法如何处理分类变量、交互作用和变换。

分类变量

当预测变量是连续型时,从公式生成函数非常简单,但当预测变量是分类型时,事情就变得有点复杂了。假设你有一个类似 y ~ sex 的公式,其中 sex 可以是 male 或 female。把它转换成形如 y = x_0 + x_1 * sex 的公式是没有意义的,因为 sex 不是数字——你不能对它进行乘法运算!相反,R 会将其转换为 y = x_0 + x_1 * sex_male,其中当 sex 为 male 时 sex_male 为 1,否则为 0: