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


R hardhat model_matrix 构建设计矩阵


model_matrix()stats::model.matrix() 的更严格版本。值得注意的是,model_matrix() 永远不会删除行,结果将是一个 tibble。

用法

model_matrix(terms, data)

参数

terms

用于构造模型矩阵的术语对象。这通常是从 model_frame() 的相应调用返回的术语对象。

data

用于构建设计矩阵的小标题。这通常是从相应的 model_frame() 调用返回的小标题。

包含设计矩阵的小标题。

细节

下面解释了与 stats::model.matrix() 相比一些参数差异的基本原理:

  • contrasts.arg :全局设置对比度参数 options("contrasts") ,或直接使用 stats::contrasts() 为感兴趣的因子分配对比度。请参阅示例部分。

  • xlev :不允许,因为 model.frame() 从未被调用,因此没有必要。

  • ... :不允许,因为 model.matrix() 的默认方法不使用它,而 lm 方法使用它来传递潜在的偏移量和权重,这在安全帽中的处理方式有所不同。

例子

# ---------------------------------------------------------------------------
# Example usage

framed <- model_frame(Sepal.Width ~ Species, iris)

model_matrix(framed$terms, framed$data)
#> # A tibble: 150 × 3
#>    `(Intercept)` Speciesversicolor Speciesvirginica
#>            <dbl>             <dbl>            <dbl>
#>  1             1                 0                0
#>  2             1                 0                0
#>  3             1                 0                0
#>  4             1                 0                0
#>  5             1                 0                0
#>  6             1                 0                0
#>  7             1                 0                0
#>  8             1                 0                0
#>  9             1                 0                0
#> 10             1                 0                0
#> # ℹ 140 more rows

# ---------------------------------------------------------------------------
# Missing values never result in dropped rows

iris2 <- iris
iris2$Species[1] <- NA

framed2 <- model_frame(Sepal.Width ~ Species, iris2)

model_matrix(framed2$terms, framed2$data)
#> # A tibble: 150 × 3
#>    `(Intercept)` Speciesversicolor Speciesvirginica
#>            <dbl>             <dbl>            <dbl>
#>  1             1                NA               NA
#>  2             1                 0                0
#>  3             1                 0                0
#>  4             1                 0                0
#>  5             1                 0                0
#>  6             1                 0                0
#>  7             1                 0                0
#>  8             1                 0                0
#>  9             1                 0                0
#> 10             1                 0                0
#> # ℹ 140 more rows

# ---------------------------------------------------------------------------
# Contrasts

# Default contrasts
y <- factor(c("a", "b"))
x <- data.frame(y = y)
framed <- model_frame(~y, x)

# Setting contrasts directly
y_with_contrast <- y
contrasts(y_with_contrast) <- contr.sum(2)
x2 <- data.frame(y = y_with_contrast)
framed2 <- model_frame(~y, x2)

# Compare!
model_matrix(framed$terms, framed$data)
#> # A tibble: 2 × 2
#>   `(Intercept)`    yb
#>           <dbl> <dbl>
#> 1             1     0
#> 2             1     1
model_matrix(framed2$terms, framed2$data)
#> # A tibble: 2 × 2
#>   `(Intercept)`    y1
#>           <dbl> <dbl>
#> 1             1     1
#> 2             1    -1

# Also, can set the contrasts globally
global_override <- c(unordered = "contr.sum", ordered = "contr.poly")

rlang::with_options(
  .expr = {
    model_matrix(framed$terms, framed$data)
  },
  contrasts = global_override
)
#> # A tibble: 2 × 2
#>   `(Intercept)`    y1
#>           <dbl> <dbl>
#> 1             1     1
#> 2             1    -1
源代码:R/model-matrix.R

相关用法


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