Залишки завантаження: Чи я це роблю правильно?


10

Насамперед: З того, що я зрозумів, залишкові завантажувальні роботи залишаються таким чином:

  1. Підходить модель до даних
  2. Обчисліть залишки
  3. Перекомпонуйте залишки та додайте їх до 1.
  4. Підібрати модель до нового набору даних з 3.
  5. Повторіть nрази, але завжди додайте залишки, що перекомпоновані, у відповідність з 1.

Чи правильно це поки що?


Що я хочу зробити, це щось трохи інше:

Я хочу оцінити невизначеність параметрів та прогнозування для алгоритму, який оцінює деяку змінну середовища.

У мене є часовий ряд без помилок (від моделювання) цієї змінної x_true, до якої я додаю шум, x_noiseщоб створити синтетичний набір даних x. Потім я намагаюся знайти оптимальні параметри, встановлюючи мій алгоритм сумою квадратів sum((x_estimate - x_true)^2)(! Не x_estimate - x!) Як цільову функцію. Для того, щоб побачити, як працює мій алгоритм, і створити зразки розподілу моїх параметрів, я хочу перевпорядкувати x_noise, додати його x_true, знову підходити до своєї моделі, промивати та повторювати. Це правильний підхід до оцінки невизначеності параметрів? Чи можу я інтерпретувати пристосування до завантажених наборів даних як невизначеність прогнозування, чи потрібно дотримуватися процедури, яку я розмістив вище?

/ редагувати: Я думаю, я не дуже зрозумів, що робить моя модель. Подумайте про це, як по суті, як про метод знеструмлення. Це не прогностична модель, це алгоритм, який намагається отримати основний сигнал шумних часових рядів даних про навколишнє середовище.

/ edit ^ 2: Для користувачів MATLAB там я записав короткий та брудний приклад лінійної регресії того, що я маю на увазі.

Це те, що я вважаю "звичайним" завантаженням залишків (будь ласка, виправте мене, якщо я помиляюся): http://pastebin.com/C0CJp3d1

Це те, що я хочу зробити: http://pastebin.com/mbapsz4c


Це буде зрозуміліше, якщо ви покажете код, який ви робили до цього часу.
Метріки

Я фактично нічого не кодував поки що в плані завантаження. Код моєї моделі досить складний, я не вдячний, що допоможе. Як приклад, ми можемо припустити, що модель - це процедура згладжування, як ковзаюча середня величина, при цьому рухоме вікно є єдиним параметром моделі. У мене є ряд (синтетичних) вимірювань у часі, і я додаю помилку (не обов'язково гомосекастичну та звичайно розподілену) до цього. Тоді я хочу оцінити рухоме вікно, яке найближче до основного "справжнього", якого я знаю, і хочу оцінити невизначеність, завантаживши свою синтетичну помилку. Чи допомагає це?
Фред S

Ось кілька дуже поганих псевдокодів у стилі MATLAB, можливо, це допомагає зрозуміти, що я хотів би зробити: pastebin.com/yTRahzr5
Fred S

Вибачте Фреде, я не знаю Matlab.Please позначити тег як Matlab, щоб отримати дані від користувачів.
Метріки

2
О, моє запитання насправді не обмежується MATLAB (і це насправді не код MATLAB, це лише якийсь псевдо-код, заснований на синтаксисі MATLAB для for-циклів та коментарів, який би не працював у будь-якому разі). Але я можу позначити це на всякий випадок.
Фред S

Відповіді:


8

Ось загальний (напівпараметричний-завантажувальний) алгоритм більш докладно:

B = кількість завантажувальних програм

модель:
y=xβ+ϵ

нехай є залишкамиϵ^

  1. Запустіть регресію та отримайте оцінювач (і) та залишки .β^ϵ^
  2. Перекомпонуйте залишки із заміною та отримайте залишковий завантажений залишковий вектор .ϵ^B
  3. Отримайте залежну змінну, завантажену завантаженням, помноживши оцінювач (и) на (1) з вихідними регресорами та додавши залишковий завантажений залишок: .yB=xβ^+ϵ^B
  4. Запустіть регресію за допомогою залежних змінних, що завантажуються, та оригінальних регресорів, це дає оцінювач завантаження, тобто регрес на , це дає .yBxβ^B
  5. Повторіть процедуру -раз, повернувшись до (2).B

1

Я не впевнений, що моє розуміння правильне. Але ось моя пропозиція змінити ваш код ("звичайне завантаження залишків", рядки 28-34) на:

for i = 2:n_boot  
x_res_boot = x_residuals( randi(n_data,n_data,1) );  
x_boot = x_res_boot+ x_best_fit;  
p_est(:, i) = polyfit( t, x_boot, 1 );  
x_best_fit2 = polyval( p_est(:, i), t );  
x_residuals = x_best_fit2 - x_boot;
x_best_fit=x_best_fit2;
end  

Ідея полягає в тому, що кожен раз, коли ви використовуєте залишки не з першого запуску, а з попереднього придатного завантажувача. Що стосується мене, то, здається, всі інші справедливі.

Це переглянута версія, яка була перевірена в MATLAB. Виправлено дві помилки.


О, добре, що було для мене новим. bsxfun дещо складний; ось нова версія, яка використовує вашу ідею і повинна бути трохи зрозумілішою. Однак це дає дещо дивні результати. Це результат завжди перекомполяції залишків першого найкращого підходу та додавання їх до тієї самої (моя початкова ідея), і це те, що відбувається, якщо я перекомпоную залишки кожної ітерації та додаю їх до кожної нової найкращої форми. Будь-які ідеї?
Фред S

Ну, невелика помилка у рядку 25 (має бути p_est (:, i) замість p_est (:, 1)), але навіть коли я фіксую, що розподіли параметрів все ще виглядають химерними: натисніть
Fred S

1
Відповідь фіксується і перевіряється в MATLAB. Зараз це йде добре.
O_Devinyak

1
Нові залишки для кожного пристосування - це було моє перше розуміння залишкової завантажувальної програми. Але мушу визнати, що різні джерела використовують для цієї мети залишки, придатні до оригінальних даних. Ось приємний підручник з завантажувального програмного забезпечення ( econ.pdx.edu/facturing/KPL/readings/mackinnon06.pdf ). Здається, що мій підхід невірний, коли ваша реалізація є правильною. Чи потрібно видалити дану відповідь?
O_Devinyak

1
Дякуємо за подальші дії. IMHO, залиште відповідь для інших користувачів тим самим питанням. Я виявив, що література (принаймні та, яка мені доступна) не завжди зрозуміла з цього приводу і може бути дуже заплутаною.
Фред S

1

Щоб побачити, як працює алгоритм з точки зору точності прогнозування / середньої квадратичної помилки, вам, ймовірно, потрібна завантажувальна програма «оптимізму» Efron-Gong. Це реалізовано для зручного використання в rmsпакеті R. Див своїх функцій ols, validate.ols, calibrate.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.