如何在python中反转时间序列的季节性日志差异
你能帮我解决这个问题吗,因为我做了很多搜索,但无法解决它。我有一个电力消费的多元数据框架,我正在使用VAR(向量自回归)模型对时间序列进行预测。 我做了预测,但我需要反转时间序列(能量_log _diff),因为我应用了季节性的对数差,使序列平稳,以获得真实的能量值:如何在python中反转时间序列的季节性日志差异,python,time-series,reverse,difference,Python,Time Series,Reverse,Difference,你能帮我解决这个问题吗,因为我做了很多搜索,但无法解决它。我有一个电力消费的多元数据框架,我正在使用VAR(向量自回归)模型对时间序列进行预测。 我做了预测,但我需要反转时间序列(能量_log _diff),因为我应用了季节性的对数差,使序列平稳,以获得真实的能量值: df['energy_log'] = np.log(df['energy']) df['energy_log_diff'] = df['energy_log'] - df['energy_log'].shift(1) 为此,我首
df['energy_log'] = np.log(df['energy'])
df['energy_log_diff'] = df['energy_log'] - df['energy_log'].shift(1)
为此,我首先做了:
df['energy'] = np.exp(df['energy_log_diff'])
这应该会给出两个值之间的能量差滞后365天,但我也不确定这一点
我怎样才能做到这一点?简短回答-您必须以相反的顺序运行逆变换,在您的情况下,这意味着:
energy_log_diff_rev = []
v_prev = v_0
for v in df['energy_log_diff']:
v_prev += v
energy_log_diff_rev.append(v_prev)
或者,如果您喜欢pandas
方式,您可以尝试以下方法(仅适用于一阶差):
注意v_0
值,它是原始值(在差异之前的日志转换之后),在上面的链接中进行了描述
然后,在此步骤之后,您可以执行指数(对数的倒数):
注释/问题:
- 您提到了365的滞后值,但您将数据移动了1。这是否意味着你有年度数据?或者您想这样做-
(在数据每日粒度的情况下)df['energy\u log\u diff']=df['energy\u log']-df['energy\u log'].shift(365)
- 你想从预测中得到相反的时间序列,对吗?还是我遗漏了什么?在这种情况下,您将对预测进行逆变换,而不是对我上面用于解释的数据进行逆变换
last_energy=df['energy'].iloc[-1]
df['energy']=(np.exp(df['energy'].cumsum())*last_energy)
根据季节性:如果您对对数差异进行去季节性处理,则只需在执行上述步骤之前进行加法(或乘法),如果您对原始系列进行去季节性处理,则在执行上述步骤之后再进行加法
energy_orig = np.exp(energy_log_diff_rev)
last_energy=df['energy'].iloc[-1]
df['energy']=(np.exp(df['energy'].cumsum())*last_energy)