回归的 Box Cox 变换

机器算法验证 r 回归 方差 数据转换
2022-03-20 14:36:26

我正在尝试仅使用一个预测变量(例如(x,y))在某些数据上拟合线性模型。数据是这样的,对于较小的 x 值,y 值与直线紧密拟合,但是随着 x 值的增加,y 值变得更加不稳定。这是此类数据的示例(R代码)

    y = c(3.2, 3.4, 3.5, 3.8, 4.2, 5.5, 4.5, 6.8, 7.4, 5.9)
    x = seq(1,10,1)

我很想知道是否存在任何功率变换(也许是 Box cox?),它可以让我更好地拟合数据,而不是简单地进行如下所示的线性拟合。

    fit = lm(y ~ x)
3个回答

你的 R 自带的 MASS 包已经安装好了,有boxcox()你可以使用的功能: 读入数据后,做:

    library(MASS)
    boxcox(y ~ x)

然后查看生成的图表,它以图形方式显示了 boxcox 变换参数的 95% 置信区间。但是您实际上没有足够的数据(n = 10)来执行此操作,生成的置信区间几乎从 -2 变为 2!,最大似然估计约为 0(如前所述,对数变换)。如果你的真实数据有更多的观察,你应该试试这个。

正如其他人所说,这种转换实际上是在试图稳定方差。从理论上看,这并不是很明显,它的作用是尝试最大化基于正态分布的似然函数,该函数假设方差不变。人们可能会认为最大化基于正态的似然性会尝试对残差的分布进行归一化,但实际上对最大化似然性的主要贡献来自于稳定方差。这可能并不令人惊讶,因为我们最大化的可能性是基于恒定方差正态分布族!

我曾经在 XLispStat 中写过一个基于滑块的演示,它清楚地展示了这一点!

当您具有线性关系但方差不相等时,通常需要转换 x 和 y 以获得具有相等方差的线性关系(或仅对未转换的变量使用加权最小二乘回归)。

AVAS 程序可用于建议可能的转换。

好吧,在 R 中你可以试试这个:

library(MASS)
boxcox(y~x)
plot(1/y^2~x) # since the profile likelihood has a maximum near 2

在此处输入图像描述

但这实际上取决于您所说的“更适合数据”是什么意思