関数sequence_dispersion_limittime マニュアル

(The documentation of function sequence_dispersion_limittime)

Last Update: 2021/12/8


◆機能・用途(Purpose)

指定した時刻範囲における 時系列データのサンプルの値の分散を計算する。
Calculate the dispersion of the sample values of a time series data in a specified time window.


◆形式(Format)

#include <sequence/statistics.h>
inline double sequence_dispersion_limittime
(struct sequence seq,const double tmin,const double tmax)


◆引数(Arguments)

seq 計算に用いる時系列データを表す構造体。
A structure to represent the time series data used for the computation.
tmin 計算に用いる時刻範囲の下限(\(t_{min}\))。
The lower limit, \(t_{min}\), of the time window used for the calculation.
tmax 計算に用いる時刻範囲の上限(\(t_{max}\))。
The upper limit, \(t_{max}\), of the time window used for the calculation.


◆戻り値(Return value)

\([t_{min},t_{max}]\)の時刻範囲におけるseq.valueの配列要素の分散。 \(t_{min}\), \(t_{max}\)がサンプル時刻でない場合は内側に丸められる。
The dispersion of the array components of seq.value in a time window \([t_{min},t_{max}]\). If \(t_{min}\) and \(t_{max}\) are not at sample times, the time window is rounded inward.


◆使用例(Example)

struct sequence seq;
double sigma2=sequence_dispersion_limittime(seq,2.0,5.0);


◆計算式とアルゴリズム (Formula and algorithm)

\(a_n=\)seq.value[n]とおく。 また時刻\(t_{min}\), \(t_{max}\)に対応する\(n\)を \(n_{min}\), \(n_{max}\)とおく。 この\(a_n\) (\(n=n_{min},n_{min}+1,\cdots,n_{max}\)) の分散\(\sigma^2\)を計算すれば良く、 定義式は以下の通りである。
\[\begin{equation} \sigma^2=\frac{1}{n_{max}-n_{min}+1}\sum_{n=n_{min}}^{n_{max}} (a_n-\mu)^2 \label{eq.sigma2.definition} \end{equation}\] \[\begin{equation} \mu=\frac{1}{n_{max}-n_{min}+1}\sum_{n=n_{min}}^{n_{max}} a_n \label{eq.mu.definition} \end{equation}\] (\ref{eq.mu.definition})式を用いると(\ref{eq.sigma2.definition})式は 以下のように変形できる。 \[\begin{eqnarray} \sigma^2 &=& \frac{1}{n_{max}-n_{min}+1} \sum_{n=n_{min}}^{n_{max}} (a_n^2 - 2\mu a_n + \mu^2) \nonumber \\ &=& \frac{1}{n_{max}-n_{min}+1} \sum_{n=n_{min}}^{n_{max}} a_n^2 \nonumber \\ & & -2\mu \frac{1}{n_{max}-n_{min}+1} \sum_{n=n_{min}}^{n_{max}} a_n \nonumber \\ & & +\mu^2 \frac{1}{n_{max}-n_{min}+1} \sum_{n=n_{min}}^{n_{max}} 1 \nonumber \\ &=& \frac{1}{n_{max}-n_{min}+1} \sum_{n=n_{min}}^{n_{max}} a_n^2 -2\mu^2 + \mu^2 \nonumber \\ &=& \frac{1}{n_{max}-n_{min}+1} \sum_{n=n_{min}}^{n_{max}} a_n^2 -\mu^2 \label{eq.sigma2.arrange1} \end{eqnarray}\] この\(\mu\)は 関数sequence_average_limittime (sequence/statistics.h) によって計算でき、 \[\begin{equation} \frac{1}{n_{max}-n_{min}+1}\sum_{n=n_{min}}^{n_{max}} a_n^2 \label{eq.an2.summation} \end{equation}\] は関数sequence_power2_average_limittime (sequence/statistics.h) によって計算できる。 したがって、関数sequence_average_limittimeの戻り値を\(a\)、 sequence_power2_average_limittimeの戻り値を\(a_2\)とおけば、 分散は \[\begin{equation} \sigma^2=a_2-a^2 \label{eq.sigma2.final} \end{equation}\] によって計算できる。 この関数ではこの方法により分散を計算する。
Let us introduce notations \(a_n=\)seq.value[n]. Let \(n_{min}\) and \(n_{max}\) be the indices \(n\) corresponding to time \(t_{min}\) and \(t_{max}\), respectively. Then the quantity required is the dispersion \(\sigma^2\) for this \(a_n\) (\(n=n_{min},n_{min}+1,\cdots,n_{max}\)), which is defined by eqs. (\ref{eq.sigma2.definition}) and (\ref{eq.mu.definition}). Using eq. (\ref{eq.mu.definition}), eq. (\ref{eq.sigma2.definition}) can be arranged as (\ref{eq.sigma2.arrange1}). The value of \(\mu\) and the quantity defined by eq. (\ref{eq.an2.summation}) can be computed by functions sequence_average_limittime and sequence_power2_average_limittime (both in sequence/statistics.h), respectively. Then the dispersion can be computed by eq. (\ref{eq.sigma2.final}), where \(a\) and \(a_2\) are the return values of functions sequence_average_limittime and sequence_power2_average_limittime, respectively. This function calculates the dispersion by this approach.