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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。