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


R recipes step_BoxCox 非负数据的 Box-Cox 变换


step_BoxCox() 创建配方步骤的规范,该步骤将使用 Box-Cox 转换来转换数据。

用法

step_BoxCox(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  lambdas = NULL,
  limits = c(-5, 5),
  num_unique = 5,
  skip = FALSE,
  id = rand_id("BoxCox")
)

参数

recipe

一个菜谱对象。该步骤将添加到此配方的操作序列中。

...

一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅selections()

role

由于没有创建新变量,因此此步骤未使用。

trained

指示预处理数量是否已估计的逻辑。

lambdas

变换值的数值向量。在由 prep() 计算之前,这是 NULL

limits

长度为 2 的数值向量,定义计算变换参数 lambda 的范围。

num_unique

一个整数,用于指定评估转换所需的最小唯一值。

skip

一个合乎逻辑的。当bake() 烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在 prep() 运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE时应小心,因为它可能会影响后续操作的计算。

id

该步骤特有的字符串,用于标识它。

recipe 的更新版本,将新步骤添加到任何现有操作的序列中。

细节

Box-Cox 变换需要严格为正的变量,可用于重新调整变量以使其更类似于正态分布。在此包中,部分对数似然函数在一组合理的变换值(可由用户更改)内直接优化。

这种转换通常是使用统计模型(例如普通最小二乘法)的残差对结果变量进行的。这里,使用简单的空模型(仅截距)将变换单独应用于预测变量。这可以使变量分布更加对称。

如果估计变换参数非常接近边界,或者优化失败,则使用值 NA 并且不应用变换。

整理

当您 tidy() 此步骤时,将返回包含列 terms(选择的选择器或变量)和 value(lambda 估计值)的 tibble。

箱重

底层操作不允许使用案例权重。

参考

萨基亚,R.M. (1992)。 Box-Cox 转换技术:回顾。统计学家,169-178..

也可以看看

例子


rec <- recipe(~., data = as.data.frame(state.x77))

bc_trans <- step_BoxCox(rec, all_numeric())

bc_estimates <- prep(bc_trans, training = as.data.frame(state.x77))
#> Warning: Non-positive values in selected variable.
#> Warning: No Box-Cox transformation could be estimated for: `Frost`

bc_data <- bake(bc_estimates, as.data.frame(state.x77))

plot(density(state.x77[, "Illiteracy"]), main = "before")

plot(density(bc_data$Illiteracy), main = "after")


tidy(bc_trans, number = 1)
#> # A tibble: 1 × 3
#>   terms         value id          
#>   <chr>         <dbl> <chr>       
#> 1 all_numeric()    NA BoxCox_0O2vM
tidy(bc_estimates, number = 1)
#> # A tibble: 7 × 3
#>   terms          value id          
#>   <chr>          <dbl> <chr>       
#> 1 Population  0.000966 BoxCox_0O2vM
#> 2 Income      0.524    BoxCox_0O2vM
#> 3 Illiteracy -0.379    BoxCox_0O2vM
#> 4 Life Exp    4.59     BoxCox_0O2vM
#> 5 Murder      0.606    BoxCox_0O2vM
#> 6 HS Grad     1.92     BoxCox_0O2vM
#> 7 Area        0.250    BoxCox_0O2vM
源代码:R/BoxCox.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Box-Cox Transformation for Non-Negative Data。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。