step_window()
创建配方步骤的规范,该步骤将创建新列,这些新列是跨移动窗口计算统计数据的函数的结果。
用法
step_window(
recipe,
...,
role = NA,
trained = FALSE,
size = 3,
na_rm = TRUE,
statistic = "mean",
columns = NULL,
names = NULL,
keep_original_cols = TRUE,
skip = FALSE,
id = rand_id("window")
)
参数
- recipe
-
一个菜谱对象。该步骤将添加到此配方的操作序列中。
- ...
-
一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅
selections()
。 - role
-
对于此步骤创建的模型项,应为其分配什么分析角色?如果
names
保留为NULL
,则滚动统计信息将替换原始列,并且角色保持不变。如果设置了names
,则这些新列将具有NULL
的角色,除非此参数具有值。 - trained
-
指示预处理数量是否已估计的逻辑。
- size
-
窗口大小的奇数整数
>= 3
。 - na_rm
-
是否应从每个窗口内的计算中删除缺失值的逻辑。
- statistic
-
应该为每个移动窗口计算的统计类型的字符串。可能的值为:
'max'
,'mean'
,'median'
,'min'
,'prod'
,'sd'
,'sum'
,'var'
- columns
-
所选变量名称的字符串。该字段是一个占位符,一旦使用
prep()
就会被填充。 - names
-
可选字符串,其长度与
terms
选择的术语数相同。如果您不确定将选择哪些列,请使用summary
函数(请参见下面的示例)。这些将是该步骤创建的新列的名称。 - keep_original_cols
-
将原始变量保留在输出中的逻辑。默认为
FALSE
。 - skip
-
一个合乎逻辑的。当
bake()
烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在prep()
运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE
时应小心,因为它可能会影响后续操作的计算。 - id
-
该步骤特有的字符串,用于标识它。
细节
计算使用一种有点非典型的方法来处理滚动统计的开始和结束部分。该过程从中心对齐窗口计算开始,并且滚动值的开始和结束部分分别使用第一个和最后一个滚动值来确定。例如,如果具有 12 个值的列 x
使用 5 点移动中值进行平滑,则前三个平滑值由 median(x[1:5])
估计,第四个使用 median(x[2:6])
。
如果指定了 names
,keep_original_cols
也适用于此步骤。
步骤将停止并显示有关安装包的注释。
整理
当您执行 tidy()
此步骤时,将返回一个包含 terms
(选择的选择器或变量)、statistic
(汇总函数名称)和 size
列的 tibble。
例子
if (FALSE) { # rlang::is_installed(c("RcppML", "ggplot2"))
library(recipes)
library(dplyr)
library(rlang)
library(ggplot2, quietly = TRUE)
set.seed(5522)
sim_dat <- data.frame(x1 = (20:100) / 10)
n <- nrow(sim_dat)
sim_dat$y1 <- sin(sim_dat$x1) + rnorm(n, sd = 0.1)
sim_dat$y2 <- cos(sim_dat$x1) + rnorm(n, sd = 0.1)
sim_dat$x2 <- runif(n)
sim_dat$x3 <- rnorm(n)
rec <- recipe(y1 + y2 ~ x1 + x2 + x3, data = sim_dat) %>%
step_window(starts_with("y"),
size = 7, statistic = "median",
names = paste0("med_7pt_", 1:2),
role = "outcome"
) %>%
step_window(starts_with("y"),
names = paste0("mean_3pt_", 1:2),
role = "outcome"
)
rec <- prep(rec, training = sim_dat)
smoothed_dat <- bake(rec, sim_dat, everything())
ggplot(data = sim_dat, aes(x = x1, y = y1)) +
geom_point() +
geom_line(data = smoothed_dat, aes(y = med_7pt_1)) +
geom_line(data = smoothed_dat, aes(y = mean_3pt_1), col = "red") +
theme_bw()
tidy(rec, number = 1)
tidy(rec, number = 2)
# If you want to replace the selected variables with the rolling statistic
# don't set `names`
sim_dat$original <- sim_dat$y1
rec <- recipe(y1 + y2 + original ~ x1 + x2 + x3, data = sim_dat) %>%
step_window(starts_with("y"))
rec <- prep(rec, training = sim_dat)
smoothed_dat <- bake(rec, sim_dat, everything())
ggplot(smoothed_dat, aes(x = original, y = y1)) +
geom_point() +
theme_bw()
}
相关用法
- R recipes step_unknown 将缺失的类别分配给“未知”
- R recipes step_relu 应用(平滑)修正线性变换
- R recipes step_poly_bernstein 广义伯恩斯坦多项式基
- R recipes step_impute_knn 通过 k 最近邻进行插补
- R recipes step_impute_mean 使用平均值估算数值数据
- R recipes step_inverse 逆变换
- R recipes step_pls 偏最小二乘特征提取
- R recipes step_ratio 比率变量创建
- R recipes step_geodist 两个地点之间的距离
- R recipes step_nzv 近零方差滤波器
- R recipes step_nnmf 非负矩阵分解信号提取
- R recipes step_normalize 中心和比例数值数据
- R recipes step_depth 数据深度
- R recipes step_other 折叠一些分类级别
- R recipes step_harmonic 添加正弦和余弦项以进行谐波分析
- R recipes step_corr 高相关滤波器
- R recipes step_novel 新因子水平的简单赋值
- R recipes step_select 使用 dplyr 选择变量
- R recipes step_regex 检测正则表达式
- R recipes step_spline_b 基础样条
- R recipes step_ica ICA 信号提取
- R recipes step_discretize 离散数值变量
- R recipes step_dummy_multi_choice 一起处理多个预测变量的水平
- R recipes step_lincomb 线性组合滤波器
- R recipes step_filter_missing 缺失值列过滤器
注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Moving Window Functions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。