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

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

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

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


person Good Friend of Mine    schedule 22.12.2015    source источник


Ответы (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')

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

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

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

person Will    schedule 22.12.2015
comment
Большое спасибо за ответ, Уилл. Это имеет смысл. На самом деле я попробовал как регрессию МНК, так и надежную регрессию, и результаты почти одинаковы, вероятно, из-за того, что в данных не так много выбросов. - person Good Friend of Mine; 28.12.2015