2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5  След.
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение15.02.2023, 23:50 
Аватара пользователя


07/03/06
128
ipgmvq в сообщении #1581790 писал(а):
Нельзя исключить, что эта петрушка со стойкой положительной автокорреляцией (однолаговой на PACF и многолаговой на ACF), которая полностью "объясняет" даже положительное матожидание, могла возникнуть из-за какого-то сглаживания изначального графика динамики цены.
Действительно график ваших дневных иксов чересчур сглажен для фрактала.
-- Варианты со сглаживанием (фильтрацией высокочастотного шума напрямую в иксах) я тоже рассматривал, но в предоставленных здесь данных никакого сглаживания нет. (Теперь уже проверил за собой дважды.) Там должно быть довольно много белого шума в "скоростях".

Ещё раз огромное спасибо всем участникам обсуждения! Мне надо взять время на обдумывание и обработку предложенных идей.
Да здравствует форум dxdy.ru! :D

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение16.02.2023, 09:46 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
ipgmvq в сообщении #1581790 писал(а):
Нельзя исключить, что эта петрушка со стойкой положительной автокорреляцией (однолаговой на PACF и многолаговой на ACF), которая полностью "объясняет" даже положительное матожидание, могла возникнуть из-за какого-то сглаживания изначального графика динамики цены.


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

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение17.02.2023, 00:58 


27/06/20
337
Евгений Машеров в сообщении #1581814 писал(а):
Много ненулевых на АКФ это "последействие", по экспоненте уезжает.
Точно так (для большей части последовательностей). Поэтому смотрю на ЧАКФ, чтобы убедиться, что так "уезжает", как надо "уезжать". :-)

Евгений Машеров в сообщении #1581814 писал(а):
Но более всего меня смущает отклонение от нормальности.
Да уж, остатки продолжают быть сильно ненормальными, да и гетероскедостичными.

Евгений Машеров в сообщении #1581814 писал(а):
задача оценка не среднего, а волатильности
Возможно, Вы имели в виду медианы (не волатильности), как выше? При бутсрепинге из эмпирических распределений остатков автокорреляционных моделей действительно у многих последовательностей выборочная медиана гуляет менее амплитудно, чем выборочная средняя.

А Вы на каком софте это предпочитаете считать обычно?

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение17.02.2023, 06:26 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Нет, я имею в виду, что сильные отклонения от нормальности (в частности, колоссальный четвёртый момент) можно объяснить двояко. Либо распределение всех точек одинаково, но заведомо не нормальное, тогда среднее может быть очень плохой оценкой, и надо что-то робастное (медиана не единственный способ, но первый приходящий в голову; и она даст осмысленный ответ даже для Коши, когда среднего вообще нет). Либо распределение меняется, один из простейших вариантов - оно нормальное, а переменная дисперсия. Тогда надо сперва оценить дисперсию (волатильность, применительно к данной задаче) и её изменение во времени.

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение17.02.2023, 08:20 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Как вариант.
Кажется, будто данные порождены авторегрессией 1 порядка с возмущениями, заведомо не нормальными. Но распределение одинаково, то есть задача оценки переменной во времени волатильности не ставится.
$y_t=\mu+a(y_{t-1}-\mu)+\varepsilon_t$
Или, чуток перепараметризовав
$y_t=b+ay_{t-1}+\varepsilon_t$
$b=\mu(1-a)$
И оценивать, как регрессию, робастным методом. Тейла-Сена или повторной медианы (в первом перебираем все пары точек, считаем наклон соединяющей их линии и берём медиану, во втором сначала считаем медианы наклонов линий исходящих из данной точки, потом медиану медиан). Свободный член тоже как медиану.

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение17.02.2023, 15:43 


27/06/20
337
Евгений Машеров в сообщении #1581971 писал(а):
$y_t=\mu+a(y_{t-1}-\mu)+\varepsilon_t$
Или, чуток перепараметризовав
$y_t=b+ay_{t-1}+\varepsilon_t$
$b=\mu(1-a)$

Отличное замечание. Спасибо! Важно скейлировать оценку $\beta_0$, если она получится стат значимой, для получаения точечной оценки дрифта.

С этими робастными оценками я вижу трудность в том, что программные пакеты/публикации не особо адресуют расчет доверительного интервала для оценки $\beta_0$ (всё внимание на $\beta_1$). А $\beta_0$ почти ноль здесь, и именно дрифт находится в центре внимания топик-стартера. :-(

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение23.02.2023, 11:13 
Аватара пользователя


07/03/06
128
Доброго времени суток.
В самом деле, в стартовом сообщении я сравниваю оценки дрейфа для иксов по сути дела между моделями ARIMA(0,1,0) и ARIMA(0,1,1) (последняя с ограничением на параметр МА). А ведь можно нащупывать оптимум на более широком множестве моделей...
код: [ скачать ] [ спрятать ]
Используется синтаксис Python
import sys, warnings
import numpy as np
from scipy.optimize import brute
from statsmodels.tsa.arima.model import ARIMA

def ARIMA_fit(dimens, endog):
    tflags = [0]*(dimens[1] + 1)
    if len(tflags) > 0:
        tflags[-1] = 1
    return ARIMA(endog, exog=None, order=dimens, trend=tflags).fit()
def objfunc(dimens, endog):
    return ARIMA_fit(dimens, endog).aic

# Подбор оптимальных моделей для различных случаев
VelFile = 'C:\\Users\\PathToTheFile\\Velocities_NC.csv'
dlcr = np.genfromtxt(VelFile, delimiter='\t', dtype=float, encoding=None).T[:-1]
N = len(dlcr[0]); print('N =', N)
grid = (slice(0, 3, 1), slice(0, 2, 1), slice(0, 2, 1))
for i, v in enumerate(dlcr):
    sys.stdout.write('Case %s, nu1 = %8.8f\n' % (str(i+1).rjust(2, '0'), np.mean(v)))
    with warnings.catch_warnings():
        warnings.simplefilter("ignore")
        resbrute = brute(objfunc, grid, args=(v,), full_output=True, finish=None)
    print('Optimum:', resbrute[:2])
    optdim = [int(el) for el in resbrute[0]]
    if optdim[1] == 0:
        with warnings.catch_warnings():
            warnings.simplefilter("ignore")
            res = ARIMA_fit(optdim, v)
        mod0 = ARIMA(v, order=[0, 0, 1])
        with mod0.fix_params({'ma.L1': -0.999}):
            with warnings.catch_warnings():
                warnings.simplefilter("ignore")
                res0 = mod0.fit()
        sys.stdout.write('nu* = %8.8f, nu2 = %8.8f\n' % (res.params[0], res0.params[0]))
    else:
        print('Последовательность {V_n} нестационарная!')
 

Уже этот простой код даёт интересный результат.

-- Чт фев 23, 2023 11:33:24 --

Вот выдача программы:
код: [ скачать ] [ спрятать ]
  1. N = 3398 
  2. Case 01, nu1 = 0.00655462 
  3. Optimum: (array([2., 0., 1.]), -2001.5243027229076) 
  4. nu* = 0.00655787, nu2 = 0.00511804 
  5. Case 02, nu1 = 0.00510602 
  6. Optimum: (array([1., 0., 0.]), -1753.2230276681646) 
  7. nu* = 0.00524620, nu2 = 0.00075748 
  8. Case 03, nu1 = -0.00323397 
  9. Optimum: (array([1., 0., 0.]), -3602.503593249994) 
  10. nu* = -0.00317546, nu2 = -0.00360338 
  11. Case 04, nu1 = -0.00699477 
  12. Optimum: (array([1., 0., 0.]), -1267.1082562522715) 
  13. nu* = -0.00698380, nu2 = -0.00230233 
  14. Case 05, nu1 = -0.00393526 
  15. Optimum: (array([1., 0., 0.]), -1419.3051317520972) 
  16. nu* = -0.00385107, nu2 = -0.00679393 
  17. Case 06, nu1 = -0.00605052 
  18. Optimum: (array([1., 0., 0.]), -1443.6536953481443) 
  19. nu* = -0.00606142, nu2 = -0.00628713 
  20. Case 07, nu1 = 0.00339638 
  21. Optimum: (array([2., 0., 0.]), -1842.1772925001608) 
  22. nu* = 0.00345564, nu2 = 0.00045591 
  23. Case 08, nu1 = -0.01028459 
  24. Optimum: (array([1., 0., 0.]), -1681.044330496633) 
  25. nu* = -0.01028966, nu2 = -0.00913594 
  26. Case 09, nu1 = 0.00135474 
  27. Optimum: (array([1., 0., 0.]), 677.9968016163955) 
  28. nu* = 0.00122458, nu2 = 0.00330383 
  29. Case 10, nu1 = -0.00802964 
  30. Optimum: (array([2., 0., 0.]), 5783.8802282100205) 
  31. nu* = -0.00824265, nu2 = -0.00399930 
  32. Case 11, nu1 = 0.04543728 
  33. Optimum: (array([2., 0., 1.]), 5263.535013539845) 
  34. nu* = 0.04544864, nu2 = 0.04853337 
  35. Case 12, nu1 = 0.00018052 
  36. Optimum: (array([2., 0., 1.]), 6043.803990116727) 
  37. nu* = 0.00027511, nu2 = -0.00497948 
  38. Case 13, nu1 = 0.00088748 
  39. Optimum: (array([1., 0., 0.]), -1952.1799676735563) 
  40. nu* = 0.00104729, nu2 = -0.00426091 
  41. Case 14, nu1 = 0.01404851 
  42. Optimum: (array([2., 0., 1.]), 6062.001073971892) 
  43. nu* = 0.01412079, nu2 = 0.00858118 
  44. Case 15, nu1 = 0.03490237 
  45. Optimum: (array([1., 0., 0.]), -1732.9333161007546) 
  46. nu* = 0.03503534, nu2 = 0.03081376 
  47. Case 16, nu1 = 0.02167120 
  48. Optimum: (array([1., 0., 0.]), -1660.8531453830658) 
  49. nu* = 0.02168255, nu2 = 0.02658783 
  50. Case 17, nu1 = 0.01318151 
  51. Optimum: (array([2., 0., 1.]), -2001.5242675748623) 
  52. nu* = 0.01318603, nu2 = 0.01174493 
  53. Case 18, nu1 = 0.04814803 
  54. Optimum: (array([2., 0., 0.]), 7469.848972520394) 
  55. nu* = 0.04850848, nu2 = 0.05708517 
  56. Case 19, nu1 = 0.05767983 
  57. Optimum: (array([1., 0., 1.]), 7828.063197234043) 
  58. nu* = 0.05815710, nu2 = 0.05465586 
  59. Case 20, nu1 = 0.02711366 
  60. Optimum: (array([1., 0., 0.]), 7666.084724908118) 
  61. nu* = 0.02772736, nu2 = 0.01649759 
  62. Case 21, nu1 = 0.01819613 
  63. Optimum: (array([2., 0., 1.]), 7071.608781434849) 
  64. nu* = 0.01849523, nu2 = 0.00070983 
  65. Case 22, nu1 = 0.06938519 
  66. Optimum: (array([2., 0., 1.]), 12505.673836175767) 
  67. nu* = 0.07004610, nu2 = 0.11541765 
  68. Case 23, nu1 = 0.05295559 
  69. Optimum: (array([1., 0., 1.]), 8676.217705986248) 
  70. nu* = 0.05353996, nu2 = 0.06586575 
  71. Case 24, nu1 = 0.01741749 
  72. Optimum: (array([2., 0., 0.]), 5333.812136832569) 
  73. nu* = 0.01804165, nu2 = 0.01464376 
  74. Case 25, nu1 = 0.03240470 
  75. Optimum: (array([1., 0., 0.]), 9052.015777909139) 
  76. nu* = 0.03282899, nu2 = 0.03618805 
  77. Case 26, nu1 = -0.02160219 
  78. Optimum: (array([1., 0., 0.]), 14823.135686141957) 
  79. nu* = -0.02170764, nu2 = -0.00375938 
  80. Case 27, nu1 = 0.03527269 
  81. Optimum: (array([1., 0., 0.]), 7446.075840896611) 
  82. nu* = 0.03553485, nu2 = 0.03902088 
  83. Case 28, nu1 = -0.00591215 
  84. Optimum: (array([1., 0., 1.]), 8362.43520666227) 
  85. nu* = -0.00532773, nu2 = 0.00707273 
  86. Case 29, nu1 = 0.00994661 
  87. Optimum: (array([1., 0., 0.]), 4993.641460569665) 
  88. nu* = 0.01037314, nu2 = 0.00556432 
  89. Case 30, nu1 = 0.01498699 
  90. Optimum: (array([2., 0., 1.]), 7551.967874191333) 
  91. nu* = 0.01588266, nu2 = 0.01789566 
  92. Case 31, nu1 = 0.00004803 
  93. Optimum: (array([1., 0., 0.]), 4985.233225953146) 
  94. nu* = 0.00048012, nu2 = -0.00134578 
  95. Case 32, nu1 = 0.00436593 
  96. Optimum: (array([1., 0., 0.]), 6289.805687425167) 
  97. nu* = 0.00458351, nu2 = 0.00570202 
  98. Case 33, nu1 = 0.03949887 
  99. Optimum: (array([1., 1., 1.]), 9569.488295437426) 
  100. Последовательность {V_n} нестационарная! 
  101. Case 34, nu1 = -0.00764012 
  102. Optimum: (array([1., 0., 0.]), 6225.822550654315) 
  103. nu* = -0.00697995, nu2 = -0.00918850 
  104. Case 35, nu1 = 0.02794744 
  105. Optimum: (array([1., 0., 0.]), 6303.878037200964) 
  106. nu* = 0.02821508, nu2 = 0.03191873 
  107. Case 36, nu1 = 0.05544060 
  108. Optimum: (array([1., 0., 0.]), 10973.977571550175) 
  109. nu* = 0.05662079, nu2 = 0.05975968 
  110. Case 37, nu1 = 0.09533599 
  111. Optimum: (array([1., 0., 1.]), 10744.50251548487) 
  112. nu* = 0.09587056, nu2 = 0.12061395 
  113. Case 38, nu1 = 0.00491529 
  114. Optimum: (array([2., 0., 1.]), 5148.886912162805) 
  115. nu* = 0.00496833, nu2 = 0.00731045 
  116. Case 39, nu1 = -0.00129450 
  117. Optimum: (array([1., 0., 1.]), 8630.469181212258) 
  118. nu* = -0.00065673, nu2 = -0.00969551 
  119. Case 40, nu1 = 0.00927956 
  120. Optimum: (array([1., 0., 0.]), 6086.932916104852) 
  121. nu* = 0.00926546, nu2 = 0.00344314 
  122. Case 41, nu1 = 0.00004842 
  123. Optimum: (array([2., 0., 1.]), 6492.88733140783) 
  124. nu* = 0.00005225, nu2 = -0.00873819 
  125. Case 42, nu1 = 0.01479790 
  126. Optimum: (array([2., 0., 0.]), 8110.804239306264) 
  127. nu* = 0.01539614, nu2 = 0.02451793 
  128. Case 43, nu1 = 0.04250041 
  129. Optimum: (array([1., 0., 0.]), 7845.047042707865) 
  130. nu* = 0.04251266, nu2 = 0.03918382 
  131. Case 44, nu1 = 0.08787678 
  132. Optimum: (array([1., 0., 0.]), 12278.726822865188) 
  133. nu* = 0.08798968, nu2 = 0.08854787 
  134. Case 45, nu1 = 0.02690075 
  135. Optimum: (array([2., 0., 0.]), 7867.670988689168) 
  136. nu* = 0.02672607, nu2 = 0.04508320 
  137. Case 46, nu1 = 0.03474408 
  138. Optimum: (array([2., 0., 0.]), 7550.407295535655) 
  139. nu* = 0.03536523, nu2 = 0.03496059 
  140. Case 47, nu1 = 0.00946698 
  141. Optimum: (array([1., 0., 0.]), 6770.412583650933) 
  142. nu* = 0.00998735, nu2 = 0.00744384 
  143. Case 48, nu1 = 0.03180515 
  144. Optimum: (array([2., 0., 0.]), 6985.676286983977) 
  145. nu* = 0.03225065, nu2 = 0.03707359 
  146. Case 49, nu1 = -0.02027986 
  147. Optimum: (array([2., 0., 1.]), 5080.479671826343) 
  148. nu* = -0.01827365, nu2 = -0.01036466 
  149. Case 50, nu1 = -0.01362876 
  150. Optimum: (array([2., 0., 1.]), 8548.178694339065) 
  151. nu* = -0.01400804, nu2 = -0.00819919 
  152. Case 51, nu1 = 0.04542424 
  153. Optimum: (array([2., 0., 1.]), 6826.63056357385) 
  154. nu* = 0.04557611, nu2 = 0.03311890 
  155. Case 52, nu1 = 0.03524515 
  156. Optimum: (array([2., 0., 0.]), 6492.731376385485) 
  157. nu* = 0.03532124, nu2 = 0.03739381 
  158. Case 53, nu1 = 0.01788338 
  159. Optimum: (array([2., 0., 0.]), 7990.775179376935) 
  160. nu* = 0.01792653, nu2 = -0.01074836 
  161. Case 54, nu1 = 0.06768045 
  162. Optimum: (array([2., 0., 0.]), 8502.771441139224) 
  163. nu* = 0.06808146, nu2 = 0.06972287 
  164. Case 55, nu1 = 0.03975904 
  165. Optimum: (array([1., 0., 1.]), 7663.332602355416) 
  166. nu* = 0.03975330, nu2 = 0.04063427 
  167. Case 56, nu1 = 0.00482490 
  168. Optimum: (array([2., 0., 1.]), 8250.620935499815) 
  169. nu* = 0.00460744, nu2 = 0.00212685 
  170. Case 57, nu1 = 0.03142051 
  171. Optimum: (array([2., 0., 0.]), 6303.494638442299) 
  172. nu* = 0.03127149, nu2 = 0.02815879 
  173. Case 58, nu1 = 0.03863696 
  174. Optimum: (array([2., 0., 0.]), 6599.050607269748) 
  175. nu* = 0.03858211, nu2 = 0.03389534 
  176. Case 59, nu1 = 0.08942656 
  177. Optimum: (array([1., 0., 1.]), 13733.967110114972) 
  178. nu* = 0.08967851, nu2 = 0.14293596 

Интересно, что
1) оптимальная модель не всегда совпадает с авторегрессией 1-ого порядка
2) только в одном из 59-ти случаев последовательность "скоростей" признана нестационарной
3) оптимальный дрейф $\tilde\nu^*$ не всегда лежит между $\tilde\nu_1$ и $\tilde\nu_2$
4) оптимальный дрейф всегда гораздо ближе к оценке для случайного блуждания, чем к оценке для тренд-стационарного процесса (по регрессии).
Combat Zone в сообщении #1581517 писал(а):
Кролик, оценка дурная, бессмысленная и беспощадная. Нет, она не лучше стандартной.
Может быть Combat Zone прав?

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение23.02.2023, 14:06 


27/06/20
337
Кролик в сообщении #1582902 писал(а):
в стартовом сообщении я сравниваю оценки дрейфа для иксов по сути дела между моделями ARIMA(0,1,0) и ARIMA(0,1,1) (последняя с ограничением на параметр МА)
я не готов согласиться с Вашим уподоблением регрессии ряда по его индексу модели ARIMA(0,1,1).

Кролик в сообщении #1582902 писал(а):
А ведь можно нащупывать оптимум на более широком множестве моделей...
Так точно.

Код вечером гляну.

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение23.02.2023, 15:50 
Аватара пользователя


07/03/06
128
ipgmvq в сообщении #1582934 писал(а):
Кролик в сообщении #1582902 писал(а):
в стартовом сообщении я сравниваю оценки дрейфа для иксов по сути дела между моделями ARIMA(0,1,0) и ARIMA(0,1,1) (последняя с ограничением на параметр МА)
я не готов согласиться с Вашим уподоблением регрессии ряда по его индексу модели ARIMA(0,1,1).
-- Я имею ввиду требование на единичный корень в МА части модели: ma.L1 = -1 (в программе есть похожий фрагмент).

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение23.02.2023, 22:28 
Аватара пользователя


07/03/06
128
ipgmvq в сообщении #1581018 писал(а):
Если так получается, то может быть, ряд X вовсе не ряд, а тренд-стационарный процесс (а последовательность V уже искусственное производное).
-- Чтобы произвести проверку на тренд-стационарность, можно применить программу, аналогичную вышеприведённой, для иксов напрямую:

код: [ скачать ] [ спрятать ]
Используется синтаксис Python
import sys, warnings
import numpy as np
from scipy.optimize import brute
from statsmodels.tsa.arima.model import ARIMA

def ARIMA_fit(dimens, endog):
    fl = 0; tlen = 1
    if endog[0] == 0.0 and dimens[1] == 0:
        fl = 1; tlen = 2
    tflags = [fl]*(dimens[1] + tlen); tflags[-1] = 1
    return ARIMA(endog, exog=None, order=dimens, trend=tflags).fit()
def objfunc(dimens, endog):
    return ARIMA_fit(dimens, endog).aic

# Подбор оптимальных моделей для различных случаев 2
VelFile = 'C:\\Users\\...\\Velocities_NC.csv'
dlcr = np.genfromtxt(VelFile, delimiter='\t', dtype=float, encoding=None).T[:-1]
N = len(dlcr[0]); print('N =', N)
x = np.zeros(N+1)
grid = (slice(0, 4, 1), slice(0, 3, 1), slice(0, 2, 1))
for i, v in enumerate(dlcr):
    sys.stdout.write('Case %s, nu1 = %8.8f\n' % (str(i+1).rjust(2, '0'), np.mean(v)))
    for i in range(1,N+1):
        x[i] = x[i-1] + v[i-1]
    with warnings.catch_warnings():
        warnings.simplefilter("ignore")
        resbrute = brute(objfunc, grid, args=(x,), full_output=True, finish=None)
    print('Optimum:', resbrute[:2])
    optdim = [int(el) for el in resbrute[0]]
    if optdim[1] < 2:
        with warnings.catch_warnings():
            warnings.simplefilter("ignore")
            res = ARIMA_fit(optdim, x)
        mod0 = ARIMA(v, order=[0, 0, 1])
        with mod0.fix_params({'ma.L1': -0.999}):
            with warnings.catch_warnings():
                warnings.simplefilter("ignore")
                res0 = mod0.fit()
        sys.stdout.write('nu* = %8.8f, nu2 = %8.8f\n'
                         % (res.params[0] if optdim[1] == 1 else res.params[1], res0.params[0]))
    else:
        print('Последовательность {V_n} нестационарная!')
 

Здесь мы как бы снимаем требование на присутствие единичного корня в RA-части модели (для иксов) и получаем следующий результат:

код: [ скачать ] [ спрятать ]
  1. N = 3398 
  2. Case 01, nu1 = 0.00655462 
  3. Optimum: (array([2., 1., 1.]), -2001.5242968797716) 
  4. nu* = 0.00655679, nu2 = 0.00511804 
  5. Case 02, nu1 = 0.00510602 
  6. Optimum: (array([1., 1., 0.]), -1753.2230276620312) 
  7. nu* = 0.00524620, nu2 = 0.00075748 
  8. Case 03, nu1 = -0.00323397 
  9. Optimum: (array([1., 1., 0.]), -3602.503593245873) 
  10. nu* = -0.00317546, nu2 = -0.00360338 
  11. Case 04, nu1 = -0.00699477 
  12. Optimum: (array([1., 1., 0.]), -1267.108256258572) 
  13. nu* = -0.00698380, nu2 = -0.00230233 
  14. Case 05, nu1 = -0.00393526 
  15. Optimum: (array([3., 1., 1.]), -1423.5822742838318) 
  16. nu* = -0.00386022, nu2 = -0.00679393 
  17. Case 06, nu1 = -0.00605052 
  18. Optimum: (array([2., 0., 0.]), -1444.977937110824) 
  19. nu* = -0.00629738, nu2 = -0.00628713 
  20. Case 07, nu1 = 0.00339638 
  21. Optimum: (array([2., 0., 0.]), -1843.86650776152) 
  22. nu* = 0.00044537, nu2 = 0.00045591 
  23. Case 08, nu1 = -0.01028459 
  24. Optimum: (array([2., 0., 0.]), -1683.3033525621347) 
  25. nu* = -0.00913082, nu2 = -0.00913594 
  26. Case 09, nu1 = 0.00135474 
  27. Optimum: (array([1., 1., 0.]), 677.9968016389706) 
  28. nu* = 0.00122458, nu2 = 0.00330383 
  29. Case 10, nu1 = -0.00802964 
  30. Optimum: (array([2., 1., 0.]), 5783.880228110692) 
  31. nu* = -0.00824265, nu2 = -0.00399930 
  32. Case 11, nu1 = 0.04543728 
  33. Optimum: (array([3., 1., 0.]), 5254.037875327744) 
  34. nu* = 0.04543832, nu2 = 0.04853337 
  35. Case 12, nu1 = 0.00018052 
  36. Optimum: (array([3., 1., 0.]), 6043.3680244172465) 
  37. nu* = 0.00025744, nu2 = -0.00497948 
  38. Case 13, nu1 = 0.00088748 
  39. Optimum: (array([1., 1., 0.]), -1952.1799676641272) 
  40. nu* = 0.00104727, nu2 = -0.00426091 
  41. Case 14, nu1 = 0.01404851 
  42. Optimum: (array([2., 1., 1.]), 6062.001073938916) 
  43. nu* = 0.01412072, nu2 = 0.00858118 
  44. Case 15, nu1 = 0.03490237 
  45. Optimum: (array([1., 1., 0.]), -1732.9333160917927) 
  46. nu* = 0.03503534, nu2 = 0.03081376 
  47. Case 16, nu1 = 0.02167120 
  48. Optimum: (array([1., 1., 0.]), -1660.8531453904282) 
  49. nu* = 0.02168255, nu2 = 0.02658783 
  50. Case 17, nu1 = 0.01318151 
  51. Optimum: (array([2., 1., 1.]), -2001.52423061589) 
  52. nu* = 0.01318191, nu2 = 0.01174493 
  53. Case 18, nu1 = 0.04814803 
  54. Optimum: (array([2., 0., 1.]), 7466.3708089742195) 
  55. nu* = 0.05699746, nu2 = 0.05708517 
  56. Case 19, nu1 = 0.05767983 
  57. Optimum: (array([1., 1., 1.]), 7828.063197130257) 
  58. nu* = 0.05815709, nu2 = 0.05465586 
  59. Case 20, nu1 = 0.02711366 
  60. Optimum: (array([1., 1., 0.]), 7666.08472478068) 
  61. nu* = 0.02772736, nu2 = 0.01649759 
  62. Case 21, nu1 = 0.01819613 
  63. Optimum: (array([3., 1., 0.]), 7069.580346114151) 
  64. nu* = 0.01845195, nu2 = 0.00070983 
  65. Case 22, nu1 = 0.06938519 
  66. Optimum: (array([3., 1., 0.]), 12505.26955543548) 
  67. nu* = 0.06999615, nu2 = 0.11541765 
  68. Case 23, nu1 = 0.05295559 
  69. Optimum: (array([1., 1., 1.]), 8676.217706742214) 
  70. nu* = 0.05354198, nu2 = 0.06586575 
  71. Case 24, nu1 = 0.01741749 
  72. Optimum: (array([3., 1., 1.]), 5330.615814908288) 
  73. nu* = 0.01778786, nu2 = 0.01464376 
  74. Case 25, nu1 = 0.03240470 
  75. Optimum: (array([1., 1., 0.]), 9052.015777860925) 
  76. nu* = 0.03282899, nu2 = 0.03618805 
  77. Case 26, nu1 = -0.02160219 
  78. Optimum: (array([1., 1., 0.]), 14823.135685851297) 
  79. nu* = -0.02170764, nu2 = -0.00375938 
  80. Case 27, nu1 = 0.03527269 
  81. Optimum: (array([2., 0., 0.]), 7444.339506263933) 
  82. nu* = 0.03830970, nu2 = 0.03902088 
  83. Case 28, nu1 = -0.00591215 
  84. Optimum: (array([1., 1., 1.]), 8362.435206553026) 
  85. nu* = -0.00532773, nu2 = 0.00707273 
  86. Case 29, nu1 = 0.00994661 
  87. Optimum: (array([2., 0., 0.]), 4991.751457062013) 
  88. nu* = 0.00541659, nu2 = 0.00556432 
  89. Case 30, nu1 = 0.01498699 
  90. Optimum: (array([3., 1., 0.]), 7551.179289103277) 
  91. nu* = 0.01579190, nu2 = 0.01789566 
  92. Case 31, nu1 = 0.00004803 
  93. Optimum: (array([3., 1., 1.]), 4980.2190541873015) 
  94. nu* = 0.00033502, nu2 = -0.00134578 
  95. Case 32, nu1 = 0.00436593 
  96. Optimum: (array([3., 1., 1.]), 6274.489235666308) 
  97. nu* = 0.00435287, nu2 = 0.00570202 
  98. Case 33, nu1 = 0.03949887 
  99. Optimum: (array([1., 2., 1.]), 9569.572594662135) 
  100. Последовательность {V_n} нестационарная! 
  101. Case 34, nu1 = -0.00764012 
  102. Optimum: (array([1., 1., 0.]), 6225.822550696699) 
  103. nu* = -0.00697995, nu2 = -0.00918850 
  104. Case 35, nu1 = 0.02794744 
  105. Optimum: (array([2., 0., 0.]), 6286.088796906268) 
  106. nu* = 0.03189986, nu2 = 0.03191873 
  107. Case 36, nu1 = 0.05544060 
  108. Optimum: (array([3., 1., 0.]), 10971.196247480491) 
  109. nu* = 0.05701863, nu2 = 0.05975968 
  110. Case 37, nu1 = 0.09533599 
  111. Optimum: (array([1., 1., 1.]), 10744.502515222093) 
  112. nu* = 0.09587055, nu2 = 0.12061395 
  113. Case 38, nu1 = 0.00491529 
  114. Optimum: (array([3., 1., 1.]), 5147.535034095081) 
  115. nu* = 0.00495773, nu2 = 0.00731045 
  116. Case 39, nu1 = -0.00129450 
  117. Optimum: (array([1., 1., 1.]), 8630.469181050696) 
  118. nu* = -0.00065673, nu2 = -0.00969551 
  119. Case 40, nu1 = 0.00927956 
  120. Optimum: (array([1., 1., 0.]), 6086.932916022977) 
  121. nu* = 0.00926546, nu2 = 0.00344314 
  122. Case 41, nu1 = 0.00004842 
  123. Optimum: (array([2., 1., 1.]), 6492.887331316366) 
  124. nu* = 0.00005226, nu2 = -0.00873819 
  125. Case 42, nu1 = 0.01479790 
  126. Optimum: (array([2., 1., 0.]), 8110.804239097117) 
  127. nu* = 0.01539606, nu2 = 0.02451793 
  128. Case 43, nu1 = 0.04250041 
  129. Optimum: (array([2., 0., 0.]), 7842.70031775359) 
  130. nu* = 0.03899907, nu2 = 0.03918382 
  131. Case 44, nu1 = 0.08787678 
  132. Optimum: (array([1., 1., 0.]), 12278.726822238443) 
  133. nu* = 0.08798968, nu2 = 0.08854787 
  134. Case 45, nu1 = 0.02690075 
  135. Optimum: (array([2., 1., 0.]), 7867.670988655611) 
  136. nu* = 0.02672606, nu2 = 0.04508320 
  137. Case 46, nu1 = 0.03474408 
  138. Optimum: (array([3., 1., 1.]), 7548.2388299158465) 
  139. nu* = 0.03503380, nu2 = 0.03496059 
  140. Case 47, nu1 = 0.00946698 
  141. Optimum: (array([1., 1., 0.]), 6770.412583524469) 
  142. nu* = 0.00998736, nu2 = 0.00744384 
  143. Case 48, nu1 = 0.03180515 
  144. Optimum: (array([3., 1., 1.]), 6978.289920046582) 
  145. nu* = 0.03257016, nu2 = 0.03707359 
  146. Case 49, nu1 = -0.02027986 
  147. Optimum: (array([2., 1., 1.]), 5080.479671904188) 
  148. nu* = -0.01827365, nu2 = -0.01036466 
  149. Case 50, nu1 = -0.01362876 
  150. Optimum: (array([3., 1., 1.]), 8529.957615776362) 
  151. nu* = -0.01390978, nu2 = -0.00819919 
  152. Case 51, nu1 = 0.04542424 
  153. Optimum: (array([2., 1., 1.]), 6826.630564479003) 
  154. nu* = 0.04557630, nu2 = 0.03311890 
  155. Case 52, nu1 = 0.03524515 
  156. Optimum: (array([2., 1., 0.]), 6492.731376237301) 
  157. nu* = 0.03532124, nu2 = 0.03739381 
  158. Case 53, nu1 = 0.01788338 
  159. Optimum: (array([2., 1., 0.]), 7990.775179159326) 
  160. nu* = 0.01792653, nu2 = -0.01074836 
  161. Case 54, nu1 = 0.06768045 
  162. Optimum: (array([3., 1., 1.]), 8498.493405873009) 
  163. nu* = 0.06811626, nu2 = 0.06972287 
  164. Case 55, nu1 = 0.03975904 
  165. Optimum: (array([3., 1., 0.]), 7662.375515336549) 
  166. nu* = 0.03975672, nu2 = 0.04063427 
  167. Case 56, nu1 = 0.00482490 
  168. Optimum: (array([2., 1., 1.]), 8250.620934410092) 
  169. nu* = 0.00462259, nu2 = 0.00212685 
  170. Case 57, nu1 = 0.03142051 
  171. Optimum: (array([2., 1., 0.]), 6303.4946384595405) 
  172. nu* = 0.03127149, nu2 = 0.02815879 
  173. Case 58, nu1 = 0.03863696 
  174. Optimum: (array([3., 1., 1.]), 6596.764338032876) 
  175. nu* = 0.03857647, nu2 = 0.03389534 
  176. Case 59, nu1 = 0.08942656 
  177. Optimum: (array([1., 1., 1.]), 13733.967109078909) 
  178. nu* = 0.08967851, nu2 = 0.14293596 

Интересно, что в восьми из 59-ти случаев программой была установлена тренд-стационарность ($d = q = 0$). Это случаи 6, 7, 8, 18, 27, 29, 35 и 43. Именно в этих случаях значения $\tilde\nu^*$ лежат ближе к $\tilde\nu_2$, чем к $\tilde\nu_1$.
То есть, Combat Zone был прав всё-таки не на все 100%... :wink:

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение24.02.2023, 04:08 


27/06/20
337
Коды посмотрел. Очень рад, что Вы освоились с этой моделью :-)
Начну с главного. Потом ещё напишу.
Кролик в сообщении #1583027 писал(а):
Интересно, что в восьми из 59-ти случаев программой была установлена тренд-стационарность ($d = q = 0$). Это случаи 6, 7, 8, 18, 27, 29, 35 и 43.

Гляньте, пожалуйста, на их коэффициенты AR1 и AR2 для иксов, где он предлагает нулевую интеграцию. Вот за что я не люблю Python, когда дело доходит до статистики, в сравнении с R. Ну вот как так криво можно пакеты писать?!
Я ведь изначально ARIMA на R советовал. :wink:

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение25.02.2023, 02:22 


27/06/20
337
Кролик в сообщении #1582902 писал(а):
оптимальный дрейф $\tilde\nu^*$ не всегда лежит между $\tilde\nu_1$ и $\tilde\nu_2$
Вероятно второе по важности, что код принуждает модель предполагать то, что есть ценный для модели дрифт, и не оценивает модели без дрифта (не сравнивает их по AIC с теми, что уже есть). Поэтому нет возможности выкинуть модели с бесполезной оценкой дрифта, которого на самом деле нет, как код делает с бесполезными избыточными оценками коэффициентов AR2, AR3 и т.д. Благо в модели можно посмотреть стат. значимость дрифта, учёт которого модели навязали.
У результата, который возвращается ARIMA().fit(), есть удобный метод summary(), чтобы посмотреть и p-value и доверительный интервал для дрифта по скоростям.

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение25.02.2023, 23:22 
Аватара пользователя


07/03/06
128
ipgmvq в сообщении #1583043 писал(а):
Коды посмотрел. Очень рад, что Вы освоились с этой моделью :-)
В этом месте стоит указать литературу, которая мне помогла:

[1] Магнус Я.Р., Катышев П.К., Пересецкий А.А. Эконометрика. Начальный курс: Учеб. — 6-е изд., перераб. и доп. - М.: Дело, 2004. - 576 с.
[2] Б. М. Миллер, А. Р. Панков. Теория случайных процессов в примерах и задачах : учебное пособие — М. : ФИЗМАТЛИТ, 2007. - 320 с


Тем не менее я не нашёл книги-справочника по моделям ARMA, для которых может быть указан аналитический вид АКФ.
Действительно, для спектральной функции аппроксимирующего стацинарного процесса $Z_t = \Phi_p^{-1}(L)\Theta_q(L)\varepsilon_t$ всегда может быть указано аналитическое выражение:
$$
S_z(\omega) = \frac{1}{2\pi}\left| \frac{\Theta_q(e^{-i\omega})}{\Phi_q(e^{-i\omega})}\right|^2\;, \qquad \omega\in[-\pi,\, \pi]\; . 
$$В этом вероятно состоит преимущество ARMA-модели. Однако, не для всех комбинаций $p$ и $q$ возможно получить аналитический фид соответствующей автокорреляционной функции. :-(

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение26.02.2023, 00:25 


13/05/14
476
Кролик
Кролик в сообщении #1583287 писал(а):
Тем не менее я не нашёл книги-справочника по моделям ARMA, для которых может быть указан аналитический вид АКФ

Что такое ARMA? Может быть вы имели в виду ARIMA?

 Профиль  
                  
 
 Re: Оценка матожидания стационарной случайной последовательности
Сообщение26.02.2023, 00:42 
Аватара пользователя


22/11/22
620
sqribner48 в сообщении #1583314 писал(а):
Что такое ARMA

Частный случай АRIMA.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 74 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group