ti , tj | are the indices of the time points equally spaced in time |
i, j | are the indices of the averaged time units |
n | is the number of time points in each averaged unit |
σ2 | is scaled to the distance between neighboring time points |
All indices (both time points and units) start from zero.
$ \begin{bmatrix} 0 & 0 & 0 & 0 & 0 & 0 & 0 & ... & 0 \\ 0 & 1 & 1 & 1 & 1 & 1 & 1 & ... & 1 \\ 0 & 1 & 2 & 2 & 2 & 2 & 2 & ... & 2 \\ 0 & 1 & 2 & 3 & 3 & 3 & 3 & ... & 3 \\ 0 & 1 & 2 & 3 & 4 & 4 & 4 & ... & 4 \\ 0 & 1 & 2 & 3 & 4 & 5 & 5 & ... & 5 \\ 0 & 1 & 2 & 3 & 4 & 5 & 6 & ... & 6 \\ ... & ... & ... & ... & ... & ... & ... & ... & ... \\ 0 & 1 & 2 & 3 & 4 & 5 & 6 & ... & min(t_{j}, t_{i}) \end{bmatrix} $
$ \begin{bmatrix} & 0 & 0 & 0 & 0 & 0 & 0 & ... & 0 \\ 0 & 1 & \frac{ 1 }{ \sqrt{ 2 }} & \frac{ 1 }{ \sqrt{ 3 }} & \frac{ 1 }{ 2 } & \frac{ 1 }{ \sqrt{ 5 }} & \frac{ 1 }{ \sqrt{ 6 }} & ... & \frac{ 1 }{ \sqrt{ i }} \\ 0 & \frac{ 1 }{ \sqrt{ 2 }} & 1 & \sqrt{ \frac{ 2 }{ 3 }} & \frac{ 1 }{ \sqrt{ 2 }} & \sqrt{ \frac{ 2 }{ 5 }} & \frac{ 1 }{ \sqrt{ 3 }} & ... & \sqrt{ \frac{ 2 }{ i }} \\ 0 & \frac{ 1 }{ \sqrt{ 3 }} & \sqrt{ \frac{ 2 }{ 3 }} & 1 & \frac{ \sqrt{ 3 } }{ 2 } & \sqrt{ \frac{ 3 }{ 5 }} & \frac{ 1 }{ \sqrt{ 2 }} & ... & \sqrt{ \frac{ 3 }{ i }} \\ 0 & \frac{ 1 }{ 2 } & \frac{ 1 }{ \sqrt{ 2 }} & \frac{ \sqrt{ 3 } }{ 2 } & 1 & \frac{ 2 }{ \sqrt{ 5 }} & \sqrt{ \frac{ 2 }{ 3 }} & ... & \frac{ 2 }{ \sqrt{ i }} \\ 0 & \frac{ 1 }{ \sqrt{ 5 }} & \sqrt{ \frac{ 2 }{ 5 }} & \sqrt{ \frac{ 3 }{ 5 }} & \frac{ 2 }{ \sqrt{ 5 }} & 1 & \sqrt{ \frac{ 5 }{ 6 }} & ... & \sqrt{ \frac{ 5 }{ i }} \\ 0 & \frac{ 1 }{ \sqrt{ 6 }} & \frac{ 1 }{ \sqrt{ 3 }} & \frac{ 1 }{ \sqrt{ 2 }} & \sqrt{ \frac{ 2 }{ 3 }} & \sqrt{ \frac{ 5 }{ 6 }} & 1 & ... & \sqrt{ \frac{ 6 }{ i }} \\ ... & ... & ... & ... & ... & ... & ... & ... & ... \\ 0 & \frac{ 1 }{ \sqrt{ j }} & \sqrt{ \frac{ 2 }{ j }} & \sqrt{ \frac{ 3 }{ j }} & \frac{ 2 }{ \sqrt{ j }} & \sqrt{ \frac{ 5 }{ j }} & \sqrt{ \frac{ 6 }{ j }} & ... & \sqrt{ \frac{ j }{ i }} , j \le i \end{bmatrix} $
$ \begin{bmatrix} \frac{ n }{ 3 } + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & \frac{ n - 1 }{ 2 } & \frac{ n - 1 }{ 2 } & \frac{ n - 1 }{ 2 } & \frac{ n - 1 }{ 2 } & \frac{ n - 1 }{ 2 } & \frac{ n - 1 }{ 2 } & ... & \frac{ n - 1 }{ 2 } \\ \frac{ n - 1 }{ 2 } & \frac{ 4n }{ 3 } + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & ... & n + \frac{ n - 1 }{ 2 } \\ \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & \frac{ 7n }{ 3 } + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & ... & 2n + \frac{ n - 1 }{ 2 } \\ \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & \frac{ 10n }{ 3 } + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & 3n + \frac{ n - 1 }{ 2 } & 3n + \frac{ n - 1 }{ 2 } & 3n + \frac{ n - 1 }{ 2 } & ... & 3n + \frac{ n - 1 }{ 2 } \\ \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & 3n + \frac{ n - 1 }{ 2 } & \frac{ 13n }{ 3 } + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & 4n + \frac{ n - 1 }{ 2 } & 4n + \frac{ n - 1 }{ 2 } & ... & 4n + \frac{ n - 1 }{ 2 } \\ \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & 3n + \frac{ n - 1 }{ 2 } & 4n + \frac{ n - 1 }{ 2 } & \frac{ 16n }{ 3 } + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & 5n + \frac{ n - 1 }{ 2 } & ... & 5n + \frac{ n - 1 }{ 2 } \\ \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & 3n + \frac{ n - 1 }{ 2 } & 4n + \frac{ n - 1 }{ 2 } & 5n + \frac{ n - 1 }{ 2 } & \frac{ 19n }{ 3 } + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & ... & 6n + \frac{ n - 1 }{ 2 } \\ ... & ... & ... & ... & ... & ... & ... & ... & ... \\ \frac{ n - 1 }{ 2 } & n + \frac{ n - 1 }{ 2 } & 2n + \frac{ n - 1 }{ 2 } & 3n + \frac{ n - 1 }{ 2 } & 4n + \frac{ n - 1 }{ 2 } & 5n + \frac{ n - 1 }{ 2 } & 6n + \frac{ n - 1 }{ 2 } & ... & \begin{cases} n(j + \frac{ 1 }{ 3 }) + \frac{ 1 }{ 6n } - \frac{ 1 }{ 2 } & \quad j = i, \\ jn + \frac{ n - 1 }{ 2 } & \quad j < i. \end{cases} \end{bmatrix} $
$ \begin{bmatrix} 1 & \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 8n^{2} - 3n + 1 } } & \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 14n^{2} - 3n + 1 } } & \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 20n^{2} - 3n + 1 } } & \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & ... & \frac{ 3n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 2n^{2} - 3n + 1} } \\ \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 8n^{2} - 3n + 1 } } & 1 & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 14n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 20n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & ... & \frac{ 9n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 8n^{2} - 3n + 1} } \\ \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 14n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 14n^{2} - 3n + 1 } } & 1 & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 20n^{2} - 3n + 1 } } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & ... & \frac{ 15n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 14n^{2} - 3n + 1} } \\ \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 20n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 20n^{2} - 3n + 1 } } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 20n^{2} - 3n + 1 } } & 1 & \frac{ 21n^{2} - 3n }{ \sqrt{ 20n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & \frac{ 21n^{2} - 3n }{ \sqrt{ 20n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 21n^{2} - 3n }{ \sqrt{ 20n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & ... & \frac{ 21n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 20n^{2} - 3n + 1} } \\ \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & \frac{ 21n^{2} - 3n }{ \sqrt{ 20n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1 } } & 1 & \frac{ 27n^{2} - 3n }{ \sqrt{ 26n^{2} - 3n + 1} \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 27n^{2} - 3n }{ \sqrt{ 26n^{2} - 3n + 1} \sqrt{ 38n^{2} - 3n + 1 } } & ... & \frac{ 27n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 26n^{2} - 3n + 1} } \\ \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 21n^{2} - 3n }{ \sqrt{ 20n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & \frac{ 27n^{2} - 3n }{ \sqrt{ 26n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1 } } & 1 & \frac{ 33n^{2} - 3n }{ \sqrt{ 32n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & ... & \frac{ 33n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 32n^{2} - 3n + 1} } \\ \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & \frac{ 21n^{2} - 3n }{ \sqrt{ 20n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & \frac{ 27n^{2} - 3n }{ \sqrt{ 26n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & \frac{ 33n^{2} - 3n }{ \sqrt{ 32n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1 } } & 1 & ... & \frac{ 39n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 38n^{2} - 3n + 1} } \\ ... & ... & ... & ... & ... & ... & ... & ... & ... \\ \frac{ 3n^{2} - 3n }{ \sqrt{ 2n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} } & \frac{ 9n^{2} - 3n }{ \sqrt{ 8n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} } & \frac{ 15n^{2} - 3n }{ \sqrt{ 14n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} } & \frac{ 21n^{2} - 3n }{ \sqrt{ 20n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} } & \frac{ 27n^{2} - 3n }{ \sqrt{ 26n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} } & \frac{ 33n^{2} - 3n }{ \sqrt{ 32n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} } & \frac{ 39n^{2} - 3n }{ \sqrt{ 38n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} } & ... & \frac{ 6jn^{2} + 3n^{2} - 3n }{ \sqrt{ 6in^{2} + 2n^{2} - 3n + 1 } \sqrt{ 6jn^{2} + 2n^{2} - 3n + 1} }, j < i \end{bmatrix} $
import numpy as np
import matplotlib.pyplot as plt
def autocorr_formula(j0: int, i0: int, n: int) -> float:
try:
n = int(n)
except:
raise TypeError('The variable n passed into the function autocorr_formula() cannot be converted into the int type')
if n <= 0:
raise ValueError('The variable n passed into the function autocorr_formula() must be a positive integer')
try:
i = abs(int(i0))
except:
raise TypeError('The variable i passed into the function autocorr_formula() cannot be converted into the int type')
try:
j = abs(int(j0))
except:
raise TypeError('The variable j passed into the function autocorr_formula() cannot be converted into the int type')
if int(j0)*int(i0) < 0:
raise ValueError('The integers j and i passed into the function autocorr_formula() must be of the same sign')
elif j == i:
return 1
elif j > i:
i, j = j, i
return float((6.0 * j * np.power(n, 2) + 3.0 * np.power(n, 2) - 3.0 * n) / (np.sqrt(6.0 * i * np.power(n, 2) + 2.0 * np.power(n, 2) - 3 * n + 1) * np.sqrt(6.0 * j * np.power(n, 2) + 2.0 * np.power(n, 2) - 3 * n + 1)))
def autocov_formula(j0: int, i0: int, n: int) -> float:
try:
n = int(n)
except:
raise TypeError('The variable n passed into the function autocov_formula() cannot be converted into the int type')
if n <= 0:
raise ValueError('The variable n passed into the function autocov_formula() must be a positive integer')
try:
i = abs(int(i0))
except:
raise TypeError('The variable i passed into the function autocov_formula() cannot be converted into the int type')
try:
j = abs(int(j0))
except:
raise TypeError('The variable j passed into the function autocov_formula() cannot be converted into the int type')
if int(j0)*int(i0) < 0:
raise ValueError('The integers j and i passed into the function autocov_formula() must be of the same sign')
elif j == i:
return var_formula(j=j, n=n)
elif j > i:
j = i
return n * j + (n - 1.0)/2.0
def var_formula(j: int, n: int) -> float:
try:
n = int(n)
except:
raise TypeError('The variable n passed into the function var_formula() cannot be converted into the int type')
if n <= 0:
raise ValueError('The variable n passed into the function var_formula() must be a positive integer')
try:
j = abs(int(j))
except:
raise TypeError('The variable j passed into the function var_formula() cannot be converted into the int type')
return n * (j + 1.0/3.0) + 1.0/(6.0 * n) - 0.5
def autocorr_simul(j: int, i: int, data: np.ndarray, n: int) -> float:
ro = autocorr_formula(j0=j, i0=i, n=n)
return float(np.corrcoef(x=data[:,i], y=data[:,j])[0,1] / (1.0 - (1.0 - np.power(ro, 2))/(2.0 * data.shape[0]) + 1.0/np.power(data.shape[0],2) ))
def autocov_simul(j: int, i: int, data: np.ndarray) -> float:
return float(np.cov(m=data[:,i], y=data[:,j], bias=False)[0,1])
def var_simul(j: int, data: np.ndarray) -> float:
return float(np.var(a=data[:,j], ddof=1))
duration = 600
n = 6
sample = 100000
i = 29
j = 5
if i > duration // n:
i = duration // n
if j > duration // n:
j = duration // n
wiener = np.random.normal(size=((sample, (duration // n) * n - 1)))
wiener = np.hstack((np.zeros((sample,1)),wiener))
wiener = wiener.cumsum(axis=1).reshape((sample, (duration // n), n)).mean(axis=2)
print('The simulation with %d time points in total\naveraged over %d time points for the units %d and %d.' % (duration, n, j, i))
print('The time points and units are indexed from zero.')
print('\t\t\t\tby formula\tMonte Carlo')
print('Autocorrelation coefficient:\t%10.7f\t%10.7f' % (autocorr_formula(i0=i, j0=j, n=n), autocorr_simul(i=i, j=j, data=wiener, n=n)))
print('Autocovariance:\t\t\t%.7f\t%.7f' % (autocov_formula(i0=i, j0=j, n=n), autocov_simul(i=i, j=j, data=wiener)))
print('Variance of the unit %3d:\t%.7f\t%.7f' % (j, var_formula(j=j, n=n), var_simul(j=j, data=wiener)))
The simulation with 600 time points in total averaged over 6 time points for the units 5 and 29. The time points and units are indexed from zero. by formula Monte Carlo Autocorrelation coefficient: 0.4368816 0.4364241 Autocovariance: 32.5000000 32.5758148 Variance of the unit 5: 31.5277778 31.6388647