当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R model.matrix 构建设计矩阵


R语言 model.matrix 位于 stats 包(package)。

说明

model.matrix 创建一个设计(或模型)矩阵,例如,通过将因子扩展到一组虚拟变量(取决于对比)并类似地扩展交互。

用法

model.matrix(object, ...)

## Default S3 method:
model.matrix(object, data = environment(object),
             contrasts.arg = NULL, xlev = NULL, ...)
## S3 method for class 'lm'
model.matrix(object, ...)

参数

object

适当类的对象。对于默认方法,模型 formulaterms 对象。

data

使用 model.frame 创建的 DataFrame 。如果是另一种对象,则首先调用model.frame

contrasts.arg

一个列表,其条目是用作 contrasts 替换函数的替换值的值(数字矩阵、function 或命名函数的字符串),其名称是 data 中包含 factor 的列的名称s。

xlev

如果 data 导致 model.frame 被调用,则用作 model.frame 的参数。

...

传入或传出其他方法的进一步参数。

细节

model.matrix 根据 terms(object) 中给出的说明创建一个设计矩阵,使用 data 中的数据,该矩阵必须提供与调用 model.frame(object) 创建的变量同名,或者更准确地说,通过评估 attr(terms(object), "variables") 。如果data是一个 DataFrame ,可能还有其他列,列的顺序并不重要。任何字符变量都被强制为因子。强制转换后,公式右侧使用的所有变量都必须是逻辑、整数、数字或因子。

如果contrasts.arg为一个因子指定它会覆盖该变量的默认因子编码以及任何"contrasts"属性设置为C或者contrasts。而无效contrasts.args 总是被忽略,从那时起他们就被警告R版本3.6.0。

在交互作用项中,水平变化最快的变量是第一个出现在公式中(而不是项中)的变量,因此在 ~ a + b + b:a 中,交互作用将使 a 变化最快。

按照惯例,如果响应变量也出现在公式的右侧,则该变量将被删除(并带有警告),但涉及该项的交互作用将被保留。

具有指定公式和数据的 regression-like 模型的设计矩阵。

有一个属性 "assign" ,它是一个整数向量,矩阵中的每一列都有一个条目,给出了产生该列的公式中的项。值 0 对应于截距(如果有),正值对应于与 object 对应的 terms 结构的 term.labels 属性给出的顺序中的项。

如果模型中存在任何因子,则会有一个属性 "contrasts" ,这是一个命名列表,其中每个因子都有一个条目。这指定了将在通过对比对因子进行编码的术语中使用的对比(在某些术语中可以使用虚拟编码),作为命名函数的字符向量或数字矩阵。

例子

ff <- log(Volume) ~ log(Height) + log(Girth)
utils::str(m <- model.frame(ff, trees))
mat <- model.matrix(ff, m)

dd <- data.frame(a = gl(3,4), b = gl(4,1,12)) # balanced 2-way
options("contrasts") # typically 'treatment' (for unordered factors)
model.matrix(~ a + b, dd)
model.matrix(~ a + b, dd, contrasts.arg = list(a = "contr.sum"))
model.matrix(~ a + b, dd, contrasts.arg = list(a = "contr.sum", b = contr.poly))
m.orth <- model.matrix(~a+b, dd, contrasts.arg = list(a = "contr.helmert"))
crossprod(m.orth) # m.orth is  ALMOST  orthogonal
# invalid contrasts.. ignored with a warning:
stopifnot(identical(
   model.matrix(~ a + b, dd),
   model.matrix(~ a + b, dd, contrasts.arg = "contr.FOO")))

参考

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

也可以看看

model.frame , model.extract , terms

sparse.model.matrix 来自包 Matrix ,用于创建稀疏模型矩阵,这在大维度上可能更有效。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Construct Design Matrices。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。