如何选择最佳变换来实现线性?

机器算法验证 回归 数据转换
2022-03-22 11:32:07

我想做多元线性回归,然后用很少的外推来预测新值。我的响应变量在 -2 到 +7 的范围内,以及三个预测变量(范围约为 +10 - +200)。分布几乎是正常的。但是响应和预测变量之间的关系不是线性的,我在图上看到了曲线。例如像这样: http ://cs10418.userapi.com/u17020874/153949434/x_9898cf38.jpg

我想应用一个转换来实现线性。我尝试通过检查不同的函数并查看结果图来转换响应变量,以查看响应和预测变量之间的线性关系。我发现有很多函数可以给我可见的线性关系。例如,函数

t1=log(y+2.5)

t2=1log(y+5)

t3=1y+5

t4=1(y+10)3

t5=1(y+3)13等给出类似的结果: http ://cs10418.userapi.com/u17020874/153949434/x_06f13dbf.jpg

在我要将预测值(对于等等)。分布或多或少类似于正态分布。t=1(y+10)3y=1t1310

如何为我的数据选择最佳转换?是否有一种定量(而且不是很复杂)的方法来评估线性度?证明选择的转换是最好的,或者如果可能的话自动找到它。

还是唯一的方法是进行非线性多元回归?

2个回答

这在某种程度上是一门艺术,但是人们总是可以尝试一些标准的、直截了当的事情。

首先要做的是重新表达因变量()以使残差正常。这在此示例中并不真正适用,其中点似乎沿着平滑的非线性曲线下降,几乎没有分散。所以我们进行下一步。y

接下来是重新表达自变量()以使关系线性化。有一种简单易行的方法可以做到这一点。沿曲线选取三个代表点,最好在两端和中间。从第一个图中,我读出了有序对 = 10,7) 、似乎总是为正之外,没有任何信息,一个不错的选择是探索Box-Cox 变换的各种幂,通常选择为的倍数或,通常介于r(r,y)(10,7)(90,0)(180,2)r r(rp1)/pp1/21/31接近时的极限值。)如果前两个点之间的斜率等于第二对点之间的斜率,这个变换将创建一个近似的线性关系。1p0log(r)

例如,未转换数据的斜率是 = - =这些是完全不同的:一个大约是另一个的四倍。尝试给出等,结果为:现在其中一个只有另一个的两倍,这是一个改进。以这种方式继续(电子表格很方便),我发现效果很好:斜率现在是(07)/(9010)0.088(20)/(18090)0.022p=1/2(07)/(901/211/2101/211/2)16.632.4p07.36.6,几乎相同的值。因此,您应该尝试形式的模型。然后重复:拟合一条线,检查残差,确定的变换以使它们近似对称,然后迭代。y=α+βlog(r)y

John Tukey 在他的经典著作Exploratory Data Analysis (Addison-Wesley, 1977) 中提供了详细信息和许多示例。他给出了类似(但稍微复杂一些)的程序来识别的方差稳定变换。他作为练习提供的一个样本数据集涉及在不同温度下测量的关于汞蒸气压力的百年历史数据。遵循这一过程可以重新发现克劳修斯-克拉佩龙关系最终拟合的残差可以用原子距离发生的量子力学效应来解释!y

如果原始尺度上的响应变量(或者更确切地说,将成为响应变量的残差)具有您所暗示的正态分布,那么将其转换为与其他变量建立线性关系将意味着它不再是正态分布它还会改变其方差和平均值之间的关系。因此,从您描述的那部分来看,我认为您最好使用非线性回归而不是转换响应。否则,在响应的线性变换之后,您将需要一个更复杂的错误结构(尽管这可能是一个判断问题,您需要使用图形方法进行检查)。

或者,研究解释变量的转换。除了直接变换,您还可以选择添加二次项。

更一般地说,如果没有现有的理论来建议您应该使用什么作为转化的基础,那么转化更像是一门艺术而不是科学。