计量经济学(十一)——联立方程模型估计

联立方程模型(Simultaneous Equations Model, SEM)是一类包含多个相互依赖变量的统计模型,用来描述这些变量之间的相互关系。在传统的单一方程模型中,通常假设某个因变量仅仅受到若干自变量的影响,而这些自变量是外生的。然而,在现实经济中,变量之间往往是相互影响的,比如收入和消费。联立方程模型正是为了解决这种变量间的相互依存关系而提出的。联立方程模型在经济学、金融学、社会学等领域应用广泛,特别适用于描述复杂系统中多个变量之间的相互作用关系。

一、联立方程模型

1.1 联立方程模型的定义

联立方程模型由多个方程构成,其中每个方程包含一个或多个内生变量(endogenous variables)和外生变量(exogenous variables)。内生变量是模型中被解释的变量,而外生变量则是由外部因素决定,不受模型内部变量的影响。联立方程模型的主要目标是同时解释多个内生变量的变化。联立方程模型描述了多个内生变量之间的相互关系,同时考虑了外生变量的影响。一般形式如下:

\[Y_1 = \alpha_{11} Y_2 + \alpha_{12} Y_3 + \cdots + \beta_{11} Z_1 + \beta_{12} Z_2 + \cdots + \epsilon_1 \]

\[Y_2 = \alpha_{21} Y_1 + \alpha_{22} Y_3 + \cdots + \beta_{21} Z_1 + \beta_{22} Z_2 + \cdots + \epsilon_2 \]

\[⋮ \]

\[Y_n = \alpha_{n1} Y_1 + \alpha_{n2} Y_2 + \cdots + \beta_{n1} Z_1 + \beta_{n2} Z_2 + \cdots + \epsilon_n \]

其中:

  • $ Y_1, Y_2, \ldots, Y_n $ 是内生变量(endogenous variables),即模型中被解释的变量。
  • $ Z_1, Z_2, \ldots $ 是外生变量(exogenous variables),这些变量是由外部决定,不受模型中内生变量的影响。
  • $ \alpha_{ij} $ 和 $ \beta_{ij} $ 是系数,表示不同变量之间的关系强度。
  • $ \epsilon_i $ 是随机误差项,即模型中未被解释的部分,表示在方程 \(i\) 中未观测到的随机因素对内生变量 \(Y_i\) 的影响。

在这种形式下,联立方程模型的目标是同时估计多个方程,以解释各个内生变量之间的相互关系,并考虑到外生变量的影响。

1.2 联立方程的特点

联立方程模型与一般的单方程回归模型相比,有一个显著的特点:内生变量在不同方程中同时出现。例如,在一个宏观经济模型中,收入不仅是一个方程中的因变量,它还可能在另一个方程中作为自变量出现。因此,所有内生变量在不同的方程中相互影响,并且无法单独使用单方程回归来分析这种相互关系。

1.3 识别问题与解法

在联立方程模型中,识别问题(identification problem)是一个核心问题,它决定了我们是否能够从数据中准确、唯一地估计出模型的参数。识别问题的本质是,如何确保从观测到的变量关系中能够明确地区分出不同方程和参数的作用。如果模型的某些方程不能被识别,我们将无法确定这些方程的结构和参数,这意味着我们无法精确地推断出这些方程所代表的经济行为。

识别问题的来源

识别问题通常源于模型中内生变量和外生变量的关系。当一个系统包含多个方程且这些方程共享一些内生变量时,可能会出现模型过度简化的情况,从而导致方程无法唯一确定其参数。这意味着,我们从数据中观察到的变量关联可能对应于多个不同的经济机制,因此,我们需要判断哪些方程是可以识别的,哪些不是。

识别条件

识别问题可以通过两个关键条件来解决:阶条件和秩条件。这两个条件是解决识别问题的主要工具,用于判断模型中的方程是否可以被唯一识别。

阶条件(Order Condition)
阶条件是判断一个方程是否可以被识别的最基本方法。阶条件要求,对于每个待估计的方程,模型中必须存在足够的外生变量,以便从其他方程中区分出这一方程的结构。具体而言,阶条件的定义如下:
对于模型中的每一个方程,如果模型总共有\(m\)个方程,并且每个方程中包含\(n\)个内生变量,则为了使该方程可以识别,要求在该方程中排除的外生变量数量必须大于等于\(m−1\)。换句话说,某一方程的外生变量数目应至少多于方程中的内生变量数,这样才能保证模型可以被唯一识别。阶条件只是识别的必要条件,而非充分条件。它只提供了一个初步判断,并不能保证模型一定可以被识别。
秩条件(Rank Condition)
秩条件提供了更严格的判定标准,用于判断模型的数学结构是否适合估计。秩条件基于矩阵的数学特性,通过方程的结构来进一步细化识别条件。阶条件仅仅是识别的必要条件,而秩条件是充分条件和必要条件的结合。
秩条件的思想是,模型中的内生变量与外生变量之间的关系可以通过矩阵形式表示出来。秩条件要求,在这个矩阵中,存在一个完整的秩,用于保证每一个方程能够被唯一识别。具体来说,矩阵的秩反映了模型中每个方程的独立性,若秩足够高,则方程可以被识别;如果矩阵的秩不足,则模型存在未识别的问题。秩条件更具数学形式化,它要求模型的内生变量与外生变量之间的线性关系不是完全相关的。通过考察模型的结构矩阵,我们可以判断该矩阵的秩是否足够高,进而判断模型是否可以识别。
识别问题的经济学意义
识别问题不仅仅是一个技术上的统计问题,它还具有重要的经济学意义。未识别的模型意味着我们无法明确地理解经济变量之间的因果关系。例如,在一个宏观经济模型中,如果我们无法识别消费函数与收入之间的关系,我们便无法准确估计政策变化对消费的影响。此外,识别问题也关乎政策有效性。如果模型无法识别,政府或中央银行等决策者便无法准确地预测经济政策的效果。识别问题的解决不仅能提高模型的学术严谨性,还能增强模型在实际应用中的可靠性。
解决识别问题的方法
在面对识别问题时,经济学家通常采用以下几种策略:
增加外生变量:通过在模型中添加更多的外生变量,可以提高模型的可识别性。
简化模型结构:在某些情况下,简化模型可以减少变量之间的高度相关性,进而解决识别问题。
使用工具变量:工具变量法是一种常用的解决识别问题的方法,特别是在处理内生性问题时。工具变量通过引入与内生变量相关但与误差项不相关的外生变量,帮助识别模型。

综上所述,识别问题是联立方程模型估计中的重要挑战之一。通过阶条件和秩条件的结合,我们可以判断模型的识别性,并采取适当的措施来确保模型的估计结果准确可靠。

1.4 简单凯恩斯模型:联立方程模型的一个经典案例

凯恩斯主义经济学模型是联立方程模型的经典应用之一。凯恩斯模型解释了在短期内,经济如何通过消费、投资和政府支出实现总需求的变化,进而影响总产出。

模型构建

简单凯恩斯模型由三个基本方程构成,分别是消费函数、投资函数和国民收入恒等式。每个方程描述一个不同的经济活动,它们共同决定国民收入、消费和投资的水平。

  • 消费函数(Consumption Function)

    \[C = C_0 + cY \]

    其中,$ C $ 代表总消费,$ C_0 $ 是自主消费,表示无论收入水平如何,人们都进行的基本消费;$ c $ 是边际消费倾向,表示每增加一单位收入,人们愿意增加多少消费;$ Y $ 是总收入。

  • 投资函数(Investment Function)

    \[I = I_0 \]

    其中,$ I $ 是总投资,$ I_0 $ 是自主投资,假设投资不受收入影响。

  • 国民收入恒等式(National Income Identity)

    \[Y = C + I \]

    该方程表明总收入 $ Y $ 由消费和投资之和构成,这是国民经济的基本恒等式。

模型的联立形式

将这三个方程联立起来,可以得到以下系统:

\[ C = C_0 + cY\\ I = I_0 \\ Y = C + I \]

这个模型中,\(C\)\(I\)\(Y\) 是内生变量,而 \(C_0\)\(I_0\)\(c\) 是外生参数。模型描述了收入、消费和投资如何通过相互作用达到均衡。

模型的求解

我们可以通过代入法求解这个联立方程系统。首先,将消费函数代入国民收入恒等式:

\[Y = (C_0 + cY) + I_0 \]

整理得到:

\[Y = \frac{C_0 + I_0}{1 - c} \]

这个方程给出了均衡国民收入的表达式。它表明,国民收入由自主消费、自主投资和边际消费倾向共同决定。该公式中的 $ \frac{1}{1 - c} $ 称为凯恩斯乘数,它描述了收入随着投资或消费变化的放大效应。
从凯恩斯模型可以看出,短期内经济是由需求拉动的。通过增加自主投资 $ I_0 $ 或增加自主消费 $ C_0 $,可以直接推动经济增长。而边际消费倾向 $ c $ 决定了消费变化对国民收入的影响程度。当 $ c $ 较大时,国民收入的增加会带来更大幅度的消费增长,反之亦然。
凯恩斯认为,在短期内,政府通过增加支出(例如基础设施投资)可以有效提高总需求,从而拉动经济增长。这一政策主张在经济衰退时期显得尤为重要,因为当私人部门需求不足时,政府可以通过增加支出来弥补需求缺口。

1.5 联立方程模型的实际应用

联立方程模型在以下几个领域得到了广泛应用:

宏观经济模型。凯恩斯模型是宏观经济学中联立方程模型的经典应用。此外,IS-LM模型、AS-AD模型等也都是联立方程模型的典型代表。这些模型通过多个方程同时分析利率、产出、价格和货币供给等宏观经济变量的相互关系。
金融市场分析。在金融市场中,资产价格、利率和货币供给等变量之间存在相互依赖的关系。例如,股市价格可能受到利率和投资者预期的影响,同时又会反过来影响投资者的行为。这类复杂的相互作用可以通过联立方程模型来分析。
供需模型。供需模型是一种典型的联立方程模型。在供需模型中,价格和数量是内生变量,供给函数和需求函数分别描述了供给方和需求方的行为。通过联立方程,我们可以确定市场均衡价格和数量。

二、联立方程模型的估计

联立方程模型的估计和分析方法比一般单方程模型复杂得多,因为其内生变量与误差项之间可能存在相关性,使用普通最小二乘法(Ordinary Least Squares, OLS)直接估计会导致估计量偏差和不一致性。因此,针对联立方程模型的特点,发展出了专门的估计方法,如工具变量法(Instrumental Variables, IV)、两阶段最小二乘法(Two-Stage Least Squares, 2SLS)、三阶段最小二乘法(Three-Stage Least Squares, 3SLS)等。这些方法主要解决内生性和方程系统中的复杂依存关系。接下来,我们将详细讨论这些估计方法,以及如何使用它们来解决联立方程模型中的问题。

3.1 工具变量法(Instrumental Variables, IV)

工具变量法是一种用于解决内生性问题的估计方法。所谓内生性问题,指的是模型中的解释变量与误差项存在相关性,导致估计结果偏差。内生性通常来自两个方面:一个是遗漏变量问题,即某些影响因变量的因素未能包含在模型中;另一个是逆因果关系,即因变量反过来也影响自变量。在这种情况下,工具变量法通过引入一个外生的工具变量来代替内生自变量进行回归,从而消除内生性引发的估计偏差。

工具变量的选择条件:

  • 相关性:工具变量必须与内生自变量相关,只有这样才能有效替代内生自变量进行估计。
  • 外生性:工具变量不能与误差项相关,否则无法消除偏差。
    工具变量法的主要步骤包括:
  • 第一步:找到一个合适的工具变量,与内生自变量高度相关但与误差项不相关。
  • 第二步:使用工具变量对内生自变量进行回归,获得其预测值。
  • 第三步:用预测值代替原内生自变量进行第二次回归,得到最终的参数估计。

工具变量法适用于那些因果关系较为复杂、解释变量可能受到其它未观测因素影响的模型,例如教育对工资的影响模型中,教育可能受到家庭背景等因素的影响。
局限性:工具变量法的关键在于选择合适的工具变量。如果工具变量选择不当,可能会引入新的估计偏差。同时,如果工具变量与内生自变量的相关性较弱,估计的效率也会下降。

3.2 两阶段最小二乘法(Two-Stage Least Squares, 2SLS)

两阶段最小二乘法是解决联立方程模型中内生性问题的标准方法之一。该方法通过分两步进行回归,先解决内生自变量的偏差问题,再估计模型的参数。

2SLS的步骤:

  • 第一步:处理内生自变量。用模型中的外生变量和工具变量对内生自变量进行回归,得到内生自变量的预测值。
  • 第二步:回归模型。将第一步得到的预测值代替内生自变量,使用普通最小二乘法对原始方程进行回归,估计模型的参数。

应用示例:假设有一个供需模型,其中供给和需求相互影响。在2SLS方法中,首先用价格等外生变量对供给和需求进行回归,得到预测值;然后用这些预测值来估计供给和需求的方程。
优点:两阶段最小二乘法能够处理内生性问题,特别是当模型中存在多个内生变量时,2SLS能够同时估计它们的影响,确保估计结果一致。
局限性:该方法的局限性在于,所选的工具变量必须是强相关且外生的。如果工具变量选择不当,仍然会导致估计结果的偏差和低效率。

3.3 三阶段最小二乘法(Three-Stage Least Squares, 3SLS)

三阶段最小二乘法是2SLS方法的扩展,它不仅能够解决内生性问题,还能处理方程之间的误差项相关性。3SLS通过同时估计联立方程系统的多个方程,提高了估计效率。

3SLS的步骤:

  • 第一阶段:使用外生变量对内生自变量进行回归,获得预测值(类似于2SLS的第一步)。
  • 第二阶段:将预测值代入每个方程,对每个方程单独进行普通最小二乘法估计。
  • 第三阶段:结合所有方程的误差项,使用广义最小二乘法(GLS)对整个系统进行修正,考虑方程之间的误差相关性。

3SLS方法非常适合用于多个市场或多个国家相互依存的宏观经济分析,能够同时捕捉多个变量的交互作用。
优势:3SLS能够处理多个方程之间误差项的相关性,因此相较于2SLS,3SLS的估计效率更高。
局限性:由于需要考虑多个方程之间的相关性,3SLS的计算量较大,模型结构复杂。此外,3SLS依赖于正确的模型识别,如果某个方程未被正确识别,整个系统的估计可能会出现问题。

3.4 平稳性检验和协整分析

在时间序列数据中,许多经济变量往往表现出非平稳性,这意味着其均值、方差和自相关结构随时间变化。如果直接使用非平稳数据进行回归分析,可能会出现伪回归问题,导致估计结果失效。为了解决这一问题,必须首先进行平稳性检验和协整分析。

平稳性检验:常用的平稳性检验方法是单位根检验,如Augmented Dickey-Fuller (ADF) 检验和Phillips-Perron (PP) 检验。单位根检验可以帮助我们判断时间序列数据是否是平稳的。如果一个时间序列存在单位根,即非平稳的,我们可以通过差分处理将其转化为平稳序列。
协整分析:如果模型中的多个变量都是非平稳的,但它们之间存在长期的均衡关系(协整关系),那么即使它们各自是非平稳的,它们的某些线性组合仍然可能是平稳的。在这种情况下,协整分析可以帮助我们识别这种长期均衡关系,通常通过Engle-Granger两步法或Johansen检验来进行。
误差修正模型(ECM):在发现变量之间存在协整关系后,我们可以构建误差修正模型来描述短期动态与长期均衡的关系。误差修正模型能够捕捉变量偏离长期均衡时的调整速度,从而确保模型在长短期分析中的一致性。

3.5 格兰杰因果关系检验

格兰杰因果关系检验是一种判断两个变量之间因果关系的方法,尤其适用于时间序列数据。在联立方程模型中,格兰杰因果关系检验可以帮助分析不同经济变量之间的相互影响。
基本思想:如果一个变量的过去值可以帮助预测另一个变量的未来值,则称该变量格兰杰引起了另一个变量。需要注意的是,格兰杰因果关系并不一定是真正的因果关系,只是时间上的先后顺序。
检验步骤

  • 选择合适的滞后期。
  • 检查一个变量的滞后项对另一个变量的解释能力。
  • 如果滞后项显著,则存在格兰杰因果关系。

应用示例:在宏观经济模型中,可以使用格兰杰因果检验来分析利率和通货膨胀率之间的动态关系,从而帮助预测经济走势。

3.6 误差修正模型(Error Correction Model, ECM)

在存在协整关系的情况下,误差修正模型(ECM)是描述短期和长期动态关系的有效工具。误差修正模型结合了差分项(描述短期变化)和误差修正项(描述偏离长期均衡的调整过程),因此能够同时捕捉短期波动和长期趋势。
误差修正模型的通用形式如下:

\[\Delta Y_t = \alpha(\text{误差修正项}) + \beta_1 \Delta X_t + \beta_2 \Delta Z_t + \epsilon_t \]

其中,误差修正项表示变量之间偏离长期均衡关系的误差,\(\alpha\)表示调整速度,即变量回归长期均衡状态的速率。
误差修正模型的优势在于,它不仅能够解释短期波动,还能描述变量之间的长期均衡关系,在宏观经济分析中有广泛应用。

3.7 模型的检验和诊断

在估计联立方程模型之后,必须进行一系列检验和诊断,以确保模型的有效性和一致性。

  • 识别检验:识别检验用于判断模型的每个方程是否正确识别。通常使用秩条件和阶条件进行识别检验,如果某个方程未被识别,估计结果将不具备经济意义。
  • 序列相关性检验:用于检测模型的残差项是否存在序列相关性。常用的检验方法是Durbin-Watson检验。如果残差存在序列相关性,模型的估计可能会有偏差,需要进一步调整。
  • 异方差性检验:异方差性指的是误差项的方差随着自变量的变化而变化。异方差性会导致估计结果无效,常用的检验方法有白检验(White test)和Breusch-Pagan检验。
  • 多重共线性检验:用于检测解释变量之间是否存在高度相关性。如果解释变量之间存在多重共线性,估计结果可能不稳定,影响解释效力。

这些检验和诊断有助于我们识别模型中的潜在问题,并通过相应的调整提高模型的准确性和有效性。

三、案例分析

下表为1978-2003中国宏观经济数据,建立宏观经济模型。

年份 CSt(居民消费总额,亿元) Yt(国内生产总值,亿元) It(总投资,亿元) Gt(政府消费,亿元)
1978 1759.100 3605.600 1377.900 468.6000
1979 1966.078 3994.118 1445.294 582.7451
1980 2143.478 4210.268 1470.860 595.9297
1981 2352.394 4427.642 1428.184 647.0641
1982 2542.465 4866.312 1560.461 763.3865
1983 2779.476 5306.812 1751.092 776.2445
1984 3121.920 6087.001 2097.366 867.7145
1985 3582.358 6863.466 2643.247 637.8610
1986 3810.751 7461.561 2832.106 818.7040
1987 4091.421 8088.332 2966.369 1030.5422
1988 4419.861 8514.186 3181.818 912.5072
1989 4190.511 8095.379 2996.559 908.3088
1990 4387.675 8820.173 3102.552 1329.9470
1991 4827.281 9958.072 3517.548 1613.2429
1992 5532.771 11484.769 4278.863 1673.1350
1993 6152.373 13534.994 5883.876 1498.7446
1994 6708.511 15051.805 6209.091 2134.2037
1995 7566.554 16430.918 6705.139 2159.2249
1996 8510.402 18086.395 7111.488 2464.5050
1997 9152.994 19667.595 7473.109 3041.4916
1998 9954.462 21300.431 7966.002 3379.9676
1999 10932.296 22977.515 8532.963 3512.2568
2000 12103.725 25209.058 8532.963 3934.9605
2001 13054.067 28041.212 9170.372 4332.7645
2002 14086.916 31094.409 12191.614 4815.8790
2003 15194.260 35047.995 14820.508 5033.2276

我们建立如下所示的宏观经济模型:

  • 消费函数:

\[C S_t = \alpha_0 + \alpha_1 Y_t + \alpha_2 C S_{t-1} + \mu_{1 t} \]

  • 投资函数:

\[I_t = \beta_0 + \beta_1 Y_t + \mu_{2 t} \]

  • 收入方程:

\[Y_t = I_t + C S_t + G_t \]

我们根据联立方程模型的识别的相关知识,容易判断该联立方程模型中投资函数方程是过度识别的,消费函数方程是恰好识别的,整个结构模型是可识别的,具体的步骤如下面所述。

  • 在我们的联立方程模型中,\(C S_t、 I_t、 Y_t\) 为内生变量,\(C S_{t-1}、 G_t\) 为前定变量(非内生变量,包括外生变量,内生滞后变量等)。所以结构模型中内生变量即结构方程的个数为 3,内生变量和前定变量的总个数为 5。

  • 阶条件:

    • 对于投资函数方程来说,方程中内生变量和前定变量的总个数为 2,根据前面讲过的条件 \(K - M_i \geqslant G - 1\)\(5 - 2 > 3 - 1\),所以阶条件成立,此时如果投资函数方程可识别,则为过度识别;
    • 对于消费函数方程来说,方程中内生变量和前定变量的总个数为 3,根据前面讲过的条件 \(K - M_i \geqslant G - 1\)\(5 - 3 = 3 - 1\),所以阶条件成立,此时如果消费函数方程可识别,则为恰好识别;
    • 对于收入函数方程来说,方程中内生变量和前定变量的总个数为 3,根据前面讲过的条件 \(K - M_i \geqslant G - 1\)\(5 - 3 = 3 - 1\),所以阶条件成立,此时如果收入函数方程可识别,则为恰好识别。
  • 秩条件:首先整理结构模型,通过移项,得到新的形式为:

    • 消费函数:

    \[-\alpha_0 + C S_t - \alpha_1 Y_t - \alpha_2 C S_{t-1} = \mu_{1 t} \]

    • 投资函数:

    \[-\beta_0 - \beta_1 Y_t + I_t = \mu_{2 t} \]

    • 收入方程:

    \[-C S_t + Y_t - I_t - G_t = 0 \]

结构模型对应的参数矩阵为:

\[ \begin{pmatrix} -\alpha_0 & 1 & -\alpha_1 & -\alpha_2 & 0 & 0 \\ -\beta_0 & 0 & -\beta_1 & 0 & 1 & 0 \\ 0 & -1 & 1 & 0 & -1 & -1 \end{pmatrix} \]

设资函数方程来说,在删去其所对应的行以及其非零元素所对应的列以后,得到的:

\[ \left( \begin{array}{rrr} 1 & -\alpha_2 & 0 \\ -1 & 0 & -1 \end{array} \right) \]

其秩为2=3-1,所以本方程可识别,结合阶条件,本方程为过度识别。
对于消费函数方程来说,在删去其所对应的行以及其非零元素所对应的列以后,得到的子矩阵是:

\[ \left( \begin{array}{rr} 1 & 0 \\ -1 & -1 \end{array} \right) \]

其秩为2=3-1,所以本方程可识别,结合阶条件,本方程为恰好识别。
对于收入方程来说,在删除其所对应的行列以及其非零元素所对应的列以后,得到的子矩阵是

\[ \left( \begin{array}{rr} -\alpha_0 & -\alpha_2 \\ -\beta_0 & 0 \end{array} \right) \]

其秩为2=3-1,所以本方程可识别,结合阶条件,本方程为恰好识别。

  • 综合可知,本结构模型可识别。
import pandas as pd
import statsmodels.api as sm
from statsmodels.sandbox.regression.gmm import IV2SLS
import numpy as np

# 创建数据
data = pd.DataFrame({
    'Year': [1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003],
    'CSt': [1759.1, 1966.078, 2143.478, 2352.394, 2542.465, 2779.476, 3121.92, 3582.358, 3810.751, 4091.421, 4419.861, 4190.511, 4387.675, 4827.281, 5532.771, 6152.373, 6708.511, 7566.554, 8510.402, 9152.994, 9954.462, 10932.296, 12103.725, 13054.067, 14086.916, 15194.26],
    'Yt': [3605.6, 3994.118, 4210.268, 4427.642, 4866.312, 5306.812, 6087.001, 6863.466, 7461.561, 8088.332, 8514.186, 8095.379, 8820.173, 9958.072, 11484.769, 13534.994, 15051.805, 16430.918, 18086.395, 19667.595, 21300.431, 22977.515, 25209.058, 28041.212, 31094.409, 35047.995],
    'It': [1377.9, 1445.294, 1470.86, 1428.184, 1560.461, 1751.092, 2097.366, 2643.247, 2832.106, 2966.369, 3181.818, 2996.559, 3102.552, 3517.548, 4278.863, 5883.876, 6209.091, 6705.139, 7111.488, 7473.109, 7966.002, 8532.963, 8532.963, 9170.372, 12191.614, 14820.508],
    'Gt': [468.6, 582.7451, 595.9297, 647.0641, 763.3865, 776.2445, 867.7145, 637.861, 818.704, 1030.5422, 912.5072, 908.3088, 1329.947, 1613.2429, 1673.135, 1498.7446, 2134.2037, 2159.2249, 2464.505, 3041.4916, 3379.9676, 3512.2568, 3934.9605, 4332.7645, 4815.879, 5033.2276]
})

# 填补缺失值(线性插值)
data['It'] = data['It'].interpolate()

# 创建滞后值
data['CSt_lag'] = data['CSt'].shift(1)

# 删除第一个因其滞后值为空的行
data = data.dropna()

# 消费函数的IV 2SLS 估计
Y = data['CSt']
X = sm.add_constant(data[['Yt', 'CSt_lag']])
Z = sm.add_constant(data[['Yt', 'Gt']])  # 工具变量
consumption_model = IV2SLS(Y, X, Z).fit()

# 投资函数的IV 2SLS 估计
Y_investment = data['It']
X_investment = sm.add_constant(data[['Yt']])
Z_investment = sm.add_constant(data[['Yt', 'Gt']])  # 工具变量
investment_model = IV2SLS(Y_investment, X_investment, Z_investment).fit()

# 输出模型估计结果
print("Consumption Function Estimation:")
print(consumption_model.summary())

print("\nInvestment Function Estimation:")
print(investment_model.summary())

# 收入方程的直接计算
data['Yt_calculated'] = data['It'] + data['CSt'] + data['Gt']

# 打印联立方程模型
def print_model_expressions():
    print("=====================")
    print("\n**Consumption Function**")
    print("CSt = {:.4f} + {:.4f} * Yt + {:.4f} * CSt_lag".format(consumption_model.params.iloc[0], 
                                                             consumption_model.params.iloc[1], 
                                                             consumption_model.params.iloc[2]))

    print("\n**Investment Function**")
    print("It = {:.4f} + {:.4f} * Yt".format(investment_model.params.iloc[0], investment_model.params.iloc[1]))

    print("\n**Income Equation**")
    print("Yt = It + CSt + Gt")

# 输出联立方程模型
print_model_expressions()
                          IV2SLS Regression Results                           
==============================================================================
Dep. Variable:                    CSt   R-squared:                       0.998
Model:                         IV2SLS   Adj. R-squared:                  0.998
Method:                     Two Stage   F-statistic:                     5874.
                        Least Squares   Prob (F-statistic):           9.72e-31
Date:                Fri, 18 Oct 2024                                         
Time:                        19:37:44                                         
No. Observations:                  25                                         
Df Residuals:                      22                                         
Df Model:                           2                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         43.4272    230.329      0.189      0.852    -434.245     521.100
Yt             0.0317      0.216      0.147      0.884      -0.416       0.479
CSt_lag        1.0095      0.533      1.893      0.072      -0.096       2.115
==============================================================================
Omnibus:                       12.706   Durbin-Watson:                   1.400
Prob(Omnibus):                  0.002   Jarque-Bera (JB):               13.858
Skew:                          -1.118   Prob(JB):                     0.000979
Kurtosis:                       5.882   Cond. No.                     4.27e+04
==============================================================================

Investment Function Estimation:
                          IV2SLS Regression Results                           
==============================================================================
Dep. Variable:                     It   R-squared:                       0.977
Model:                         IV2SLS   Adj. R-squared:                  0.976
Method:                     Two Stage   F-statistic:                     994.8
                        Least Squares   Prob (F-statistic):           1.96e-20
Date:                Fri, 18 Oct 2024                                         
Time:                        19:37:44                                         
No. Observations:                  25                                         
Df Residuals:                      23                                         
Df Model:                           1                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const       -178.5783    203.070     -0.879      0.388    -598.660     241.503
Yt             0.3898      0.012     31.541      0.000       0.364       0.415
==============================================================================
Omnibus:                        8.665   Durbin-Watson:                   0.931
Prob(Omnibus):                  0.013   Jarque-Bera (JB):                9.891
Skew:                          -0.596   Prob(JB):                      0.00711
Kurtosis:                       5.842   Cond. No.                     3.02e+04
==============================================================================

Consumption Function
CSt = 43.4272 + 0.0317 * Yt + 1.0095 * CSt_lag

Investment Function
It = -178.5783 + 0.3898 * Yt

Income Equation
Yt = It + CSt + Gt

总结

联立方程模型为我们提供了研究多个相互依存变量之间关系的重要工具。通过构建多个相互作用的方程,我们能够更准确地描述和分析复杂的经济现象。无论是在宏观经济学、金融学,还是其他领域,联立方程模型都发挥着至关重要的作用。以简单凯恩斯模型为例,我们看到了如何通过联立方程来解释总需求、总消费和总收入的相互关系。在未来的研究中,联立方程模型还可以结合更多动态因素,如价格、利率和货币供应,形成更复杂的经济分析框架。

参考资料

  1. 计量经济学】联立方程模型
  2. 李敏等. Eviews统计分析与应用. 北京:电子工业出版社,2010.
posted @ 2024-10-18 19:43  郝hai  阅读(158)  评论(0编辑  收藏  举报