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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。