Matlab: расчет обратной ковариационной матрицы для модели временных рядов

‹code›x(n) = \sum_{j=1}^p a_jx(nj) + u(n)  ‹/код›

представляет собой одномерную авторегрессионную модель AR порядка p = 2 и выборки данных N, возбужденные u, которая представляет собой гауссовский нулевой средний шум и дисперсию sigma_u^2.

Я знаю о функции cov(x), но как мне ее использовать для получения ковариационной матрицы pxp C(n) и ее обратной S(n) = C(n) для коэффициентов модели AR. Математическая формула для обратной ковариационной матрицы S (n) выражается как

Invcovformula

где A_1 и A_2 — нижние треугольные тёплицевые матрицы.

InverseCOv

Могу ли я напрямую сделать pinv(Cov(coefficients))? Я также не уверен, как передать аргументы в качестве коэффициентов AR в функцию.

Как реализовать эту формулу? Спасибо за помощь


person SKM    schedule 28.04.2015    source источник
comment
Как вы можете заметить, StackOverflow не поддерживает TeX/LaTeX. Пожалуйста, удалите его (и, конечно, не форматируйте его как код, если он на самом деле не является кодом). Если вам абсолютно необходимо показать уравнение, используйте изображение, как вы уже делали.   -  person horchler    schedule 29.04.2015
comment
@horchler: я разместил изображение для уравнения модели AR, спасибо :)   -  person SKM    schedule 29.04.2015
comment
Я знаю cov материал, но не AR. Каков результат вашей модели дополненной реальности? Функция cov() предназначена для численного вычисления ковариаций переменных с учетом набора наблюдений/выборок самих переменных (вход = массив наблюдений x переменных); не уверен, что здесь так. Если вам нужны covs коэффициентов, есть ли у вас формула для создания образцов самих коэффициентов? (Являются ли значения a_i теми коэффициентами?) Может быть решение в закрытой форме для AR, но я не знаю, что это такое.   -  person Andrew Janke    schedule 29.04.2015
comment
@AndrewJanke: Спасибо за ваш вклад и наблюдение. Коэффициенты a_i оцениваются с использованием оценки максимального правдоподобия. Нижняя граница среднеквадратической ошибки коэффициентов обычно определяется нижней границей Крамера-Рао (CRLB). Формула для CRLB содержит член, обратный ковариации матрицы pbyp коэффициентов. Я знаю, что можно найти ковариацию данных, но я не знаю, как найти случай коэффициентов для любой модели временных рядов. Результатом модели AR является одномерный временной ряд, по которому мы оцениваем неизвестные коэффициенты.   -  person SKM    schedule 30.04.2015
comment
Спасибо за дополнительную информацию. Боюсь, я не в своей тарелке. Надеюсь, что кто-то еще, кто более знаком с моделями AR, может присоединиться.   -  person Andrew Janke    schedule 30.04.2015
comment
Я думаю, что ваш вопрос некорректен. Учитывая ваш комментарий, я предполагаю, что вас интересует не ковариация временных рядов, а скорее ковариация оценки максимального правдоподобия (ML) коэффициента модели. Если это так, то функция cov — это не то, что вам нужно. Вы должны просто построить матрицы p на p A_1 и A_2, используя оценочные коэффициенты a_j, учитывая, что средство оценки ML также обеспечивает оценку дисперсии шума sigma (предположительно, так оно и есть).   -  person lmillefiori    schedule 30.04.2015
comment
@lmillefiori: Вы правы, и я не знаю, как это сделать - как построить ковариационные матрицы с использованием оценочных коэффициентов и известной (не оцененной) дисперсии шума. Можете ли вы помочь мне с кодом для этого? Спасибо за ваши ценные идеи.   -  person SKM    schedule 01.05.2015
comment
@SKM: Вы действительно близки к решению ... Если вам нужна дополнительная помощь, вам нужно предоставить дополнительную информацию о работе конкретного оценщика ML. Что-то непонятно в том, как матрица A_2 определена...   -  person lmillefiori    schedule 04.05.2015


Ответы (1)


Как заметили другие, ваш вопрос совершенно некорректен, поэтому я бы посоветовал вам сначала немного прочитать и подумать о том, что вы действительно хотите сделать. Тем не менее, я могу дать некоторые рекомендации, которые на самом деле больше связаны с уточнением концепций, чем с программированием. Основываясь на вопросе и комментариях, ваш вопрос следует перефразировать так: «Как можно оценить ковариационную матрицу для параметров модели AR (n), в которой параметры получены с помощью оценки максимального правдоподобия?» В этом случае мы можем ответить следующим образом.

  1. Для обсуждения давайте сначала создадим некоторые тестовые данные.
>> rng(0);
>> n = 10000;
>> x = rand(n,2);
  1. Сначала разумно получите начальные условия, запустив OLS. Именно так большинство людей в любом случае оценивают авторегрессии (почти вся литература по векторным авторегрессиям), а OLS и MLE асимптотически эквивалентны при некоторых условиях. Включите столбец с нулями, если вы хотите включить константу (что вы хотите сделать, если вы работаете с неунизительными данными). В выходных данных b — ваш вектор оценки параметров, а C — соответствующий вектор стандартных ошибок.
>> X = [x,ones(n,1)];
>> [b,C]=lscov(X,y)

b =

    4.9825
    9.9501
   20.0227


C =

    0.0347
    0.0345
    0.0266
  1. Прежде чем вы сможете вычислить максимальную вероятность, вам нужна вероятность. Мы можем просто построить его как композицию пары простых анонимных функций. Нам также необходимо построить вектор начальных условий, который включает стандартное отклонение ошибки прогнозирования, потому что это одна из вещей, которую мы собираемся оценить с помощью MLE. В этом случае я собираюсь предположить, что вам нужна нормально распределенная ошибка, и основывать мой пример на этом, но вы ничего не сказали и, конечно, могли выбрать что угодно (отсутствие нормально распределенной ошибки обычно является мотивацией для того, чтобы не делать ОЛС). Кроме того, я построю отрицательную логарифмическую вероятность, поскольку мы используем процедуры минимизации.
>> err = @(b) y - X*b

err = 

    @(b)y-X*b

>> std(err(b))

ans =

    0.9998

>> b0 = [b; std(err(b))];
>> nll = @(b) (n/2)*log(2*pi*b(end)^2) + (1/(2*b(end)^2))*sum(err(b(1:end-1)).^2);
  1. Затем используйте процедуру минимизации (например, fminsearch, fminunc и т. д.) для выполнения MLE.
>> bmle = fminsearch(nll,b0)

bmle =

    4.9825
    9.9501
   20.0227
    0.9997

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

>> inv(X'*X/bmle(end))

ans =

    0.0012    0.0000   -0.0006
    0.0000    0.0012   -0.0006
   -0.0006   -0.0006    0.0007

Наконец, стандартные ошибки соответствуют тому, что мы получили в случае наименьших квадратов.

>> sqrt(diag(inv(X'*X/bmle(end))))

ans =

    0.0347
    0.0345
    0.0266

РЕДАКТИРОВАТЬ: Извините, я только что понял, что мои тестовые данные были перекрестными, а не данными временных рядов. Я исправлю это, как только у меня будет время. Но методология оценки моделей остается прежней.

person transversality condition    schedule 02.05.2015
comment
Извините, что отвечаю так поздно. Я применял ваши методы в своей реализации, и, к сожалению, есть немало проблем. Это может быть из-за моего неправильного понимания. Не могли бы вы взглянуть? - person SKM; 14.05.2015
comment
Итак, я подогнал модель временного ряда к AR и оценил параметры, используя МНК с помощью команды aryule(). Это дало мне 2 параметра. Теперь я попытался оценить наличие белого гауссовского шума с нулевым средним значением, варьируя дисперсию шума, которая равна сигме ^ 2 (в моем вопросе). Тогда как я могу реализовать эту формулу ковариации S для каждого момента времени n? : inv(sigma^2)*(A_1*A_1' - A_2*A_2') Я не слежу за тем, какими будут в этом случае матрицы Теплица, A_1 и A_2 и роль оценок коэффициентов. Из вашего примера легко увидеть, что оценки используются в знаменателе - person SKM; 14.05.2015
comment
aryule() не является встроенной функцией, и я не уверен, какую функцию вы используете. Но я могу догадаться по названию, что это как-то связано с уравнениями Юла-Уокера. Они просто позволяют инвертировать функцию автоковариации, подразумеваемую авторегрессионной моделью, и модель авторегрессии, подразумеваемую функцией автоковариации. Так вы на самом деле ищете предполагаемую функцию автоковариации? Это НЕ то же самое, что ковариационная матрица, соответствующая предполагаемым параметрам авторегрессии. В любом случае, я бы предложил закрыть тему, потому что это не программирование... - person transversality condition; 18.05.2015