需要帮助重新调整 python fill_ Between 与数据点

问题描述 投票:0回答:1

警报!在这里问这么入门的问题我感到很尴尬!!!!

大家好,我一直在从事一个涉及时间序列总电子含量数据的项目。我的目标是应用统计分析并发现地震引起的 TEC 异常。

我正在关注这篇关于滑动 IQR 方法的研究论文。但由于某种原因,我没有得到论文中给出的公式所示的结果。所以我决定使用滚动平均值+1.6 STD方法。

问题是当我使用 ax.fill_ Between(x1 = index, y1 = ub, y2=lb) 方法时,我的置信区间带绘制得比数据点更进一步。请参阅给定的图以更好地理解。

这是我目前正在做的事情:

df = DAEJ.copy()
window = 12
hourly = df.resample(rule="h").median()
hourly["ma"] = hourly["TEC"].rolling(window=window).mean()
hourly["hour"] = hourly.index.hour
hourly["std_err"] = hourly["TEC"].rolling(window=window).std()
hourly["ub"] = hourly["ma"] + (1.67* hourly["std_err"])
hourly["lb"] = hourly["ma"] - (1.67* hourly["std_err"])
hourly["sig2"] = hourly["TEC"].rolling(window=window).var()
hourly["kur"] = hourly["TEC"].rolling(window=window).kurt()
hourly["pctChange"] = hourly.TEC.pct_change(12, fill_method="bfill")
hourly = hourly.dropna()
dTEC = hourly[(hourly["TEC"] > hourly["ub"])]



fig, ax = plt.subplots(figsize=(12,4))
hourly["TEC"].plot(ax=ax, title="TEC Anomaly", label="Station: DAEJ")
ax.fill_between(x=hourly.index, y1=hourly["ub"], y2=hourly["lb"], color="red", label="Conf Interval", alpha=.4)
ax.legend()

这是我得到的结果!

TEC Anomaly detection using rolling std method

如给定的图中所示,数据和彩色带没有正确对齐,我知道在计算 12 小时窗口的滚动平均值后将产生 12 小时的偏移值,但即使在删除第一个值之后,我仍然没有得到对齐的数字。

python pandas outliers rolling-computation anomaly-detection
1个回答
0
投票

您需要使用 rolling

center=True
 窗口居中:

window = 12
hourly = df.resample(rule="h").median()
hourly["ma"] = hourly["TEC"].rolling(window=window, center=True).mean()
hourly["hour"] = hourly.index.hour
hourly["std_err"] = hourly["TEC"].rolling(window=window, center=True).std()
hourly["ub"] = hourly["ma"] + (1.67* hourly["std_err"])
hourly["lb"] = hourly["ma"] - (1.67* hourly["std_err"])
hourly["sig2"] = hourly["TEC"].rolling(window=window, center=True).var()
hourly["kur"] = hourly["TEC"].rolling(window=window, center=True).kurt()
hourly["pctChange"] = hourly.TEC.pct_change(12, fill_method="bfill")
hourly = hourly.dropna()
dTEC = hourly[(hourly["TEC"] > hourly["ub"])]

输出:

© www.soinside.com 2019 - 2024. All rights reserved.