當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R recipes step_impute_roll 使用滾動窗口統計估算數值數據


step_impute_roll() 創建配方步驟的規範,該步驟將通過移動窗口內的位置測量(例如中位數)來替換數值變量的缺失值。

用法

step_impute_roll(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  columns = NULL,
  statistic = median,
  window = 5,
  skip = FALSE,
  id = rand_id("impute_roll")
)

step_rollimpute(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  columns = NULL,
  statistic = median,
  window = 5,
  skip = FALSE,
  id = rand_id("impute_roll")
)

參數

recipe

一個菜譜對象。該步驟將添加到此配方的操作序列中。

...

一個或多個選擇器函數來選擇要估算的變量;這些列必須是非整數(即雙精度)。有關更多詳細信息,請參閱selections()

role

由於沒有創建新變量,因此此步驟未使用。

trained

指示預處理數量是否已估計的邏輯。

columns

所選變量名稱的字符串。該字段是一個占位符,一旦使用 prep() 就會被填充。

statistic

具有單個數據參數的函數,用於計算估算值。隻有完整的值才會傳遞給函數,並且它應該返回雙精度值。

window

要估算的點周圍的窗口大小。應該是大於 1 的奇數。有關本係列末尾要點的討論,請參閱下麵的詳細信息。

skip

一個合乎邏輯的。當bake() 烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在 prep() 運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE時應小心,因為它可能會影響後續操作的計算。

id

該步驟特有的字符串,用於標識它。

recipe 的更新版本,將新步驟添加到任何現有操作的序列中。

細節

在尾部,窗口向兩端移動。例如,對於 5 點窗口,前四個點的窗口為 1:51:51:5 ,然後是 2:6

當窗口中存在缺失數據時,它們不會傳遞給函數。如果窗口中的所有數據均缺失,則返回缺失值。

統計數據是根據插補之前的訓練集值計算的。這意味著,如果窗口內的先前數據丟失,則它們的估算值不會包含在用於插補的窗口數據中。換句話說,每個插補對當前點之前的係列中的先前插補一無所知。

recipes 0.1.16 開始,該函數名稱從 step_rollimpute() 更改為 step_impute_roll()

整理

當您 tidy() 這一步時,將返回一個包含列 terms(選擇的選擇器或變量)和 window(窗口大小)的 tibble。

調整參數

此步驟有 2 個調整參數:

  • statistic:滾動匯總統計(類型:字符,默認值:中位數)

  • window :窗口大小(類型:整數,默認值:5)

箱重

底層操作不允許使用案例權重。

也可以看看

例子

library(lubridate)

set.seed(145)
example_data <-
  data.frame(
    day = ymd("2012-06-07") + days(1:12),
    x1 = round(runif(12), 2),
    x2 = round(runif(12), 2),
    x3 = round(runif(12), 2)
  )
example_data$x1[c(1, 5, 6)] <- NA
example_data$x2[c(1:4, 10)] <- NA

library(recipes)
seven_pt <- recipe(~., data = example_data) %>%
  update_role(day, new_role = "time_index") %>%
  step_impute_roll(all_numeric_predictors(), window = 7) %>%
  prep(training = example_data)

# The training set:
bake(seven_pt, new_data = NULL)
#> # A tibble: 12 × 4
#>    day           x1    x2    x3
#>    <date>     <dbl> <dbl> <dbl>
#>  1 2012-06-08  0.89 0.79   0.58
#>  2 2012-06-09  0.53 0.79   0.45
#>  3 2012-06-10  0.86 0.79   0.67
#>  4 2012-06-11  0.92 0.79   0.05
#>  5 2012-06-12  0.86 0.88   0.27
#>  6 2012-06-13  0.86 0.6    0.13
#>  7 2012-06-14  0.97 0.79   0.67
#>  8 2012-06-15  0.85 0.27   0.16
#>  9 2012-06-16  0.86 0.11   0.36
#> 10 2012-06-17  0.96 0.435  0.09
#> 11 2012-06-18  0.91 0.16   0.76
#> 12 2012-06-19  0.07 0.86   0.74
源代碼:R/impute_roll.R

相關用法


注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Impute numeric data using a rolling window statistic。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。