首页 > 其他分享 >计量经济学(六)——时间序列滞后变量模型

计量经济学(六)——时间序列滞后变量模型

时间:2024-10-15 21:59:06浏览次数:1  
标签:变量 模型 BIC 计量经济学 阶数 滞后 序列 AIC

滞后变量模型(Lagged Variable Models)是一种时间序列分析方法,主要通过引入自变量和因变量的滞后项来解释当前变量的行为。该模型在经济学、金融学中广泛应用,尤其在预测和政策评估时。滞后变量反映了过去事件对当前变量的持续影响,揭示变量间的动态关系。它包括自回归模型、分布滞后模型及自回归分布滞后模型等,通常通过最小二乘法估计模型参数,应用时需注意滞后阶数的选择、多重共线性及自相关问题。

一、滞后变量模型

滞后变量模型是通过引入过去时期的变量值作为解释变量,来捕捉变量之间的动态关系。例如,在销售量的预测模型中,当前的销售额可能不仅受当前的广告费用影响,还可能受到过去几个月广告费用的影响。因此,我们将广告费用的滞后值作为解释变量,构建滞后变量模型。设\(y_t\)表示时间\(t\)的因变量,\(x_t\)表示时间\(t\)的解释变量,\(L\)表示滞后算子,那么滞后变量模型可以表达为:

\[y_t = \alpha + \beta_1 x_t + \beta_2 x_{t-1} + \beta_3 x_{t-2} + \cdots + \epsilon_t \]

其中,\(x_{t-1}, x_{t-2}, \ldots\)为解释变量的滞后值,\(\epsilon_t\)误差项。通过滞后项的引入,模型可以考虑解释变量的长期影响。

1.1 滞后变量模型的类型

滞后变量模型主要有以下几种形式:

  • 自回归模型(Autoregressive Model, AR):该模型仅考虑因变量自身的滞后值,形如:

    \[y_t = \alpha + \beta_1 y_{t-1} + \beta_2 y_{t-2} + \cdots + \epsilon_t \]

    自回归模型用于分析当前因变量如何受过去自身值的影响。
  • 分布滞后模型(Distributed Lag Model, DLM):该模型考虑解释变量的滞后值,形如:

    \[y_t = \alpha + \beta_1 x_t + \beta_2 x_{t-1} + \beta_3 x_{t-2} + \cdots + \epsilon_t \]

    用于分析因变量如何受解释变量当前和过去值的影响。
  • 自回归分布滞后模型(Autoregressive Distributed Lag Model, ARDL):该模型结合了因变量和解释变量的滞后值,形如:

    \[y_t = \alpha + \beta_1 y_{t-1} + \beta_2 y_{t-2} + \cdots + \gamma_1 x_t + \gamma_2 x_{t-1} + \cdots + \epsilon_t \]

    用于捕捉更复杂的动态关系。

1.2 滞后变量模型的作用

滞后变量模型在时间序列分析中有着广泛的应用和重要作用,具体体现在以下几个方面:

动态影响分析
滞后变量模型通过引入解释变量的滞后项,能够揭示解释变量对因变量的短期和长期影响。这在经济学、金融学等领域尤为重要。例如,在评估政府财政政策时,经济增长的反应往往不是即时的,可能会在多个时间段逐渐显现。滞后变量模型能够帮助研究人员跟踪政策效果随时间的演变,量化短期与长期的影响。例如,在经济增长模型中,过去的投资、政府支出等政策变量对当前经济增长的影响不仅体现在一个时间点上,还会通过滞后项体现出逐步影响。此外,滞后变量模型也广泛应用于政策实施评估中。例如,一个经济政策的实施可能需要若干个季度或年度才能对GDP、通胀或失业率产生明显影响。通过滞后变量模型,研究者可以分析政策实施对经济变量的延迟影响,并量化这些影响的持久性。
增强预测能力
滞后变量模型通过使用过去的数据,显著提高了预测未来的准确性。特别是对于具有周期性或趋势性的时间序列数据,滞后变量模型可以有效捕捉数据的惯性和延续性。例如,在宏观经济预测、商品销售预测等领域,历史数据常常包含了未来可能的发展趋势。滞后变量模型通过将历史信息纳入到当前预测中,能够提高对未来走势的精确预测。例如,在企业销售预测中,滞后变量模型可以根据之前几个月或几年的销售数据来预测未来的销售趋势。由于销售数据可能受季节、市场需求波动等因素的影响,滞后变量模型通过考虑这些滞后影响,能够捕捉销售量的周期性变化,从而为企业决策提供更为精准的预测依据。
解决自相关问题
在时间序列分析中,自相关是指当前观测值与其滞后值之间存在相关性,如果不加处理会影响模型的估计准确性。滞后变量模型通过引入解释变量的滞后项,有效解决了自相关问题。这不仅减少了模型中的误差项相关性,还提高了估计参数的可靠性。
时间序列中的自相关问题是常见现象,尤其是在经济、金融等领域,数据往往呈现出某种趋势或周期性。滞后变量模型通过合理引入滞后值,减少了误差项的自相关性,从而提高模型的稳健性。例如,利用滞后变量可以调整股价、汇率等金融数据中的噪声和趋势效应,从而构建出更为稳定的模型。
多元动态关系的建模
滞后变量模型不仅限于单个变量的滞后分析,还可以引入多个解释变量的滞后项,用于建模变量之间的动态关系。尤其是在多元时间序列分析中,滞后变量模型可以帮助理解多个变量之间的相互作用。例如,在分析经济体中通货膨胀、利率、货币供应量等宏观经济变量之间的动态关系时,通过滞后变量模型可以捕捉变量之间的交互效应以及它们随时间的变化。
滞后阶数的选择
建模时,滞后阶数的选择是一个关键问题。滞后阶数的确定通常需要通过信息准则(如AIC、BIC)或通过对自相关函数(ACF)和偏自相关函数(PACF)的分析进行判断。如果选择过多的滞后项,可能会导致模型过度拟合,从而降低预测能力;如果滞后阶数不足,模型可能无法充分捕捉数据的动态特征。因此,滞后阶数的合理选择对于滞后变量模型的准确性至关重要。
提高模型性能
为了提高滞后变量模型的性能,通常可以结合其他建模技术,如引入广义最小二乘法(GLS)来解决异方差性问题,或者结合自回归移动平均模型(ARMA)等方法以处理复杂的时间序列结构。GLS方法能够处理时间序列中误差项的异方差性问题,而ARMA模型则可以有效建模序列中的自相关性和随机扰动。这些技术的结合,可以进一步提升滞后变量模型的适用性和准确性。例如,使用ARMA模型与滞后变量模型的结合,可以在股票市场预测中提高模型的稳定性和预测精度。广义最小二乘法则可以在存在异方差性时,改进模型的估计,确保参数的稳健性。

二、滞后变量模型的估计和检验

滞后变量模型(Lagged Variable Models)的估计与检验是时间序列分析中的核心步骤,通过估计滞后变量对当前因变量的影响,帮助研究者理解动态关系。滞后变量模型常采用普通最小二乘法(OLS)进行估计。OLS通过最小化误差平方和来确定模型中的参数值。模型的基本形式是:

\[Y_t = \beta_0 + \beta_1 X_{t-1} + \beta_2 Y_{t-1} + \epsilon_t \]

其中,\(X_{t-1}\)和\(Y_{t-1}\)是解释变量和因变量的滞后项。

2.1 检验步骤

滞后变量模型的估计完成后,需通过一系列统计检验来评估模型的适用性:

  • 显著性检验
    对于每个滞后项的回归系数,通常进行t检验,以检验这些系数是否显著不同于零。显著性检验可以判定滞后变量对当前因变量的影响强度。如果滞后变量的回归系数通过显著性检验,则表明它对模型有显著贡献。
  • 模型拟合优度检验
    通过**决定系数(\(R^2\))和调整后的\(R^2\)值,来衡量模型对数据的拟合程度。\(R^2\)值越高,模型解释的变量波动部分越多。调整后的\(R^2\)可以避免由于引入无关变量而导致的虚高拟合度。
  • 多重共线性检验
    滞后变量模型中,变量之间可能存在较高的相关性,这会引起多重共线性问题。通过计算方差膨胀因子(VIF),可以检测多重共线性。如果VIF值超过一定阈值,说明变量之间存在高度相关性,从而可能影响回归系数的估计精度。
  • 自相关检验
    误差项可能存在自相关问题,即当前误差项与其滞后值相关联,这会影响参数估计的无偏性。可以通过杜宾-沃森(Durbin-Watson)检验来检测误差项是否自相关。该检验的统计量在0到4之间变化,值接近2时表示误差项无自相关。

2.2 滞后变量模型的缺陷

尽管滞后变量模型在动态分析和预测中具有重要应用,但也存在一定的局限性。

  • 滞后阶数的选择问题
    滞后阶数(即选择多少个滞后项)是滞后变量模型中的关键问题。过多的滞后项会导致模型过拟合,而过少的滞后项则可能无法充分捕捉数据的动态特征。通常,通过信息准则(如AIC、BIC)来确定滞后阶数,以平衡模型的复杂性和拟合效果。
  • 自相关问题
    如果滞后项不足或滞后项选择不当,模型中的误差项可能存在自相关性,导致参数估计偏差。自相关性使得误差项之间存在相依性,从而影响模型的估计精度和预测能力。
  • 多重共线性问题
    滞后变量模型中,如果滞后项之间存在高度相关性,可能导致多重共线性问题。这种问题会使得估计参数的不确定性增加,难以判定单个滞后项的影响。高VIF值是多重共线性的常见表现,通常VIF值高于10就需要引起警惕。

2.3 滞后变量模型的改进

为了克服滞后变量模型的上述局限性,通常引入一些改进方法:

  • 广义最小二乘法(GLS)
    GLS可以有效解决自相关和异方差性问题。在误差项存在自相关或异方差性时,普通最小二乘法的估计不再是最优的。而GLS能够调整误差项的协方差结构,从而提高模型的估计效率。

  • 自回归移动平均模型(ARMA)
    ARMA模型通过同时考虑时间序列中的自回归(AR)和移动平均(MA)成分,能够捕捉时间序列的复杂动态结构。ARMA模型可以作为滞后变量模型的扩展,增强对时间序列中自相关和随机扰动的建模能力。

  • 状态空间模型与卡尔曼滤波
    状态空间模型是一种将系统状态分解为潜在状态变量的框架,可以捕捉数据中更复杂的动态结构。卡尔曼滤波则是用于状态估计的递归算法,适用于处理噪声较大的时间序列数据。通过状态空间模型与卡尔曼滤波,滞后变量模型的表现可以进一步增强,特别是在高频金融数据或经济变量分析中具有显著的优势。

三、滞后变量模型的阶数确定

滞后变量模型的阶数确定是构建有效模型的关键步骤,常用的方法包括经验法则、信息准则(AIC和BIC)以及模型逐步检验。

经验法则:在实践中,滞后阶数通常基于理论预期或先验知识。例如,在经济领域,某些变量的滞后影响可能需要几个月甚至几年的时间才能显现,因此研究者可以依据这些特征确定滞后期数。
自相关函数(ACF)和偏自相关函数(PACF)图:通过观察ACF和PACF图,可以直观判断滞后项的选择。ACF用于判断MA(q)部分,而PACF用于判断AR(p)部分。滞后阶数对应的自相关或偏自相关值显著下降的那一阶数是AR(p)或MA(q)模型的候选滞后阶数。
信息准则法(AIC/BIC):Akaike信息准则(AIC)和贝叶斯信息准则(BIC)是评估模型优劣的常用工具。它们通过对模型的拟合优度和复杂度进行权衡,帮助选择最佳的滞后阶数。AIC和BIC的值越小,模型越优。在实际建模中,逐步增加滞后项,选择AIC或BIC值最小的模型作为最优滞后阶数。
逐步检验:通过逐步添加滞后项并比较模型的拟合效果和信息准则值,可以逐步确定最优的滞后阶数。此方法结合了数据驱动的优化和逐步验证,能在避免过拟合的同时提升模型的预测性能。
模型残差的检验:通过对模型残差的分析,例如残差自相关检验,可以进一步判断是否有必要增加滞后项。如果残差显示出显著的自相关性,说明现有滞后阶数不足,需要进一步增加滞后期数。

在实际应用中,滞后阶数的选择因数据特性和领域差异而异。例如,经济数据可能存在周期性变化,因此需要选择足够的滞后项来捕捉这一周期性。相反,对于波动较小的时间序列数据,选择较低的滞后阶数可能已经足够。滞后阶数的选择既要考虑模型的预测精度,也要避免模型过度复杂,从而保持模型的解释力和稳健性。

四、案例分析

中国电力工业基本建设投资与发电量的数据见下表,试确定滞后阶数。

年度 基本建设投资 (亿元) 发电量 (亿千瓦时) 年度 基本建设投资 (亿元) 发电量 (亿千瓦时)
1975 30.65 1958 1986 161.6 4495
1976 39.98 2031 1987 210.88 4973
1977 34.72 2234 1988 249.73 5452
1978 50.91 2566 1989 267.85 5848
1979 50.99 2820 1990 334.55 6212
1980 48.14 3006 1991 377.75 6775
1981 40.14 3093 1992 489.69 7539
1982 46.23 3277 1993 675.13 8395
1983 57.46 3514 1994 1033.42 9218
1984 76.99 3770 1995 1124.15 10070
1985 107.86 4107
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.regression.linear_model import OLS

# 数据输入
data = {
    "Year": [1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995],
    "Investment": [30.65, 39.98, 34.72, 50.91, 50.99, 48.14, 40.14, 46.23, 57.46, 76.99, 107.86, 161.6, 210.88, 249.73, 267.85, 334.55, 377.75, 489.69, 675.13, 1033.42, 1124.15],
    "Electricity": [1958, 2031, 2234, 2566, 2820, 3006, 3093, 3277, 3514, 3770, 4107, 4495, 4973, 5452, 5848, 6212, 6775, 7539, 8395, 9218, 10070]
}

df = pd.DataFrame(data)

# 确定最大滞后阶数
max_lag = len(df) // 2 - 1  # 样本量的一半减一
if max_lag < 1:  # 确保最大滞后阶数至少为1
    max_lag = 1

# 绘制ACF和PACF图
plt.figure(figsize=(12, 6))
plt.subplot(211)
plot_acf(df['Electricity'], lags=max_lag, ax=plt.gca())
plt.title('ACF of Electricity')

plt.subplot(212)
plot_pacf(df['Electricity'], lags=max_lag, ax=plt.gca())
plt.title('PACF of Electricity')

plt.tight_layout()
plt.show()

# 根据不同的滞后阶数,建立多元回归模型并计算AIC和BIC
results = []

# 使用循环建立滞后变量
for p in range(1, max_lag + 1):
    # 生成滞后变量
    X = pd.concat([df['Investment'].shift(i) for i in range(1, p + 1)], axis=1)
    X.columns = [f'Investment_lag_{i}' for i in range(1, p + 1)]
    X = sm.add_constant(X)  # 添加常数项
    y = df['Electricity']

    # 处理缺失值
    X = X.iloc[p:].reset_index(drop=True)
    y = y.iloc[p:].reset_index(drop=True)

    # OLS回归
    model = OLS(y, X).fit()
    results.append((p, model.aic, model.bic))

# 找到AIC和BIC最小的组合
results_df = pd.DataFrame(results, columns=['p', 'AIC', 'BIC'])
best_aic = results_df.loc[results_df['AIC'].idxmin()]
best_bic = results_df.loc[results_df['BIC'].idxmin()]

print("AIC最小的p:", best_aic['p'], "AIC值:", best_aic['AIC'])
print("BIC最小的p:", best_bic['p'], "BIC值:", best_bic['BIC'])
AIC最小的p: 9.0 AIC值: 181.4506402893295
BIC最小的p: 9.0 BIC值: 186.29970678720952

总结

滞后变量模型(Lagged Variable Models)是时间序列分析中的重要工具,主要用于捕捉当前因变量与其过去值或其他解释变量的滞后值之间的动态关系,能够有效揭示变量间的相互作用与延迟效应。在建模过程中,滞后阶数的选择至关重要,常通过信息准则如AIC、BIC确定。此外,多重共线性和序列自相关问题也需要特别关注。为了提高模型性能,广义最小二乘法(GLS)和ARMA模型等方法可用于改进滞后变量模型,增强其解释力和预测精度。这些改进有助于更好地处理噪声数据和潜在的模型偏差,确保分析结果更加可靠。
通过合理的滞后变量选择,研究者可以理解经济体中的累积效应,揭示政策实施对经济的长期影响。例如,在宏观经济分析中,滞后模型可以说明过去的GDP增速、利率等对未来经济表现的影响。这不仅有助于预测未来,还可以评估政策的效果。此外,在金融时间序列中,滞后变量模型常用于预测股市波动或公司收益,它可以帮助量化历史表现对当前市场条件的持续影响。

参考资料

  1. 计量经济学分布滞后模型
  2. SPSS—常用计量经济模型汇总/附案例教程

标签:变量,模型,BIC,计量经济学,阶数,滞后,序列,AIC
From: https://www.cnblogs.com/haohai9309/p/18468388

相关文章

  • 计量经济学(五)——时间序列分析之ARIMA模型预测
    时间序列分析(ARIMA)模型是一种广泛用于预测和分析随时间变化的数据模型。ARIMA模型由自回归(AutoRegressive,AR)、差分(Integrated,I)和移动平均(MovingAverage,MA)三部分构成。它通过对过去数据的自回归和移动平均来预测未来数据点,广泛应用于经济学、金融、气象学等领域中的时间序列预测......
  • leetcode 刷题day43动态规划Part12(115.不同的子序列、583. 两个字符串的删除操作、72.
    115.不同的子序列思路:这个题还是比较有难度的,问题s中有多少个t子序列可以转化为s字符串中有多少删除元素的方式,使s可以变成t。考虑动规五部曲。1、确定dp数组(dptable)以及下标的含义dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。2、确定递推公式......
  • leetcode 刷题day42动态规划Part11(1143.最长公共子序列、1035.不相交的线、53. 最大子
    1143.最长公共子序列思路:718.最长重复子数组两个数组对应相同且连续,所以递推公式是dp[i-1][j-1]+1。最长公共子序列不要求连续但要求相对顺序,差别主要在于递推公式。对于该题主要有两大情况:text1[i-1]与text2[j-1]相同,text1[i-1]与text2[j-1]不相同。如果te......
  • shiro 反序列化漏洞
    shiro反序列化漏洞Shiro-550漏洞原理影响版本:ApacheShiro<1.2.4特征判断:返回包中包含rememberMe=deleteMe字段。为了让浏览器或服务器重启后用户不丢失登录状态,Shiro支持将持久化信息序列化并加密后保存在Cookie的rememberMe字段中,下次读取时进行解密再反序列化。Pa......
  • 计量经济学(四)——序列相关性的检验与修正
    序列相关性(SerialCorrelation)是指在时间序列或截面数据的回归模型中,误差项之间存在相关性。这种现象意味着当前误差项的值会受到前期误差项的影响,误差项之间并不是独立的。这与经典线性回归模型假设的误差项是独立同分布的(i.i.d.)违背了高斯-马尔可夫定理(Gauss-MarkovTheorem)中......
  • 【机器学习(十)】时间序列—Holt-Winters方法—Sentosa_DSML社区版
    @目录一、Holt-Winters算法原理(一)加法模型(一)乘法模型(三)阻尼趋势二、HoltWinters算法优缺点优点缺点三、Python代码和Sentosa_DSML社区版算法实现对比(一)数据读入和统计分析(二)数据预处理(三)模型训练和模型评估(四)模型可视化四、总结一、Holt-Winters算法原理......
  • 针对不同类型的数据,哪些Python可视化库更适合处理时间序列数据?
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 【题解】P3917 异或序列
    传送门也算是一个有关于异或的小trick吧,简单记录一下。可以维护原序列的前缀异或和\(sum\),于是原题答案贡献变为\(\sum\limits_{i=1}^n\sum\limits_{j=i}^nsum_j\oplussum_{i-1}\)。变形一下为\(\sum\limits_{i=0}^{n-1}\sum\limits_{j=1}^{i+1}sum_i\oplussum_{j}......
  • DBPM: 增强时间序列对比学习:一种动态坏对挖掘方法《Towards Enhancing Time Series Co
    今天是2024年10月12日,思路枯竭,还是论文看的太少了,继续看论文.论文:TowardsEnhancingTimeSeriesContrastiveLearning:ADynamicBadPairMiningApproach或者是:TowardsEnhancingTimeSeriesContrastiveLearning:ADynamicBadPairMiningApproachGitHub:https://git......
  • 最长递增子序列
    最长递增子序列300.最长递增子序列普通解法#include<vector>usingnamespacestd;classSolution{public://时间复杂度O(n^2)intlengthOfLIS(vector<int>&nums){intn=nums.size();//dp[i]:以nums[i]结尾的最长递增子序列......