model_frame()
是 stats::model.frame()
的更严格版本。有许多差异,主要是行永远不会被删除,并且返回值是一个列表,其中框架和术语分为两个不同的对象。
细节
下面解释了与 stats::model.frame()
相比一些参数差异的基本原理:
-
subset
:不允许,因为model_frame()
运行之前和之后的行数应始终相同。 -
na.action
:不允许并强制为"na.pass"
,因为model_frame()
运行之前和之后的行数应始终相同。 -
drop.unused.levels
:不允许,因为data
和model_frame()
的结果似乎不一致,永远具有相同的因子列但具有不同的级别,除非通过original_levels
指定。如果需要的话,应该通过配方步骤显式地完成。 -
xlev
:不允许,因为此检查应该提前完成。如果需要,请使用scream()
根据训练集检查data
的完整性。 -
...
:未公开,因为偏移量是单独处理的,并且不再需要在此处传递权重,因为行永远不会被删除(因此权重不必与设计矩阵的其余部分一起作为子集)。如果需要其他非预测列,请使用配方的 "roles" 函数。
始终将 model_frame()
的结果与 model_matrix()
而不是 stats::model.matrix()
一起使用非常重要,因为 model_frame()
结果中的 tibble 没有附加术语对象。如果直接调用model.matrix(<terms>, <tibble>)
,则会自动调用model.frame()
,这可能会给出错误的结果。
例子
# ---------------------------------------------------------------------------
# Example usage
framed <- model_frame(Species ~ Sepal.Width, iris)
framed$data
#> # A tibble: 150 × 2
#> Species Sepal.Width
#> <fct> <dbl>
#> 1 setosa 3.5
#> 2 setosa 3
#> 3 setosa 3.2
#> 4 setosa 3.1
#> 5 setosa 3.6
#> 6 setosa 3.9
#> 7 setosa 3.4
#> 8 setosa 3.4
#> 9 setosa 2.9
#> 10 setosa 3.1
#> # ℹ 140 more rows
framed$terms
#> Species ~ Sepal.Width
#> attr(,"variables")
#> list(Species, Sepal.Width)
#> attr(,"factors")
#> Sepal.Width
#> Species 0
#> Sepal.Width 1
#> attr(,"term.labels")
#> [1] "Sepal.Width"
#> attr(,"order")
#> [1] 1
#> attr(,"intercept")
#> [1] 1
#> attr(,"response")
#> [1] 1
#> attr(,".Environment")
#> <environment: 0x55c3a5f2ad30>
#> attr(,"predvars")
#> list(Species, Sepal.Width)
#> attr(,"dataClasses")
#> Species Sepal.Width
#> "factor" "numeric"
# ---------------------------------------------------------------------------
# Missing values never result in dropped rows
iris2 <- iris
iris2$Sepal.Width[1] <- NA
framed2 <- model_frame(Species ~ Sepal.Width, iris2)
head(framed2$data)
#> # A tibble: 6 × 2
#> Species Sepal.Width
#> <fct> <dbl>
#> 1 setosa NA
#> 2 setosa 3
#> 3 setosa 3.2
#> 4 setosa 3.1
#> 5 setosa 3.6
#> 6 setosa 3.9
nrow(framed2$data) == nrow(iris2)
#> [1] TRUE
相关用法
- R hardhat model_offset 提取模型偏移
- R hardhat model_matrix 构建设计矩阵
- 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 model frame。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。