时间序列中的分布滞后动态模型
创作时间:
作者:
@小白创作中心
时间序列中的分布滞后动态模型
引用
1
来源
1.
https://www.atyun.com/65990.html
时间序列数据往往表现出滞后效应,即变量的过去值会影响当前值。动态模型通过纳入解释变量的滞后值来捕捉这些依赖关系。分布式滞后模型(DLM)是动态模型中重要的一类,它明确考虑了过去值如何在多个时间步长上对当前值产生影响。
什么是分布式滞后模型?
分布式滞后模型假设时间t时的因变量依赖于一个或多个自变量当前和过去的值。一个包含一个解释变量Xt的简单分布式滞后模型如下所示:
其中:
- Yt 是因变量(例如,销售额、温度或产量)。
- Xt 是自变量(例如,广告支出、天气条件或经济指标)。
- k 是最大滞后长度。
- βi 是决定每个滞后项影响的系数。
- ϵt 是误差项。
如果βi在i较小时的值较大,并且随着时间的推移而减小,那么Xt的影响会迅速衰减。如果βi在较长滞后时间内仍然显著,那么X的过去值会有持久的影响。如果某些βi值为负,那么Xt的影响可能是振荡的(例如,经济数据中的周期)。
在Python中估计分布式滞后模型
让我们以具有分布式滞后效应的消费者价格指数(CPI)为例来说明分布式滞后模型。
from pandas_datareader import data as web
import numpy as np
import pandas as pd
import statsmodels.api as sm
from datetime import datetime
def get_fred_data(series_id, start_date="2000-01-01", end_date=None):
if end_date is None:
end_date = datetime.now().strftime("%Y-%m-%d")
df = web.DataReader(series_id, 'fred', start_date, end_date)
return df.dropna()
series_id = "CPIAUCSL"
cpi_data = get_fred_data(series_id)
cpi_data = cpi_data.pct_change().dropna()
cpi_data = cpi_data.rename(columns={series_id: "CPI"})
cpi_data["Date"] = cpi_data.index
for lag in range(1, 3):
cpi_data[f"CPI_lag{lag}"] = cpi_data["CPI"].shift(lag)
cpi_data.dropna(inplace=True)
X_lags = ["CPI", "CPI_lag1", "CPI_lag2"]
X_matrix = sm.add_constant(cpi_data[X_lags])
y_vector = cpi_data["CPI"]
model = sm.OLS(y_vector, X_matrix).fit()
print(model.summary())
optimal_lag = np.argmin(aic_values) + 1
print(f"Optimal number of lags: {optimal_lag}")
time_column = "Date"
value_columns = ["CPI", "CPI_lag1"]
plot_time_series(cpi_data, time_column, value_columns, title="CPI Time Series")
plot_decomposition(cpi_data["CPI"], model="additive", title="CPI Decomposition")
选择滞后数量的方法
我们需要一种方法来为我们的模型选择合适的滞后数量。滞后数量太少可能会遗漏重要的延迟效应,而滞后数量太多则会引入不必要的复杂性。
选择滞后的方法:
- 信息准则(AIC/BIC):使用赤池信息准则(AIC)或贝叶斯信息准则(BIC)来比较具有不同滞后长度的模型。
- 系数的显著性:剔除系数在统计上不显著的滞后项。
- 偏自相关函数(PACF):检查PACF以确定显著滞后的数量。
使用AIC选择最佳滞后数量:
import statsmodels.tsa.stattools as ts
max_lags = 10
aic_values = []
for lag in range(1, max_lags + 1):
temp_data = cpi_data.copy()
for l in range(1, lag + 1):
temp_data[f"CPI_lag{l}"] = temp_data["CPI"].shift(l)
temp_data.dropna(inplace=True)
X_lags = ["CPI"] + [f"CPI_lag{l}" for l in range(1, lag + 1)]
X_matrix = sm.add_constant(temp_data[X_lags])
y_vector = temp_data["CPI"]
model = sm.OLS(y_vector, X_matrix).fit()
aic_values.append(model.aic)
optimal_lag = np.argmin(aic_values) + 1
print(f"Optimal number of lags: {optimal_lag}")
我们消费者价格指数(CPI)数据的最佳滞后为1。
分布式滞后模型的应用
分布式滞后模型在各个领域都有广泛应用:
- 经济学:建模货币政策变化对通货膨胀和失业率的影响。
- 市场营销:了解广告活动如何影响未来销售。
- 能源需求预测:估算温度变化对电力消耗的延迟影响。
- 公共政策:衡量税收变化如何随时间影响消费者支出。
分布式滞后模型是一个框架,用于观察自变量过去值如何影响当前结果。这让我们能够深入了解延迟关系,并提高预测准确性。
热门推荐
牙科小知识:补牙后出现疼痛可以采取哪些缓解措施?
成都至峨眉山高速,新进展来了
4个方法教你电脑如何快速截屏截图!
河南人为啥选择胡辣汤?
作曲家谷建芬:一生清贫,创作歌曲无数,晚年丧夫丧女让人心痛
小产权房有房产证吗
中国10大名山投票评选出炉,黄山、庐山榜上有名,第一名当之无愧
长江与黄河这两条“母亲河”有什么“性格”差异?
大连理工团队开发新型纳米矿物材料,为骨质疏松症治疗带来新希望
爆炸性环境中作业使用工具要求
70% 哮喘恶化竟因过敏?非过敏患者也需警惕“隐形炸弹”
发电机维护指南:延长其使用寿命并确保最佳性能
多酚是什么?多酚类功效?了解这个强效抗氧化物如何提升健康!
“探索美国武术的独特魅力与发展历程”
崇州周边游景点推荐,崇州市周边一日游
血小板减少的原因及分类
头油怎么治?掌握6大原因,5招控油技巧+6种食物,摆脱扁塌油头!
燕南古郡气象新!解码古城正定的文化自信样本
焊接作业的安全隐患和防范要点!
美国留学所需的英语考试详解
深入解析塑料制品:常见类型、成分、市场价格及其意义
装修师傅如何管理客户群
反复头晕头痛竟是颈动脉狭窄惹的祸 专家呼吁高危人群每年应做一次颈部血管超声检查
材料采购流程图及说明 材料采购流程
这4所高校将更名为大学,有望2025年实现,在校生太幸运了!
全自动洗衣机排水问题全解析:方法、故障排查与维护建议
苹果手机如何轻松搞定证件照?证件照制作指南,一键开启便捷之旅
合法合规投资指南:从入门到实践
能便捷管理资产清查的管理办法是啥?
苏东坡10首诗词,智慧通透,治愈内耗