Язык Wolfram Language

Операции с временными рядами

Использование бинирования данных для хранения временных рядов

Значения времени прибытия в PoissonProcess независимы друг от друга и представляют экспоненциальное распределение, ExponentialDistribution. Мы можем симулировать PoissonProcess с помощью Databin согласно временными интервалам, заданным в экспоненциальном распределении.

In[1]:=
Click for copyable input
SeedRandom["11"]; \[Lambda] = 0.5; times = RandomVariate[ExponentialDistribution[\[Lambda]], 30];

Создадим бин с данными, Databin.

In[2]:=
Click for copyable input
bin = CreateDatabin[]
Out[2]=

Будем отправлять 1 в бин с данными согласно заданным временным интервалам.

In[3]:=
Click for copyable input
Table[DatabinAdd[bin, <|"arrivals" -> 1|>]; Pause[t], {t, times}];

Следующим образом выглядит сигнал с временными штампами.

In[4]:=
Click for copyable input
TimeSeries[bin]
Out[4]=

Извлечем временной ряд TimeSeries.

In[5]:=
Click for copyable input
ts1 = TimeSeries[bin]["arrivals"]
Out[5]=

Отметим, что данный временной ряд является нерегулярным.

In[6]:=
Click for copyable input
RegularlySampledQ[ts1]
Out[6]=

Предположим, что наша выборка данных регулярна, согласно функции TemporalRegularity, для того, чтобы функция Accumulate не осуществляла интерполяцию временного ряда относительно коэффициента минимального увеличения времени.

In[7]:=
Click for copyable input
ts2 = Accumulate[TimeSeries[ts1, TemporalRegularity -> True]]
Out[7]=
In[8]:=
Click for copyable input
DateListStepPlot[ts2, Joined -> False, PlotTheme -> "Detailed"]
Out[8]=

Рассчитаем параметр PoissonProcess и сравним его с параметром ExponentialDistribution, используемого для симуляции временных штампов.

In[9]:=
Click for copyable input
{FindProcessParameters[ts2, PoissonProcess[\[Mu]]], \[Lambda]}
Out[9]=

Родственные примеры

de en es fr ja ko pt-br zh