平均定向单位矢量-确定性测试,简称ADUV-Determinism Test,是一种用于检测时间序列中时间顺序的确定性程度的方法。其主要原理是计算基于平均定向单位矢量的自相关函数,并根据其是否呈现出明显的周期性来评估时间序列的确定性。
以下是使用Python实现ADUV-Determinism Test的示例代码:
import numpy as np
def aduv_determinism_test(signal):
n = len(signal)
aduv = np.zeros((n-1, 2))
for i in range(n-1):
aduv[i] = np.array([np.cos(np.pi*(signal[i+1]-signal[i])/2),
np.sin(np.pi*(signal[i+1]-signal[i])/2)])
acf = np.correlate(np.sum(aduv, axis=1), np.sum(aduv, axis=1), mode='full')
acf = acf[n-2:]
max_frequency = int(np.ceil(n/2))
freq = np.arange(max_frequency)
period = n/freq
spectrum = np.zeros_like(freq, dtype=float)
for i in range(1, max_frequency):
if period[i] >= 3:
spectrum[i] = sum(acf[1:int(np.floor(period[i]))])
if sum(spectrum) > 0:
return True
else:
return False
该函数需要一个一维的数组signal,其中包含时间序列的每个时间点的值。如果返回True,则表示信号表现出明显的周期性。如果返回False,则表示信号没有明显的周期性。