如何基于高精度时间序列提升低精度序列的时间精度?
高精度时间序列的低精度缺失值填补方案
我们有两个按asof合并的时间序列:一个是微/纳秒级高精度时钟序列(ts_us),另一个是仅毫秒级精度的序列(ts_ms)。已知两台时钟的同步精度约10微秒,时间漂移极低,需要填补ts_ms的缺失值,将其精度提升至与ts_us一致的近似微秒级。
示例数据
| ts_us | ts_ms | |
|---|---|---|
| 0 | 1668276142.555387 | 1668276142.555000 |
| 1 | 1668276142.563293 | nan |
| 2 | 1668276142.579397 | nan |
| 3 | 1668276142.580617 | 1668276142.581000 |
| 4 | 1668276142.600136 | nan |
| 5 | 1668276142.612303 | nan |
| 6 | 1668276142.625071 | 1668276142.625000 |
| 7 | 1668276142.636279 | nan |
| 8 | 1668276142.653311 | nan |
| 9 | 1668276142.670604 | 1668276142.671000 |
| 10 | 1668276142.690874 | nan |
| 11 | 1668276142.708148 | nan |
| 12 | 1668276142.724188 | 1668276142.724000 |
模拟初始合并DataFrame的代码
import pandas as pd import time data = [] for x in range(100): ts = {'ts_us': time.time()} if x % 3 == 0: ts['ts_ms'] = round(time.time(), 3) data.append(ts.copy()) time.sleep(1e-6) df = pd.DataFrame(data)
方案对比与实现
1. 简单线性插值(pandas.interpolate)
df.interpolate(method='linear')是最直接的方案,因为已知时间漂移极低,线性插值的误差会控制在10微秒的同步精度范围内,完全满足需求。实现代码:
# 基于ts_us的时间轴做线性插值,填充前后缺失值 df['ts_ms_interpolated'] = df['ts_ms'].interpolate(method='linear', limit_direction='both')
优势:计算快、实现简单,无需额外依赖。
2. 时钟漂移线性拟合(更精准的确定性方案)
如果想进一步消除两台时钟间的微小漂移,可以用有效数据点拟合线性模型,再预测缺失值:
import numpy as np from sklearn.linear_model import LinearRegression # 提取有有效值的行 valid_mask = df['ts_ms'].notna() X = df.loc[valid_mask, 'ts_us'].values.reshape(-1, 1) y = df.loc[valid_mask, 'ts_ms'].values # 拟合线性模型:ts_ms = a*ts_us + b model = LinearRegression() model.fit(X, y) # 预测所有缺失值 df['ts_ms_drift_corrected'] = model.predict(df['ts_us'].values.reshape(-1, 1))
这种方法考虑了时钟间的系统漂移,比简单线性插值精度更高,尤其在数据跨度较大时效果更明显。
3. 概率性漂移估算(贝叶斯方法)
如果需要量化预测的不确定性,可以用贝叶斯线性回归建模,同时给出预测值的置信区间:
import statsmodels.api as sm # 给特征添加截距项 X_sm = sm.add_constant(X) # 贝叶斯线性回归拟合 model_bayes = sm.BayesGLS(y, X_sm) results = model_bayes.fit() # 预测所有值及置信区间 df['ts_ms_bayes_pred'] = results.predict(sm.add_constant(df['ts_us'].values.reshape(-1, 1))) # 可获取模型参数的置信区间 param_conf_int = results.conf_int()
这种方案适合需要明确预测误差范围的场景,符合你提到的“概率性时间漂移估算”需求。
总结
- 追求简单高效:线性插值完全够用,误差在同步精度范围内。
- 追求更高精度:时钟漂移线性拟合是最优选择,平衡了精度与计算成本。
- 需要概率性结果:贝叶斯线性回归能提供预测值的不确定性量化。
内容的提问来源于stack exchange,提问作者PavelP
相关产品推荐
相关产品推荐

