Matlab Robustfit - коэффициенты неопределенности слишком велики

У меня есть следующие векторы:

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=f(x)=m*x+p это лучше всего подходит y против x, игнорируя возможные выбросы:

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

Я получаю уклон m = b(2) = 1.0402 +/- 0.0559

и у-перехват p = b(1) = 5.1496e-06 +/- 1.6907e-04

Неопределенности - это значения, которые я получаю stats.se, которые, согласно руководству, являются "стандартными" ошибками оценки коэффициентов. Но, как вы можете видеть, неопределенность в y-пересечении слишком велика, что, кажется, не имеет никакого смысла (какой смысл в использовании надежного подбора, если неопределенности, которые мы получаем, ненадежны?). Любая помощь по улучшению этого будет очень признателен!

Заранее большое спасибо!

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')

Надежная посадка ± стандартные ошибки

Обратите внимание, что эти стандартные ошибки не являются доверительными интервалами - этот график просто иллюстрирует их размер.

Что касается предоставленных вами данных, я бы сказал, что нет места для значительного улучшения этого соответствия без улучшения данных. На самом деле, без конкретных знаний об источнике лежащих в основе данных, я бы предположил, что подгонка с использованием регрессии OLS является такой же вероятной наилучшей оценкой линейной зависимости, как и надежная регрессия.

Другие вопросы по тегам