Box-Cox变换

  • 定义:一种广义幂变换方法,是统计建模中常用的一种数据变换

  • 目的

    • 用于连续变量不满足正态分布的情况
    • Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性
    • 改善数据的正态性、对称性和方差相等性,但方差齐性的问题不一定会消失,做过之后仍然需要做方差齐性的检验,看是否还需要采用其他方法
  • 公式
    y ( λ ) = { y λ − 1 λ λ ≠ 0 ln ⁡ ( y ) λ = 0 y(\lambda) = \begin{cases} \frac{y^{\lambda} - 1}{\lambda} & \lambda \neq 0 \\ \ln(y) & \lambda = 0 \end{cases} y(λ)={λyλ1ln(y)λ=0λ=0

    • 条件
      • y y y为连续变量
      • y ≥ 0 y \ge 0 y0。当 y < 0 y \lt 0 y<0时,对原始数据同加一个常数 a a a,使得 y + a ≥ 0 y + a \ge 0 y+a0
    • 特殊情况
      • λ = 0 \lambda = 0 λ=0:对数变换
      • λ = − 1 \lambda = -1 λ=1:倒数变换
      • λ = 0.5 \lambda = 0.5 λ=0.5:平方根变换
    • 参数 λ \lambda λ的估计方法
      • 最大似然估计
      • Bayes方法
    • 逆公式
      y = { ( 1 + λ × y λ ) 1 λ λ ≠ 0 e y λ λ = 0 y = \begin{cases} (1 + \lambda \times y^{\lambda})^{\frac{1}{\lambda}} & \lambda \neq 0 \\ e^{y^{\lambda}} & \lambda = 0 \end{cases} y={(1+λ×yλ)λ1eyλλ=0λ=0
  • 其它的转换方法

  • 代码

    • R
      • λ \lambda λ参数估计
        • lam <- powerTransform(formula)
        • boxcox(lm_model, lambda=seq(0, 1, by=0.1))
      • 变换
        • y_new <- bcPower(y, lam$lambda)
        • Ylam<- (Y^lambda-1)/lambda
        • lm_model<-lm(Ylam~X)
    • Python:scipy.stats.boxcox
      • 官方文档API
      • 输入
        • x
        • lmbda:default None。box-cox转换的 λ \lambda λ参数。若为None,则使用最大似然估计获取最佳值(第二个返回参数)
        • alpha:default None。若为None,则不返回第三个参数,否则按100 * (1-alpha)%来返回box-cox转换的 λ \lambda λ参数的置信区间
      • 输出
        • boxcox:转换后的值
        • maxlog:第二个参数:box-cox转换的 λ \lambda λ参数
        • (min_ci, max_ci):第三个参数: λ \lambda λ的置信区间
  • Reference

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值