Matlab Robustfit - 系数不确定性过大

时间:2015-12-22 00:14:51

标签: matlab linear-regression robust

我有以下向量:

x = [0.0069    0.0052    0.0034    0.0024    0.0001   -0.0013   -0.0003 ...
   -0.0026   -0.0040   -0.0031   -0.0034   -0.0017   -0.0013   -0.0017 ...
   -0.0010   -0.0019   -0.0015   -0.0018   -0.0031   -0.0020   -0.0008 ...
    0.0007    0.0031    0.0036    0.0060]

y = [0.0069    0.0061    0.0044    0.0031    0.0012   -0.0016   -0.0027 ...
   -0.0032   -0.0033   -0.0042   -0.0031   -0.0019   -0.0021   -0.0013 ...
   -0.0007   -0.0021   -0.0020   -0.0011   -0.0028   -0.0033   -0.0011 ...
    0.0018    0.0027    0.0038    0.0051]

我正在使用一个健壮的拟合,以获得最适合y vs x而忽略可能的异常值的线性函数y=f(x)=m*x+p

[b,stats] = robustfit(x,y)

我得到一个斜率m = b(2) = 1.0402 +/- 0.0559

和y-intercept p = b(1) = 5.1496e-06 +/- 1.6907e-04

不确定性是我从stats.se获得的值,根据手册的标准"标准"系数估计误差。但正如你可以看到y截距的不确定性太大,这似乎没有任何意义(如果我们得到的不确定性不可靠,那么使用稳健拟合的重点是什么?) 。任何改善这方面的帮助都将非常感激!

非常感谢您提前!

1 个答案:

答案 0 :(得分:1)

y轴截距的标准误差相对于y轴截距本身较大,但相对于此拟合中的y数据仍然非常小。从统计学上可以推断出,robustfit给出的值优于零的可能性非常小。这不是强大回归的弱点 - 它是您数据的一个事实,它似乎大致通过原点。您可以通过绘制它们来查看标准误差有多小:

scatter(x,y)
hold on
axis equal
grid on
plot(x, m             *x + p            )
plot(x, m             *x + p+stats.se(1),'m--')
plot(x,(m+stats.se(2))*x + p            ,'c--')
plot(x, m             *x + p-stats.se(1),'m--')
plot(x,(m-stats.se(2))*x + p            ,'c--')
legend('Raw data','y=m*x+p','y=m*x+p±stats.se(1)','y=(m±stats.se(2))*x+p','Location','best')

Robust fit ± standard errors

请注意,这些标准误差不是置信区间 - 此图只是说明了它们的大小。

对于您提供的数据,我认为在没有改进数据的情况下,没有空间有意义地改善这种适应性。事实上,如果没有对基础数据来源的具体了解,我会假设使用OLS回归的拟合与稳健回归一样可能是线性关系的最佳估计。