下面是一个使用Python编写的简单示例代码,用于检测不均匀时间序列中的峰值。
import numpy as np
def detect_peaks(time, data, threshold):
# 计算数据的一阶差分
diff = np.diff(data)
# 初始化峰值列表
peaks = []
# 遍历数据的差分序列
for i in range(1, len(diff) - 1):
# 判断当前差分是否为正值并且大于阈值,并且前一个差分为负值,后一个差分也为负值
if diff[i-1] < 0 and diff[i] > threshold and diff[i+1] < 0:
# 将峰值的索引添加到峰值列表中
peaks.append(i)
# 返回峰值的时间和数据值
peak_time = time[peaks]
peak_data = data[peaks]
return peak_time, peak_data
# 示例数据
time = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
data = np.array([1, 2, 3, 2, 5, 4, 3, 2, 1, 2])
# 设置阈值
threshold = 0.5
# 检测峰值
peak_time, peak_data = detect_peaks(time, data, threshold)
# 打印峰值的时间和数据值
print("峰值时间:", peak_time)
print("峰值数据:", peak_data)
上述代码中,detect_peaks
函数用于检测峰值。它首先计算时间序列数据的一阶差分,然后通过判断差分的正负和是否大于阈值来确定峰值的位置。最后,返回峰值的时间和数据值。
在示例数据中,时间序列为[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
,对应的数据为[1, 2, 3, 2, 5, 4, 3, 2, 1, 2]
。阈值设置为0.5。运行代码后,将输出峰值的时间和数据值。
请注意,此示例代码仅演示了一种简单的峰值检测方法,并可能不适用于所有情况。如果需要更精确或更复杂的峰值检测方法,您可能需要参考相关的文献或使用专门的库或工具。
上一篇:不均匀列的Parquet文件
下一篇:不均匀时间序列的年度趋势分析