线性拟合3-戴明回归


上一篇是用正交回归算法来拟合直线。本文将正交回归一般化,当原始点的横纵坐标都有噪声和误差,并且噪声不同时,就可以考虑在目标函数中假如权值。这样看起来就像是斜投影,所以也可以说是优化的斜距离。

戴明回归

正交方法考虑的是自变量xx和因变量yy有相同方差的情况。但是更一般的,可能自变量和因变量的测量方式是不一样的,这样会造成两个方差的不同,因此应该给与不同的考虑。戴明回归就相当于求加权的正交回归,是正交回归向一般化方向的推导。
总结一下:

  • 最小二乘法优化的是竖直距离;
  • 正交回归优化的垂直距离;
  • 戴明回归优化的是斜距离。

对比如下图所示:

线性拟合3-戴明回归 线性拟合3-戴明回归 线性拟合3-戴明回归
最小二乘 正交回归 戴明回归

目标函数

假设ϵi\epsilon_iηi\eta_i都符合正态分布且相互独立,其方差分别为:sxx\bm{s}_{xx}syy\bm{s}_{yy}。定义方差比δ\delta为:
δ=syysxx \delta=\dfrac{\bm{s}_{yy}}{\bm{s}_{xx}}
在大部分情况下,测量一组数据的环境和方法基本是不变的,所以同一组数据的方差应该不会变化。在后面的计算中,我们都假设它们的方差为常值,所以它们的方差比δ\delta也为常值。
同样使用直线方程y=ax+by=ax+b来进行拟合。假设最后拟合直线的参数为a^\hat{a}b^\hat{b},则有:
y^i=a^x^i+b^ \hat{y}_i=\hat{a}\hat{x}_i+\hat{b}
目标函数可以写成:
J3=(ϵi2syy+ηi2sxx)=1syy((yiyi)2+δ(xixi)2) \bm{J}_3=\sum(\dfrac{\epsilon^2_i}{\bm{s}_{yy}}+\dfrac{\eta^2_i}{\bm{s}_{xx}})=\dfrac{1}{\bm{s}_{yy}}\sum((y_i-y^{\star}_i)^2+\delta(x_i-x^{\star}_i)^2)
因为syy\bm{s}_{yy}为常数,所以可以将目标函数写成:
J3=[(yiaxib)2+δ(xixi)2] \bm{J}_3=\sum[(y_i-ax^{\star}_i-b)^2+\delta(x_i-x^{\star}_i)^2]
所以最终目的是求aabbxix^{\star}_i的值,使得目标函数J3\bm{J}_3最小。

求解结果

为了求目标函数的最小值,应该将目标函数J3\bm{J}_3分别对xix_i^{\star}aabb求导。然后令三个式子等于0,应该就能解出三个参数的值。
推导过程有些复杂,如果感兴趣可以看文章最后的详细推导过程
这里直接写出求解结果:
{a^=syyδsxx+(syyδsxx)2+4δsxy22sxyb^=yˉa^xˉx^i=xi+a^a^2+δ(yib^a^xi) \left\{ \begin{aligned} &\hat{a} = \dfrac{\bm{s}_{yy}-\delta\bm{s}_{xx}+\sqrt{(\bm{s}_{yy}-\delta\bm{s}_{xx})^2+4\delta\bm{s}^2_{xy}}}{2\bm{s}_{xy}} \\ &\hat{b}=\bar{y}-\hat{a}\bar{x} \\ &\hat{x}_i=x_i+\dfrac{\hat{a}}{\hat{a}^2+\delta}(y_i-\hat{b}-\hat{a}x_i) \end{aligned} \right.
所以最后拟合曲线的斜率为a^\hat{a},与yy轴的截距为b^\hat{b},而且第ii个点的横坐标的估计值为x^i\hat{x}_i
其中sxx\bm{s}_{xx}syy\bm{s}_{yy}xxyy的样本方差,sxy\bm{s}_{xy}xxyy的协方差。

验证正交回归

因为戴明回归是正交回归的一般化推导,所以在特殊情况下,一般回归就变为正交回归,这个特殊情况就是方差比δ=1\delta=1
所以当δ=1\delta=1时,最后结果可以化简为:
{a2(sxy)+a(syy+sxx)sxy=0b=yˉaxˉ \left\{ \begin{aligned} &a^2(\bm{s}_{xy})+a(-\bm{s}_{yy}+\bm{s}_{xx})-\bm{s}_{xy}=0 \\ &b=\bar{y}-a\bar{x} \end{aligned} \right.
这与正交回归的结果一致。

附录:详细推导过程

xix_i^{\star}求导:

首先对xix_i^{\star}求导。因为是要求目标函数的最小值,应该是对任意ii,目标函数都取最小值,所以目标函数对xix_i^{\star}求导时,可以推导其中一个ii
J2ixi=xi[(yiaxib)2+δ(xixi)2]=2a(yiaxib)2δ(xixi)=2(ayi+a2xi+abδxi+δxi) \begin{aligned} \dfrac{\partial \bm{J}_2^i}{x_i^{\star}} &= \dfrac{\partial}{\partial x_i^{\star}}[(y_i-ax_i^{\star}-b)^2+\delta(x_i-x_i^{\star})^2] \\ &=-2a(y_i-ax_i^{\star}-b)-2\delta(x_i-x_i^{\star}) \\ &=2(-ay_i+a^2 x_i^{\star}+ab-\delta x_i+\delta x_i^{\star}) \end{aligned}
J2ixi=0\dfrac{\partial \bm{J}_2^i}{x_i^{\star}}=0,得:
ayi+a2xi+abδxi+δxi=0 -ay_i+a^2 x_i^{\star}+ab-\delta x_i+\delta x_i^{\star}=0
解得:
xi=ayi+δxiaba2+δ x_i^{\star}=\dfrac{ay_i+\delta x_i-ab}{a^2+\delta}

bb求导:

将目标函数J2\bm{J}_2bb求导:
J2b=b[(yiaxib)2+δ(xixi)2]=(2yi+2axi+2b) \begin{aligned} \dfrac{\partial \bm{J}_2}{\partial b}&=\dfrac{\partial}{\partial b}\sum[(y_i-ax^{\star}_i-b)^2+\delta(x_i-x^{\star}_i)^2] \\ &=\sum(-2y_i+2ax_i^{\star}+2b) \end{aligned}
J2b=0\dfrac{\partial \bm{J}_2}{\partial b}=0,得:
yi+axi+nb=0 -\sum y_i+a\sum x_i^{\star}+nb=0
解得:
b=1n(yiaxi) b=\dfrac{1}{n}\sum(y_i-ax_i^{\star})
将上面求得的xi=ayi+δxiaba2+δx_i^{\star}=\dfrac{ay_i+\delta x_i-ab}{a^2+\delta}带入,得:
b=1n(yiaxi)=1n(yiaayi+δxiaba2+δ)=1n(yiaayi+δxia2+δ+a2ba2+δ) \begin{aligned} b&=\dfrac{1}{n}\sum(y_i-ax_i^{\star}) \\ &=\dfrac{1}{n}\sum (y_i-a\dfrac{ay_i+\delta x_i -ab}{a^2+\delta}) \\ &=\dfrac{1}{n}\sum(y_i-a\dfrac{ay_i+\delta x_i}{a^2+\delta}+\dfrac{a^2b}{a^2+\delta}) \end{aligned}
继续化简得:
b(1a2a2+δ)=1n(yiaayi+δxia2+δ)=1n[yi(1a2a2+δ)xiaδa2+δ] \begin{aligned} b(1-\dfrac{a^2}{a^2+\delta})&=\dfrac{1}{n}\sum(y_i-a\dfrac{ay_i+\delta x_i}{a^2+\delta})\\ &=\dfrac{1}{n}\sum[y_i(1-\dfrac{a^2}{a^2+\delta})-x_i\dfrac{a\delta}{a^2+\delta}] \end{aligned}
最后解得:
b=1n(yixia)=yˉaxˉ \begin{aligned} b&=\dfrac{1}{n}\sum(y_i-x_ia) \\ &=\bar{y}-a\bar{x} \end{aligned}
所以,可以得:
b=yˉaxˉ b=\bar{y}-a\bar{x}

aa求导:

将目标函数J2\bm{J}_2aa求导:
J2a=a[(yiaxib)2+δ(xixi)2]=2[(yiaxib)xi] \begin{aligned} \dfrac{\partial \bm{J}_2}{\partial a}&=\dfrac{\partial}{\partial a}\sum[(y_i-ax^{\star}_i-b)^2+\delta(x_i-x^{\star}_i)^2] \\ &=-2\sum[(y_i-ax_i^{\star}-b)x_i^{\star}] \end{aligned}
J2a=0\dfrac{\partial \bm{J}_2}{\partial a}=0,得:
[(yiaxib)xi]=0 \sum[(y_i-ax_i^{\star}-b)x_i^{\star}]=0
同样,将xi=ayi+δxiaba2+δx_i^{\star}=\dfrac{ay_i+\delta x_i-ab}{a^2+\delta}代入,得:
[(yibaayi+δxiaba2+δ)ayi+δxiaba2+δ]=0 \sum[(y_i-b-a\dfrac{ay_i+\delta x_i-ab}{a^2+\delta})\dfrac{ay_i+\delta x_i-ab}{a^2+\delta}]=0
等号两边同时乘a2+δa^2+\delta,可以得:
{[(yib)(a2+δ)a2(yib)aδxi][δxi+a(yib)]}=0 \sum\{[(y_i-b)(a^2+\delta)-a^2(y_i-b)-a\delta x_i][\delta x_i+a(y_i-b)]\}=0
继续化简得:
0=a2(bδxiδxiyi)+a(b2δ2bδyi+δyi2δ2xi2)bδ2xi+δ2xiyi \begin{aligned} 0=\quad &a^2(b\delta\sum x_i-\sum\delta\sum x_i y_i) \\ +&a(b^2\delta -2b\delta\sum y_i + \delta\sum y_i^2 -\delta^2\sum x_i^2)\\ -&b\delta^2\sum x_i+\delta^2\sum x_iy_i \end{aligned}
b=yˉaxˉb=\bar{y}-a\bar{x}带入,得:
0=a3(nxˉ2xˉxi)+a2(yˉxixiyi2nxˉyˉ+2xˉyi)+a(yi2+nyˉ22yˉyi+δxˉxiδxi2)+δ(xiyiyˉxi) \begin{aligned} 0=\quad &a^3(n\bar{x}^2-\bar{x}\sum x_i)\\ +&a^2(\bar{y}\sum x_i -\sum x_i y_i -2n\bar{x}\bar{y}+2\bar{x}\sum y_i)\\ +&a(\sum y_i^2+n\bar{y}^2-2\bar{y}\sum y_i+\delta \bar{x}\sum x_i-\delta\sum x_i^2)\\ +&\delta(\sum x_i y_i-\bar{y}\sum x_i) \end{aligned}
继续化简,对每一项都除以nn,可以得:
0=a2(xˉyˉxyˉ2xˉyˉ+2xˉyˉ)+a[y2ˉ+yˉ22yˉ2+δ(x2ˉxˉ2)]+δ(xyˉxˉyˉ) \begin{aligned} 0=\quad &a^2(\bar{x}\bar{y}-\bar{xy}-2\bar{x}\bar{y}+2\bar{x}\bar{y}) \\ +&a[\bar{y^2}+\bar{y}^2-2\bar{y}^2+\delta (\bar{x^2}-\bar{x}^2)] \\ +&\delta(\bar{xy}-\bar{x}\bar{y}) \end{aligned}
最后化简为:
a2(sxy)+a(syyδsxx)+δsxy=0 a^2(-\bm{s}_{xy})+a(\bm{s}_{yy}-\delta\bm{s}_{xx})+\delta\bm{s}_{xy}=0
这是一个二元一次方程组,解得:
a=(syyδsxx)±(syyδsxx)2+4δsxy22sxy a=\dfrac{-(\bm{s}_{yy}-\delta\bm{s}_{xx})\pm \sqrt{(\bm{s}_{yy}-\delta\bm{s}_{xx})^2+4\delta\bm{s}^2_{xy}}}{2\bm{s}_{xy}}
因为syyδsxx(syyδsxx)2+4δsxy2\bm{s}_{yy}-\delta\bm{s}_{xx}\leq \sqrt{(\bm{s}_{yy}-\delta\bm{s}_{xx})^2+4\delta\bm{s}^2_{xy}}总是成立的,所以上式分子只能是正或者负。又因为aa的值应该与sxy\bm{s}_{xy}的符号保持一致,所以上式分子应该取正号。