由于我进行了很多搜索但无法解决,请问这个问题可以帮助我。我有一个用于电力消耗的多元数据框,并且正在使用时间序列的VAR(向量自动回归)模型进行预测。我做出了预测,但是我需要反转时间序列(energy_log_diff),因为我应用了季节性对数差异以使意甲稳定,以便获得真实的能量值:
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天落后的2个值之间存在能量差,但是我不确定这也不是。
我该怎么做?
简短的回答-您必须以相反的顺序运行逆向转换,这对您而言意味着:
例如,如何将差异化的预测转换回here(它具有R标志,但是没有代码,即使对于Python,想法也相同)。在您的帖子中,您需要计算指数,但是在执行此操作之前,您必须首先求逆。
您可以尝试以下方法:
,则可以尝试执行此操作(仅针对一阶差):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
方式
energy_log_diff_rev = df['energy_log_diff'].expanding(min_periods=0).sum() + v_0
注意
v_0
值,它是原始值(在对数转换后,差值之前),在上面的链接中进行了描述。
然后,在此步骤之后,您可以进行指数(对数的倒数):
energy_orig = np.exp(energy_log_diff_rev)
注意/问题:
df['energy_log_diff'] = df['energy_log'] - df['energy_log'].shift(365)
(在每天的数据粒度情况下)?