基于时间序列数据的叠加周期分析(SEA)实现需求
叠加周期分析(SEA)实现方案与可视化
核心分析逻辑说明
- 每个事件的时间窗口:事件开始前3天(记为**-3到0天**)、开始后7天(记为0到7天),总计10天的时间序列
- 叠加分析核心:将所有事件对应时间窗口的数据对齐到事件起始点(0时刻),计算均值/分位数等统计量,提取群体事件的共性特征
数据处理与分析步骤
1. 加载样本数据与CDF数据
- 读取
HILDCAA_list_SEA样本数据,提取事件的起始时间戳 - 加载CDF格式的观测数据,解析出目标变量的时间序列(如地磁指数、太阳风参数等)
2. 时间窗口对齐与数据提取
对每个事件执行:
- 根据事件起始时间,截取起始时间-3天到起始时间+7天的时间序列
- 将所有截取的序列按时间偏移量(相对于事件起始点)对齐,构建二维数组(行:事件;列:时间偏移)
3. 统计量计算
- 计算每个时间偏移点的均值、中位数、25%/75%分位数(用于绘制误差带)
- 可选:计算事件间的标准差或异常值占比
4. 可视化实现(匹配轴参考示例)
- X轴:时间偏移(从-3到7,单位:天),标注0时刻为事件起始点
- Y轴:目标变量的统计值(如Dst指数、AE指数等)
- 绘图元素:均值曲线+分位数填充带,可按需添加单个事件的散点/曲线作为参考
优化后的Python代码示例
import numpy as np import pandas as pd import matplotlib.pyplot as plt from spacepy import pycdf # 用于读取CDF数据 # 1. 加载事件列表 hildcaa_events = pd.read_csv('HILDCAA_list_SEA.csv') # 假设样本数据为CSV格式 event_starts = pd.to_datetime(hildcaa_events['start_time']) # 2. 加载CDF数据 cdf_data = pycdf.CDF('your_data.cdf') time_array = pd.to_datetime(cdf_data['Epoch'][:]) target_var = cdf_data['dst'][:] # 替换为你的目标变量,如AE、Bz等 cdf_data.close() # 3. 构建对齐后的数据集 time_offsets = np.arange(-3, 8) # -3到7天,共10个时间点 aligned_data = [] for start in event_starts: # 计算每个时间偏移对应的时间点 window_times = [start + pd.Timedelta(days=offset) for offset in time_offsets] # 提取对应时间点的变量值(线性插值填充缺失) event_data = np.interp([t.timestamp() for t in window_times], time_array.astype(int)/10**9, target_var) aligned_data.append(event_data) aligned_data = np.array(aligned_data) # 4. 计算统计量 mean_vals = np.mean(aligned_data, axis=0) q25 = np.percentile(aligned_data, 25, axis=0) q75 = np.percentile(aligned_data, 75, axis=0) # 5. 可视化 plt.figure(figsize=(10, 6)) plt.plot(time_offsets, mean_vals, color='darkred', linewidth=2, label='均值') plt.fill_between(time_offsets, q25, q75, color='lightcoral', alpha=0.3, label='25%-75%分位数') # 标注事件起始点 plt.axvline(x=0, color='black', linestyle='--', label='事件起始') # 设置轴标签与样式 plt.xlabel('相对于事件起始的时间偏移(天)') plt.ylabel('Dst指数(nT)') # 替换为你的变量名称 plt.title('HILDCAA事件叠加周期分析') plt.legend() plt.grid(alpha=0.3) plt.tight_layout() plt.show()
关键注意事项
- 若CDF数据时间分辨率不是日度,需先做日度聚合处理(如取每日均值/极值)
- 处理缺失数据时,可选择插值填充或剔除缺失过多的事件
- 可视化时可根据参考示例调整颜色、线条样式、轴范围等参数
内容的提问来源于stack exchange,提问作者Peculiar
相关产品推荐
相关产品推荐

