第 3 章 模型函数形式与模型选择
3.1 实验目的及要求
- 目的:掌握几种模型函数形式的特征,理解函数形式选择的原理。
- 要求:在老师指导下能用Eviews软件进行各种形式模型的变换与处理,包括普通线性模型、过原点模型、标准化处理模型、双对数模型、半对数模型、倒数模型,得到正确的分析结果;能运用合适的计算公式,得到正确的斜率和弹性计算值。
3.2 实验原理
- 无论是一元线性回归还是多元线性回归,模型正确设置的一个重要前提就是能够正确地选择合适的函数形式,或者需要对变量进行变换处理(标准化、取对数等)。同样的实证案例,使用普通线性模型、过原点模型、标准化处理模型、双对数模型、半对数模型、倒数模型需要视案例具体情形而定,还需要结合经济学理论,通过多次尝试方才能够找到相对满意的具体模型形式。
- 此外,斜率和弹性,都是具有数学和经济学含义的重要概念,不同函数形式下实现对二者的正确计算,是得出有价值的模型估计结论的重要途径。
3.2.1 模型设置为有截距还是无截距?
定义 3.1 (过原点回归模型) 也称为无截距模型,是指没有截距项的一类线性回归模型。一般地,过原点总体回归模型(PRM)和样本回归模型(SRM)分别记为: \[\begin{align} Y_i&=\beta_2X_i+u_i \tag{3.1}\\ Y_i&=\hat{\beta}_2X_i+e_i \tag{3.2} \end{align}\]
实际模型设置中,究竟要采用经典的有截距模型,还是采用无截距模型,需要注意的是:
- 尽管模型含有截距项,但若该项的出现是统计上不显著的(即统计上等于零),则从任何实际方面考虑,都可认为这个结果是一个过原点回归模型。
- 如果在模型中确实有截距,而我们却执意拟合一个过原点回归,我们就犯了设定错误(specification error)。
- 对于有截距项的模型来说,总有\(\sum{e_i}=0\),但对于无截距项的模型,\(\sum{e_i}=0\)则不一定成立,只有\(\sum{e_iX_i}=0\)。
- 对于有截距项的模型来说,总有判定系数\(r^2 \geq 0\);但是,对无截距模型来说\(r^2\)有时可能出现负值。
3.2.2 变量单位变换下怎么选择模型?
定义 3.2 (尺度因子) 也称为单位变换因子,是指对一个变量的尺度或单位进行变换的权数,一般用\(\omega(\omega \in \mathcal{R},\omega \neq 0)\)表示。一般地,总体回归模型(PRM)和样本回归模型(SRM)分别记为:
在同一个变量,可能有不同计量单位取值时,我们可以得到如下备选模型: \[\begin{align} Y_i&=\hat{\beta}_1+\hat{\beta}_2X_i+e_i \tag{3.3}\\ Y_i^{\ast}&=\hat{\beta}_1^{\ast}+\hat{\beta}_2^{\ast}X_i^{\ast}+e_i^{\ast} \tag{3.4} \end{align}\]
其中:\(Y_i^{\ast}=\omega_1Y_i;\ \ X_i^{\ast}=\omega_2 X_i\)
此时,采用最小二乘法进行参数估计,容易证明两个模型的关系如下:
\[\begin{align} \hat{\beta}_2^{\ast}&=\frac{\omega_1}{\omega_2}\hat{\beta}_2 \tag{3.5}\\ \hat{\beta}_1^{\ast}&=\omega_1\hat{\beta}_1 \tag{3.6}\\ {\hat{\sigma}^{\ast}}^2&=\omega_1^2 \hat{\sigma}^2 \tag{3.7}\\ var(\beta_2^{\ast})&={\left ( \frac{\omega_1}{\omega_2} \right )}^2 var(\hat{\beta}_2) \tag{3.8}\\ var(\beta_2^{\ast})&={\left ( \omega_1 \right )}^2 var(\hat{\beta}_1) \tag{3.9}\\ r^2_{(X,Y)}&=r^2_{(X^{\ast},Y^{\ast})} \tag{3.10} \end{align}\]
模型对比,得出如下主要结论:
若\(\omega_1=\omega_2\),即两个变量的尺度因子相等时:则斜率系数及其标准误不受尺度因子的影响,但截距及其标准误却放大或缩小至\(\omega_1\)倍
若变量\(X\)的尺度不变(\(\omega_2=1\)),而变量\(Y\)的尺度因子(\(\omega_1\))变化:则斜率和截距系数以及它们各自的标准误都要乘以同样的因子\(\omega_1\)
若变量\(Y\)的尺度因子不变(\(\omega_1=1\)),而变量\(X\)的尺度(\(\omega_2\))变化:则斜率系数及其标准误都要乘以\(\frac{1}{\omega_2}\),而截距系数及其标准误不变
3.2.3 如何选择模型的函数形式?
重点讨论以下的三种回归模型:
- 双对数模型
- 半对数模型
- 倒数模型
定义 3.3 (双对数模型) 是指自变量和因变量都以对数形式出现的一类线性回归模型(double-log model)。一般地,总体回归模型(PRM)和样本回归模型(SRM)分别记为: \[\begin{align} ln(Y_i)&=\beta_1+\beta_2ln(X_i)+u_i \tag{3.11}\\ ln(Y_i)&=\hat{\beta}_1+\hat{\beta}_2ln(X_i)+e_i \tag{3.12} \end{align}\]
定义 3.4 (半对数模型) 是指自变量和因变量的其中之一以对数形式出现的一类线性回归模型(semi-log model)。一般地,可以分为:
线性到对数模型(linear-log model):只有因变量\(Y\)以对数形式出现。其总体回归模型(PRM)和样本回归模型(SRM)分别记为: \[\begin{align} ln(Y_i)&=\beta_1+\beta_2X_i+u_i \tag{3.13}\\ ln(Y_i)&=\hat{\beta}_1+\hat{\beta}_2X_i+e_i \tag{3.14} \end{align}\]
对数到线性模型(linear-log model):只有自变量\(X\)以对数形式出现。其总体回归模型(PRM)和样本回归模型(SRM)分别记为: \[\begin{align} Y_i&=\beta_1+\beta_2ln(X_i)+u_i \tag{3.15}\\ Y_i&=\hat{\beta}_1+\hat{\beta}_2ln(X_i)+e_i \tag{3.16} \end{align}\]
定义 3.5 (倒数模型) 是指自变量以倒数形式出现的一类线性回归模型(reciprocal model)。一般地,总体回归模型(PRM)和样本回归模型(SRM)分别记为: \[\begin{align} Y_i&=\beta_1+\beta_2\frac{1}{X_i}+u_i \tag{3.17}\\ Y_i&=\hat{\beta}_1+\hat{\beta}_2\frac{1}{X_i}+e_i \tag{3.18} \end{align}\]
对于上述三类模型形式的比较和选择,需要一些技巧和经验:
- 模型背后的理论(如菲利普斯曲线)可能给出了一个特定的函数形式。
- 最好能求出回归子相对回归元的变化率(即斜率slope)和回归子对回归元的弹性(elasticity)。
- 所选模型的系数应该满足一定的先验预期。
- 有时多个模型都能相当不错地拟合一个给定的数据集。
- 通常不应该过分强调拟合优度\(r^2\)𝟐这个指标
- 在有些情形中,确定一个特定的函数形式不是那么容易,此时我们或许可以使用所谓的博克斯-考克斯变换(Box-Cox transformations)
模型 | 方程 | 斜率\(\frac{dY}{dX}\) | 弹性\(\frac{dY}{dX}\cdot \frac{X_i}{Y_i}\) |
---|---|---|---|
\(M_1\)线性模型 | \(Y_i=\beta_1+\beta_2X_i+u_i\) | \(\beta_2\) | \(\beta_2{X_i}/{Y_i}\) |
\(M_2\)过原点模型 | \(Y_i=\beta_2X_i+u_i\) | \(\beta_2\) | \(\beta_2{X_i}/{Y_i}\) |
\(M_3\)双对数模型 | \(ln(Y_i)=\beta_1+\beta_2ln(X_i)+u_i\) | \(\beta_2Y_i/X_i\) | \(\beta_2\) |
\(M_4\)线性到对数模型 | \(ln(Y_i)=\beta_1+\beta_2X_i+u_i\) | \(\beta_2Y_i\) | \(\beta_2{X_i}\) |
\(M_5\)对数到线性模型 | \(Y_i=\beta_1+\beta_2ln(X_i)+u_i\) | \(\beta_2/X_i\) | \(\beta_2/{Y_i}\) |
\(M_6\)倒数模型 | \(Y_i=\beta_1+\beta_2/X_i+u_i\) | \(-\beta_2/X_i^2\) | \(-\beta_2/({X_i}{Y_i})\) |
\(M_7\)对数倒数模型 | \(ln(Y_i)=\beta_1+\beta_2/X_i+u_i\) | \(-\beta_2Y_i/X_i^2\) | \(-\beta_2/{X_i}\) |
3.4 实验准备
3.4.1 实验软件
本次实验需要提前准备好如下软件:
- 统计分析软件Eviews 9.0版本及以上
- 公式编辑软件Mathtype 6.0版本及以上
- 写作编辑软件Office Word/Excel 2010版本及以上
- 浏览器软件chrome 66.0版本及以上或 360极速浏览器9.5版本及以上
3.4.2 实验材料
英国家庭食物支出:表3.1给出了1980-1982年间英国家庭支出调查中1519个家庭在Y家庭总支出(10英镑),X食物支出(10英镑)等方面的数据。数据只包括住在伦敦市区和市郊有1~2个子女的家庭,样本不包括自我雇佣和退休家庭。
obs | Y | X |
---|---|---|
1 | 50 | 21.36 |
2 | 90 | 33.65 |
3 | 180 | 34.94 |
4 | 80 | 35.50 |
5 | 90 | 29.98 |
1515 | 90 | 36.95 |
1516 | 70 | 19.51 |
1517 | 100 | 32.98 |
1518 | 130 | 78.79 |
1519 | 140 | 26.39 |
变量说明见表3.2:
variable | label |
---|---|
obs | 家庭编号ID |
Y | 家庭总支出(10英镑) |
X | 食物支出(10英镑) |
3.4.3 实验规则
图形对象(Graph)
的命名规则:
- X对Y的散点图(scatter)命名为
scatter_classic
- log(X)对log(Y)的散点图(scatter)命名为
scatter_loglog
- 1/X对Y的散点图(scatter)命名为
scatter_reclog
- X对Y的散点图(scatter)命名为
方程对象(Equation)
的命名规则:
- 线性模型M1的回归方程命名为
m1
- 过原点模型M2的回归方程命名为
m2
- 双对数模型M3的回归方程命名为
m3
- 线性到对数模型M4的回归方程命名为
m4
- 对数到线性模型M5的回归方程命名为
m5
- 倒数模型M6的回归方程命名为
m6
- 对数倒数模型M7的回归方程命名为
m7
- 线性模型M1的回归方程命名为
向量对象(Vector)
的命名规则:
- 7个模型中计算得到的回归系数\((\hat{\beta}_1,\hat{\beta}_2)\)以向量对象(Vector)
形式保存。
- 线性模型M1的回归方程的回归系数
coef1
- 过原点模型M2的回归方程的回归系数
coef2
- 双对数模型M3的回归方程的回归系数
coef3
- 线性到对数模型M4的回归方程的回归系数
coef4
- 对数到线性模型M5的回归方程的回归系数
coef5
- 倒数模型M6的回归方程的回归系数
coef6
- 对数倒数模型M7的回归方程的回归系数
coef7
- 线性模型M1的回归方程的回归系数
- 7个模型中计算得到的回归系数\((\hat{\beta}_1,\hat{\beta}_2)\)以向量对象(Vector)
标量对象(Scalar)
的命名规则:
- 7个模型中计算得到的斜率\(\frac{dY}{dX}\)以标量标量对象(Scalar)
形式保存。
- 线性模型M1的回归方程中,Y对X的斜率
slp1
- 过原点模型M2的回归方程中,Y对X的斜率
slp2
- 双对数模型M3的回归方程中,Y对X的斜率
slp3
- 线性到对数模型M4的回归方程中,Y对X的斜率
slp4
- 对数到线性模型M5的回归方程中,Y对X的斜率
slp5
- 倒数模型M6的回归方程中,Y对X的斜率
slp6
- 对数倒数模型M7的回归方程中,Y对X的斜率
slp7
- 线性模型M1的回归方程中,Y对X的斜率
- 7个模型中计算得到的点弹性\(\frac{dY}{dX}\cdot\frac{X_i}{Y_i}\)以标量对象(Scalar)
形式保存。
- 线性模型M1的回归方程中,Y对X的点弹性
els_point1
- 过原点模型M2的回归方程中,Y对X的点弹性
els_point2
- 双对数模型M3的回归方程中,Y对X的点弹性
els_point3
- 线性到对数模型M4的回归方程中,Y对X的点弹性
els_point4
- 对数到线性模型M5的回归方程中,Y对X的点弹性
els_point5
- 倒数模型M6的回归方程中,Y对X的点弹性
els_point6
- 对数倒数模型M7的回归方程中,Y对X的点弹性
els_point7
- 线性模型M1的回归方程中,Y对X的点弹性
- 7个模型中计算得到的平均弹性\(\frac{dY}{dX}\cdot\frac{\bar{X}}{\bar{Y}}\)以标量对象(Scalar)
形式保存。
- 线性模型M1的回归方程中,Y对X的平均弹性
els_avr1
- 过原点模型M2的回归方程中,Y对X的平均弹性
els_avr2
- 双对数模型M3的回归方程中,Y对X的平均弹性
els_avr3
- 线性到对数模型M4的回归方程中,Y对X的平均弹性
els_avr4
- 对数到线性模型M5的回归方程中,Y对X的平均弹性
els_avr5
- 倒数模型M6的回归方程中,Y对X的平均弹性
els_avr6
- 对数倒数模型M7的回归方程中,Y对X的平均弹性
els_avr7
- 线性模型M1的回归方程中,Y对X的平均弹性
- 7个模型中计算得到的斜率\(\frac{dY}{dX}\)以标量标量对象(Scalar)
表格对象(Table)
的命名规则:
- 全部结算结果以表格形式保存,并命名为tab_show
- 全部结算结果以表格形式保存,并命名为tab_show
3.5 主要实验步骤
3.5.1 新建工作文件并导入数据
Eviews操作目标:构建工作文件,成功导入数据
Eviews操作思路:利用EViews代码创建工作文件并导入数据。
在命令视窗中依次输入并运行如下EViews代码:
'创建工作文件(工作文件名=food,子页命名=expenditure),无结构无日期,样本数为1519
wfcreate(wf=food,page=expenditure) u 1519
'导入外部数据,路径为d:\github\books\data\Lab3-family-spends.xlsx
import d:\github\books\data\Lab3-family-spends.xlsx
在工作文件视窗下,可以看到创建的工作文件和导入的数据,可以双击查看(见图3.1):

图 3.1: 创建工作文件并导入数据
3.5.2 绘制三个散点图(Y表示食物支出,X表示家庭总支出)
Eviews操作目标:分析散点图形态,初步了解Y与X的关系
Eviews操作思路:初步尝试绘制三种散点图,分别是:X与Y的散点图;log(X)与log(Y)的散点图;1/X与log(Y)的散点图。
在命令视窗中依次输入并运行如下EViews代码:
'绘制散点图
graph scatter_classic.scat x y
graph scatter_loglog.scat log(x) log(y)
graph scatter_reclog.scat 1/x log(y)
在工作文件视窗下,可以看到如下新生成的图形对象,可以双击查看(见图3.2):
- X与Y的散点图
scatter_classic
- log(X)与log(Y)的散点图
scatter_loglog
- 1/X与log(Y)的散点图
scatter_reclog

图 3.2: 创建工作文件并导入数据
三类散点图对比见图3.3:



图 3.3: 散点图对比
3.5.3 对7类模型进行Eviews回归分析
Eviews操作目标:得到回归方程,查看回归结果
Eviews操作思路:构建回归方程对象
在命令视窗中依次输入并运行如下EViews代码:
' 生成7类线性回归模型的方程对象
equation m1.ls y c x '经典模型m1
equation m2.ls y x '过原点模型m2
equation m3.ls log(y) c log(x) '双对数模型m3
equation m4.ls log(y) c x '对数线性模型m4
equation m5.ls y c log(x) '线性对数模型m5
equation m6.ls y c 1/x '倒数模型m6
equation m7.ls log(y) c 1/x '对数倒数模型m7
在工作文件视窗下,可以看到如下新生成的方程对象,可以双击查看(见图3.4):
- 线性模型M1的回归方程
m1
- 过原点模型M2的回归方程
m2
- 双对数模型M3的回归方程
m3
- 线性到对数模型M4的回归方程
m4
- 对数到线性模型M5的回归方程
m5
- 倒数模型M6的回归方程
m6
- 对数倒数模型M7的回归方程
m7

图 3.4: 生成7个回归方程对象
7类回归方程结果对比分析见图3.5:


图 3.5: 经典模型m1和双对数模型m3的对比
经典线性回归模型m1的简要回归报告如下: \[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&+\hat{\beta}_{1}&&+\hat{\beta}_{2}X\\ \end{alignedat} \tag{3.19} \end{equation}\] \[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&+28.48&&+2.13X\\ &\text{(t)}&&(11.2745)&&(29.6660)\\ &\text{(se)}&&(2.5259)&&(0.0717)\\ &\text{(fitness)}&& n=1519;&& R^2=0.3671;&& \bar{R^2}=0.3667\\ & && F^{\ast}=880.07;&& p=0.0000\\ \end{alignedat} \tag{3.20} \end{equation}\]
过原点模型m2的简要回归报告如下: \[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&+\hat{\beta}_{1}X\\ \end{alignedat} \tag{3.21} \end{equation}\] \[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&+2.88X\\ &\text{(t)}&&(110.7185)\\ &\text{(se)}&&(0.0261)\\ &\text{(fitness)}&& n=1519;&& R^2=0.8898;&& \bar{R^2}=0.8897\\ & && F^{\ast}=12258.59;&& p=0.0000\\ \end{alignedat} \tag{3.22} \end{equation}\]
双对数回归模型m3的简要回归报告如下: \[\begin{equation} \begin{alignedat}{999} &\widehat{log(Y)}=&&+\hat{\beta}_{1}&&+\hat{\beta}_{2}log(X)\\ \end{alignedat} \tag{3.23} \end{equation}\] \[\begin{equation} \begin{alignedat}{999} &\widehat{log(Y)}=&&+2.22&&+0.67log(X)\\ &\text{(t)}&&(29.6904)&&(30.9577)\\ &\text{(se)}&&(0.0746)&&(0.0216)\\ &\text{(fitness)}&& n=1519;&& R^2=0.3872;&& \bar{R^2}=0.3868\\ & && F^{\ast}=958.38;&& p=0.0000\\ \end{alignedat} \tag{3.24} \end{equation}\]
双数线性回归模型m4的简要回归报告如下: \[\begin{equation} \begin{alignedat}{999} &\widehat{log(Y)}=&&+\hat{\beta}_{1}&&+\hat{\beta}_{2}X\\ \end{alignedat} \tag{3.25} \end{equation}\] \[\begin{equation} \begin{alignedat}{999} &\widehat{log(Y)}=&&+3.86&&+0.02X\\ &\text{(t)}&&(173.4843)&&(31.4804)\\ &\text{(se)}&&(0.0222)&&(0.0006)\\ &\text{(fitness)}&& n=1519;&& R^2=0.3951;&& \bar{R^2}=0.3947\\ & && F^{\ast}=991.02;&& p=0.0000\\ \end{alignedat} \tag{3.26} \end{equation}\]
线性对数回归模型m5的简要回归报告如下:
\[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&+\hat{\beta}_{1}&&+\hat{\beta}_{2}log(X)\\ \end{alignedat} \tag{3.27} \end{equation}\] \[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&-133.81&&+67.74log(X)\\ &\text{(t)}&&(-15.3436)&&(26.8078)\\ &\text{(se)}&&(8.7212)&&(2.5269)\\ &\text{(fitness)}&& n=1519;&& R^2=0.3215;&& \bar{R^2}=0.3210\\ & && F^{\ast}=718.66;&& p=0.0000\\ \end{alignedat} \tag{3.28} \end{equation}\]
线性倒数回归模型m6的简要回归报告如下:
\[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&+\hat{\beta}_{1}&&+\hat{\beta}_{2}I(1/X)\\ \end{alignedat} \tag{3.29} \end{equation}\] \[\begin{equation} \begin{alignedat}{999} &\widehat{Y}=&&+148.38&&-1437.00I(1/X)\\ &\text{(t)}&&(57.1834)&&(-20.6754)\\ &\text{(se)}&&(2.5948)&&(69.5030)\\ &\text{(fitness)}&& n=1519;&& R^2=0.2198;&& \bar{R^2}=0.2193\\ & && F^{\ast}=427.47;&& p=0.0000\\ \end{alignedat} \tag{3.30} \end{equation}\]
对数倒数回归模型m7的简要回归报告如下:
\[\begin{equation} \begin{alignedat}{999} &\widehat{log(Y)}=&&+\hat{\beta}_{1}&&+\hat{\beta}_{2}I(1/X)\\ \end{alignedat} \tag{3.31} \end{equation}\] \[\begin{equation} \begin{alignedat}{999} &\widehat{log(Y)}=&&+5.03&&-14.95I(1/X)\\ &\text{(t)}&&(226.2858)&&(-25.1160)\\ &\text{(se)}&&(0.0222)&&(0.5954)\\ &\text{(fitness)}&& n=1519;&& R^2=0.2937;&& \bar{R^2}=0.2932\\ & && F^{\ast}=630.81;&& p=0.0000\\ \end{alignedat} \tag{3.32} \end{equation}\]
3.5.4 提取各类回归方程的回归系数
Eviews操作目标:得到各类回归的回归系数
Eviews操作思路:用EViews代码提取各类回归方程中的回归系数
在命令视窗中依次输入并运行如下EViews代码:
'得到7个线性回归模型的回归系数(向量)
vector(2) coef1=m1.@coefs
vector(1) coef2=m2.@coefs
vector(2) coef3=m3.@coefs
vector(2) coef4=m4.@coefs
vector(2) coef5=m5.@coefs
vector(2) coef6=m6.@coefs
vector(2) coef7=m7.@coefs
在工作文件视窗下,可以看到如下新生成的向量对象,可以双击查看(见图3.6):
- 线性模型M1的回归方程的回归系数
coef1
- 过原点模型M2的回归方程的回归系数
coef2
- 双对数模型M3的回归方程的回归系数
coef3
- 线性到对数模型M4的回归方程的回归系数
coef4
- 对数到线性模型M5的回归方程的回归系数
coef5
- 倒数模型M6的回归方程的回归系数
coef6
- 对数倒数模型M7的回归方程的回归系数
coef7

图 3.6: 提取得到7个回归方程的回归系数
3.5.5 给出指定的样本数据点(X0,Y0)
- Eviews操作目标:给出指定的样本数据点,便于后续计算使用
- Eviews操作思路:把样本数据点录入EViews工作视窗
在命令视窗中依次输入并运行如下EViews代码:
' 给定样本数据点(X0, Y0)
scalar x0=100
scalar Y0=30
在工作文件视窗下,可以看到如下新生成的标量对象,可以双击查看(见图3.7):
- 样本点数据X0
x0
- 样本点数据Y0
y0

图 3.7: 提取得到7个回归方程的回归系数
3.5.6 得到7个线性模型中y对x在(X0,Y0)处的点斜率
- Eviews操作目标:得到各类模型的点斜率
- Eviews操作思路:根据理论公式,计算各类模型的点斜率
在命令视窗中依次输入并运行如下EViews代码:
'得到7个线性回归模型中y对x在(X0,Y0)处点斜率
scalar slp1= coef1(2)
scalar slp2= coef2(1)
scalar slp3= coef3(2)*x0/y0
scalar slp4= coef4(2)*y0
scalar slp5= coef5(2)/x0
scalar slp6= coef6(2)/x0^2
scalar slp7= coef7(2)*y0/x0^2
在工作文件视窗下,可以看到如下新生成的标量对象,可以双击查看(见图3.8):
* 线性模型M1的回归方程中,Y对X的斜率slp1
* 过原点模型M2的回归方程中,Y对X的斜率
slp2
* 双对数模型M3的回归方程中,Y对X的斜率
slp3
* 线性到对数模型M4的回归方程中,Y对X的斜率
slp4
* 对数到线性模型M5的回归方程中,Y对X的斜率
slp5
* 倒数模型M6的回归方程中,Y对X的斜率
slp6
* 对数倒数模型M7的回归方程中,Y对X的斜率
slp7

图 3.8: 计算得到7个回归方程中Y对X的斜率
3.5.7 得到7个线性模型中y对x在(X0,Y0)处的点弹性
- Eviews操作目标:得到各类模型的点弹性
- Eviews操作思路:根据理论公式,计算各类模型的点弹性
在命令视窗中依次输入并运行如下EViews代码:
'得到7个线性回归模型中y对x在(X0,Y0)处的点弹性
scalar els_point1= coef1(2)*x0/y0
scalar els_point2= coef2(1)*x0/y0
scalar els_point3= coef3(2)
scalar els_point4= coef4(2)*x0
scalar els_point5= coef5(2)/y0
scalar els_point6= -coef6(2)/(x0*y0)
scalar els_point7= coef7(2)/x0
在工作文件视窗下,可以看到如下新生成的标量对象,可以双击查看(见图3.9):
* 线性模型M1的回归方程中,Y对X的点弹性els_point1
* 过原点模型M2的回归方程中,Y对X的点弹性
els_point2
* 双对数模型M3的回归方程中,Y对X的点弹性
els_point3
* 线性到对数模型M4的回归方程中,Y对X的点弹性
els_point4
* 对数到线性模型M5的回归方程中,Y对X的点弹性
els_point5
* 倒数模型M6的回归方程中,Y对X的点弹性
els_point6
* 对数倒数模型M7的回归方程中,Y对X的点弹性
els_point7

图 3.9: 计算得到7个回归方程中Y对X的斜率
3.5.8 得到7个线性模型中y对x的平均弹性
- Eviews操作目标:得到各类模型的平均弹性
- Eviews操作思路:根据理论公式,计算各类模型的平均弹性
在命令视窗中依次输入并运行如下EViews代码:
'得到7个线性回归模型中y对x的平均弹性
scalar els_avr1= coef1(2)*@mean(x)/@mean(y)
scalar els_avr2= coef2(1)*@mean(x)/@mean(y)
scalar els_avr3= coef3(2)
scalar els_avr4= coef4(2)*@mean(x)
scalar els_avr5= coef5(2)/@mean(y)
scalar els_avr6= -coef6(2)/(@mean(x)*@mean(y))
scalar els_avr7= coef7(2)/@mean(x)
在工作文件视窗下,可以看到如下新生成的标量对象,可以双击查看(见图3.10):
* 线性模型M1的回归方程中,Y对X的平均弹性els_avr1
* 过原点模型M2的回归方程中,Y对X的平均弹性
els_avr2
* 双对数模型M3的回归方程中,Y对X的平均弹性
els_avr3
* 线性到对数模型M4的回归方程中,Y对X的平均弹性
els_avr4
* 对数到线性模型M5的回归方程中,Y对X的平均弹性
els_avr5
* 倒数模型M6的回归方程中,Y对X的平均弹性
els_avr6
* 对数倒数模型M7的回归方程中,Y对X的平均弹性
els_avr7

图 3.10: 计算得到7个回归方程中Y对X的斜率
3.5.9 把所有计算结果制作成表格
- Eviews操作目标:将所有计算结果制作成表格,便于数据对比
- Eviews操作思路:用EViews代码操作表格对象
在命令视窗中依次输入并运行如下EViews代码:
' 把所有结果制作成表格
table(8,4) tab_show '构造8行4列的表格
tab_show(1,1)="model" '第1列存放模型代号
tab_show(2,1)="m1"
tab_show(3,1)="m2"
tab_show(4,1)="m3"
tab_show(5,1)="m4"
tab_show(6,1)="m5"
tab_show(7,1)="m6"
tab_show(8,1)="m7"
tab_show(1,2)="slop" '第2列存放Y对X的点斜率
tab_show(2,2)=slp1
tab_show(3,2)=slp2
tab_show(4,2)=slp3
tab_show(5,2)=slp4
tab_show(6,2)=slp5
tab_show(7,2)=slp6
tab_show(8,2)=slp7
tab_show(1,3)="els_point" '第3列存放Y对X的点弹性
tab_show(2,3)=els_point1
tab_show(3,3)=els_point2
tab_show(4,3)=els_point3
tab_show(5,3)=els_point4
tab_show(6,3)=els_point5
tab_show(7,3)=els_point6
tab_show(8,3)=els_point7
tab_show(1,4)="els_avr" '第4列存放Y对X的平均弹性
tab_show(2,4)=els_avr1
tab_show(3,4)=els_avr2
tab_show(4,4)=els_avr3
tab_show(5,4)=els_avr4
tab_show(6,4)=els_avr5
tab_show(7,4)=els_avr6
tab_show(8,4)=els_avr7
在工作文件视窗下,可以看到如下新生成的表格对象tab_show,可以双击查看(见图3.11)。

图 3.11: 计算结果对比分析表
7类回归方程计算结果对比分析见图3.12:

图 3.12: 7类回归方程计算结果对比
3.5.10 对倒数模型\(M_6\)进行Eviews回归分析并提取回归系数
Eviews操作目标:得到\(Y_i\)相对于\(1/X_i\)的Eviews回归报告,提取回归系数
Eviews操作思路:
利用常规流程获得Eviews回归分析:
- 菜单操作:Quick–>estimate equation–>
y c 1/x
- 菜单操作:Quick–>estimate equation–>
保存好分析报告(建议命名为m6):
- 菜单操作:Name–>m6
提取报告中的回归系数(建议命名为
coef6
):- 命令操作:
coef coef6=c
- 命令操作:
Eviews操提示:两个Eviews模型内置对象(
C和
rsid)
C和
rsid都是Eviews模型内置对象,一旦建立workfile就会系统产生,用户不能对它进行删除或重命名(delete or rename)操作。
C属于系数对象(coef object),这类对象主要用于表示系数列向量(coefficient column vector)。
C是用来装载回归模型的系数\(\hat{\beta}_1\)和\(\hat{\beta}_2\)……
resid属于序列对象(series object),这类对象主要用于表示序列(series)。
resid是用来装载回归模型的残差\(e_i\)
C和
rsid是“临时容器”。它们只会装载最近一次Eviews建模分析(Estimate Equation)时的回归系数\(\hat{\beta}_i\)和回归残差\(e_i\)。一旦用户进行了新的Eviews建模分析(Estimate Equation)操作,它们就立即会被最新回归建模的系数和残差信息所“更新”。
如果用户要创建多个回归方程,又想保留每个回归方程的回归系数\(\hat{\beta}_i\)和残差\(e_i\),可以通过下面两种方法将结果从“临时容器”中提取出来,并保存到指定的对象中去:
- 键鼠操作法。对
C或
rsid右键拷贝(copy),然后在窗口区粘贴(paste),并进行重命名,保存。
- 命令操作法。
* 在命令窗口中输入Eviews命令
coef c01=c
,即可得到当前回归模型系数C的复制品
c01
(用户可以自己定义对象名称)。 * 在命令窗口中输入Eviews命令series resid01=resid
,即可得到当前回归模型系数resid的复制品
resid01
(用户可以自己定义对象名称)。
- 键鼠操作法。对
“临时容器”
C和
rsid按照Eviews建模先后次序不断被“更新”信息(分别是回归系数和残差序列)。“更新”基本原则是“依次占据对象的空间位置”。
- 回归方程的系数\(\hat{\beta}_i\)会依次占据
C对象的第1个单元格、第2个单元格、……,回归系数个数占据空间位置的多少因模型方程的不同而不同。尤其要注意的情形是:上一次操作回归模型的回归系数多,而最近一次操作回归模型的回归系数少。
- 回归方程的残差
resid在同一个工作文件(workfile)下,用户进行各类模型操作的样本数大多保持相同,因此,最近依次模型操作一般都会“完全更新”上一次模型操作的残差序列。
- 回归方程的系数\(\hat{\beta}_i\)会依次占据

图 3.13: 构造倒数模型的回归方程

图 3.14: 提取回归方程的系数
3.5.11 倒数模型\(M_6\)情形下,计算Y相对于X的点斜率\((X_0=100,Y_0=30)\)点斜率(slope)
Eviews操作目标:得到Y相对于X的点斜率\((X_0=100,Y_0=30)\)点斜率(slope)
总体回归模型(PRM):\(Y_i=\beta_1+\beta_2/X_i+u_i\)
点斜率计算公式:\(\beta_2/X_i^2\)
Eviews操作思路:
提取
coef6
的第二个值(也即\(\hat{\beta}_2\)),利用斜率公式计算得到Y相对于X的点斜率(建议命名为slp6):- 命令操作:
scalar slp6= -coef6(2)/100^2
- 命令操作:

图 3.15: 得到Y对X的点斜率
3.5.12 倒数模型\(M_6\)情形下,计算Y相对于X的平均弹性(elasticity)
Eviews操作目标:得到Y相对于X的平均弹性(elasticity)
总体回归模型(PRM):\(Y_i=\beta_1+\beta_2/X_i+u_i\)
平均弹性计算公式:\(-\beta_2/(\bar{X}\bar{Y}\)
Eviews操作思路:
求出标量\(\bar{X}\)和\(\bar{Y}\)(建议分别命名为x_mean和y_mean):
命令操作:
scalar x_mean=@mean(x)
命令操作:
scalar y_mean=@mean(y)
提取
coef6
的第二个值(也即\(\hat{\beta}_2\)),利用平均弹性公式计算得到Y相对于X的平均弹性(建议命名为els6):- 命令操作:
scalar els6= -coef6(2)/(x_mean*y_mean)
- 命令操作:

图 3.16: 得到Y和X的均值

图 3.17: 得到Y对X的平均弹性
—>
3.6 附录:prg源代码
'=========================================================================================================
'说明:以下为EViews编程文件foodexp.prg的代码
'将展示第三章中“英国家庭食物支出案例”主要分析步骤的“批量式命令驱动”实现方法(::
'其中,符号'起始的行,为注释行,其他为EViews命令行。
'=========================================================================================================
'创建工作文件(工作文件名=food,子页命名=expenditure),无结构无日期,样本数为1519
wfcreate(wf=food,page=expenditure) u 1519
'导入外部数据,路径为d:\github\books\data\Lab3-family-spends.xlsx
import d:\github\books\data\Lab3-family-spends.xlsx
' 给定样本数据点(X0, Y0)
scalar x0=100
scalar Y0=30
' 生成7类线性回归模型的方程对象
equation m1.ls y c x '经典模型m1
equation m2.ls y x '过原点模型m2
equation m3.ls log(y) c log(x) '双对数模型m3
equation m4.ls log(y) c x '对数线性模型m4
equation m5.ls y c log(x) '线性对数模型m5
equation m6.ls y c 1/x '倒数模型m6
equation m7.ls log(y) c 1/x '对数倒数模型m7
'得到7个线性回归模型的回归系数(向量)
vector(2) coef1=m1.@coefs
vector(1) coef2=m2.@coefs
vector(2) coef3=m3.@coefs
vector(2) coef4=m4.@coefs
vector(2) coef5=m5.@coefs
vector(2) coef6=m6.@coefs
vector(2) coef7=m7.@coefs
'得到7个线性回归模型中y对x在(X0,Y0)处点斜率
scalar slp1= coef1(2)
scalar slp2= coef2(1)
scalar slp3= coef3(2)*x0/y0
scalar slp4= coef4(2)*y0
scalar slp5= coef5(2)/x0
scalar slp6= coef6(2)/x0^2
scalar slp7= coef7(2)*y0/x0^2
'得到7个线性回归模型中y对x在(X0,Y0)处的点弹性
scalar els_point1= coef1(2)*x0/y0
scalar els_point2= coef2(1)*x0/y0
scalar els_point3= coef3(2)
scalar els_point4= coef4(2)*x0
scalar els_point5= coef5(2)/y0
scalar els_point6= -coef6(2)/(x0*y0)
scalar els_point7= coef7(2)/x0
'得到7个线性回归模型中y对x的平均弹性
scalar els_avr1= coef1(2)*@mean(x)/@mean(y)
scalar els_avr2= coef2(1)*@mean(x)/@mean(y)
scalar els_avr3= coef3(2)
scalar els_avr4= coef4(2)*@mean(x)
scalar els_avr5= coef5(2)/@mean(y)
scalar els_avr6= -coef6(2)/(@mean(x)*@mean(y))
scalar els_avr7= coef7(2)/@mean(x)
' 把所有结果制作成表格
table(8,4) tab_show '构造8行4列的表格
tab_show(1,1)="model" '第1列存放模型代号
tab_show(2,1)="m1"
tab_show(3,1)="m2"
tab_show(4,1)="m3"
tab_show(5,1)="m4"
tab_show(6,1)="m5"
tab_show(7,1)="m6"
tab_show(8,1)="m7"
tab_show(1,2)="slop" '第2列存放Y对X的点斜率
tab_show(2,2)=slp1
tab_show(3,2)=slp2
tab_show(4,2)=slp3
tab_show(5,2)=slp4
tab_show(6,2)=slp5
tab_show(7,2)=slp6
tab_show(8,2)=slp7
tab_show(1,3)="els_point" '第3列存放Y对X的点弹性
tab_show(2,3)=els_point1
tab_show(3,3)=els_point2
tab_show(4,3)=els_point3
tab_show(5,3)=els_point4
tab_show(6,3)=els_point5
tab_show(7,3)=els_point6
tab_show(8,3)=els_point7
tab_show(1,4)="els_avr" '第4列存放Y对X的平均弹性
tab_show(2,4)=els_avr1
tab_show(3,4)=els_avr2
tab_show(4,4)=els_avr3
tab_show(5,4)=els_avr4
tab_show(6,4)=els_avr5
tab_show(7,4)=els_avr6
tab_show(8,4)=els_avr7
' ===========================================================================
3.7 作业题
家庭食物支出:表3.3给出了1980-1982年间英国家庭支出调查中1522个家庭在Y家庭总支出(10英镑),X食物支出(10英镑)等方面的数据。数据只包括住在伦敦市区和市郊有1~2个子女的家庭,样本不包括自我雇佣和退休家庭。
X1 | X | Ydata1 | Ydata2 | Ydata3 | Ydata4 | Ydata5 | Ydata6 |
---|---|---|---|---|---|---|---|
id | X | 2015014495 | 2016010317 | 2016011222 | 2016013000 | 2016014336 | 2016014344 |
name | X | 刘琳 | 王雪明 | 韩双瑞 | 任畅 | 黄艺婕 | 高泽川 |
class | X | 保险1601 | 保险1601 | 保险1601 | 保险1601 | 保险1601 | 保险1601 |
n1 | 21.36 | 50.78 | 51.06 | 50.62 | 50.67 | 47.49 | 49.79 |
n2 | 33.651000000000003 | 89.16 | 88.76 | 88.94 | 88.49 | 89.11 | 89.43 |
n3 | 34.938000000000002 | 180.14 | 181.67 | 181.26 | 178.85 | 179.53 | 180.55 |
n1516 | 19.509 | 70.650000000000006 | 68.010000000000005 | 70.150000000000006 | 70.64 | 72.680000000000007 | 69.92 |
n1517 | 32.979999999999997 | 98.89 | 99.57 | 99.97 | 100.03 | 100 | 98.21 |
n1518 | 78.793000000000006 | 131.66 | 129.16 | 129.58000000000001 | 129.87 | 129 | 128.93 |
n1519 | 26.39 | 139.76 | 140.97 | 138.94 | 140.99 | 140.04 | 140.97 |
变量说明见表3.4:
variable | label |
---|---|
obs | 家庭编号ID |
Y | 家庭总支出(10英镑) |
X | 食物支出(10英镑) |
根据上述资料请回答如下问题:
利用家庭总支出(Y)与食物支出(X)数据,通过对表\(\ref{modelslc}\) 中概括的各类模型,对变量进行相应变换,并分别作出散点图(七个图)。(提示:分别把图拷贝过来)
利用家庭总支出(Y)与食物支出(X)数据,对表\(\ref{modelslc}\) 中概括的各类模型进行回归拟合(七个模型)?(提示:分别把分析报告截图复制过来)
利用(b)的分析结果,分别计算各模型的平均弹性(els)以及在点\((X_0=100,Y_0=30)\)处的斜率(slp)。
基于(a)和 (b) 中得到的结果,你认为哪个模型看来比较适当?