model_matrix()
是 stats::model.matrix()
的更严格版本。值得注意的是,model_matrix()
永远不会删除行,结果将是一个 tibble。
参数
- 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 hardhat model_offset 提取模型偏移
- R hardhat model_frame 构建模型框架
- R hardhat mold 用于建模的模具数据
- R hardhat validate_prediction_size 确保预测具有正确的行数
- R hardhat default_recipe_blueprint 默认配方蓝图
- R hardhat is_blueprint x 是预处理蓝图吗?
- R hardhat validate_column_names 确保数据包含所需的列名
- R hardhat default_formula_blueprint 默认公式蓝图
- R hardhat update_blueprint 更新预处理蓝图
- R hardhat weighted_table 加权表
- R hardhat validate_outcomes_are_univariate 确保结果是单变量
- R hardhat get_levels 从 DataFrame 中提取因子水平
- R hardhat add_intercept_column 向数据添加截距列
- R hardhat is_frequency_weights x 是频率权重向量吗?
- R hardhat standardize 标准化结果
- R hardhat is_importance_weights x 是重要性权重向量吗?
- R hardhat run-mold 根据蓝图 Mold()
- R hardhat get_data_classes 从 DataFrame 或矩阵中提取数据类
- R hardhat fct_encode_one_hot 将一个因子编码为 one-hot 指标矩阵
- R hardhat new_frequency_weights 构建频率权重向量
- R hardhat validate_no_formula_duplication 确保公式中不出现重复项
- R hardhat default_xy_blueprint 默认 XY 蓝图
- R hardhat shrink 仅对所需列进行子集化
- R hardhat validate_outcomes_are_numeric 确保结果都是数字
- R hardhat scream ? 尖叫。
注:本文由纯净天空筛选整理自Davis Vaughan等大神的英文原创作品 Construct a design matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。