以下是一个简单的Python程序,用于判断时序数据是否发生频率变化异常并返回异常时间点:
import numpy as np
from scipy import stats
def detect_frequency_change(data, threshold=3.0):
"""
data: 时序数据
threshold: 用于判定异常的阈值(默认为3.0)
"""
# 计算频率变化率
change_rate = np.diff(data) / data[:-1]
# 计算频率变化率的均值和标准差
mean, std = np.mean(change_rate), np.std(change_rate)
# 计算频率变化率的Z分数
z_scores = stats.zscore(change_rate)
# 找到异常时间点
abnormal_indices = np.where(np.abs(z_scores) > threshold)[0]
# 返回异常时间点
return abnormal_indices