目录

  • 多元线性回归
  • 因变量预测
  • 化为线性的非线性实例
  • 虚拟变量问题
  • 受约束回归
  • 多重共线性
  • 异方差性
  • 内生解释变量问题(待更)


多元线性回归

模型假设:
假设中国2013年各地区人均现金消费支出与工资性收入、其他收入之间的关系为:
Ypython 计量 python计量经济学建模 案例_python 计量+python 计量 python计量经济学建模 案例_拟合_02+python 计量 python计量经济学建模 案例_拟合_03+python 计量 python计量经济学建模 案例_拟合_04
通过python 计量 python计量经济学建模 案例_多元线性回归_05python 计量 python计量经济学建模 案例_多元线性回归_06库对数据进行回归计算:

import statsmodels.api as sm
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn import model_selection

data = pd.read_excel(r'./计量经济学数据.xlsx', sheet_name='Sheet1')
fit = sm.formula.ols(formula='现金消费支出Y ~ 工资性收入X1 + 其他收入X2', data=data).fit()
print(fit.summary())

python 计量 python计量经济学建模 案例_拟合_07

sns.lmplot(x='工资性收入X1', y='现金消费支出Y', data=data, ci=None)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.show()
sns.pairplot(data.loc[:, ['现金消费支出Y', '工资性收入X1', '其他收入X2']])
# 显示图形
plt.show()

python 计量 python计量经济学建模 案例_多元线性回归_08


python 计量 python计量经济学建模 案例_多元线性回归_09

模型检验:
python 计量 python计量经济学建模 案例_拟合_10
python 计量 python计量经济学建模 案例_拟合_11不全部为零

拟合优度检验:
从回归估计来看,模型拟合较好,可决系数python 计量 python计量经济学建模 案例_拟合_12
F检验:
F值为166.6,查表得python 计量 python计量经济学建模 案例_多元线性回归_13,其中k=2,n=31,显然有python 计量 python计量经济学建模 案例_多元线性回归_14,表明模型的线性关系在5%的显著水平下显著成立.所以拒绝原假设。
t检验:
python 计量 python计量经济学建模 案例_多元线性回归_15
由于python 计量 python计量经济学建模 案例_多元线性回归_16,所以拒绝零假设.
综上可得中国2013年各地区人均现金消费支出与工资性收入、其他收入之间的关系为:
python 计量 python计量经济学建模 案例_拟合_17
python 计量 python计量经济学建模 案例_拟合_18即其他收入对人均现金消费支出的贡献率要大于工资性收入。(此处有疑问,难道大家都靠外快过活吗?)

因变量预测

有时建立完模型并对其进行检验后,还需观察实际值和预测值具体情况,以确定模型的可用性。

data4 = pd.read_excel(r'./计量经济学数据.xlsx', sheet_name='Sheet1')
train, test = model_selection.train_test_split(data4, test_size=0.2, random_state=1234)
fit4 = sm.formula.ols(formula='现金消费支出Y ~ 工资性收入X1 + 其他收入X2', data=train).fit()
test_X = test.drop(labels='现金消费支出Y', axis=1)
pred = fit4.predict(exog=test_X)
print('对比预测值和实际值:\n', pd.DataFrame({'prediction': pred, 'real': test.现金消费支出Y}))
对比预测值和实际值:
    prediction    real
7   13874.648201  14161.7
10  25068.272118  23257.2
4   16645.508042  19249.1
1   21539.239415  21711.9
29  15077.077324  15321.1
8   28477.482744  28155.0
3   15073.999588  13166.2

由预测值和实际值对比可以看出,有的预测值和实际值相差比较大,但总体上来说预测值与实际值比较接近,也就一定程度上说明了这个模型的可用性。

化为线性的非线性实例

模型假设:

由Cobb-Dauglas生产函数python 计量 python计量经济学建模 案例_python_19,A代表既定的工程技术水平,python 计量 python计量经济学建模 案例_拟合_20python 计量 python计量经济学建模 案例_python 计量_21分别为资本与劳动投入的产出弹性,当python 计量 python计量经济学建模 案例_python 计量_22,当大于1或小于1时,表明规模收益递增或递减。为了便于比较,下面将会对此模型进行线性变换,即假设2010年中国制造业各行业的总产出及要素投入的关系为:
python 计量 python计量经济学建模 案例_python_23

data2 = pd.read_excel(r'./计量经济学数据.xlsx', sheet_name='Sheet2')
fit2 = sm.formula.ols(formula='np.log(工业总产值) ~ np.log(资本投入) + np.log(年均从业人员)', data=data2).fit()
fit2.summary()

python 计量 python计量经济学建模 案例_python_24

sns.pairplot(data2.loc[:, ['工业总产值', '资本投入', '年均从业人员']])
plt.show()

python 计量 python计量经济学建模 案例_多元线性回归_25

模型检验:

python 计量 python计量经济学建模 案例_python_26
python 计量 python计量经济学建模 案例_多元线性回归_27不全部为零
拟合优度检验:
从回归估计来看,模型拟合较好,可决系数python 计量 python计量经济学建模 案例_python 计量_28
F检验:
F值为286.3,查表得python 计量 python计量经济学建模 案例_多元线性回归_29,其中python 计量 python计量经济学建模 案例_多元线性回归_30python 计量 python计量经济学建模 案例_python_31,显然有python 计量 python计量经济学建模 案例_多元线性回归_14,表明模型的线性关系在5%的显著水平下显著成立.所以拒绝原假设。
t检验:
python 计量 python计量经济学建模 案例_多元线性回归_33
由于python 计量 python计量经济学建模 案例_多元线性回归_16,所以拒绝零假设.
综上可得2010年中国制造业各行业的总产出及要素投入的关系为:python 计量 python计量经济学建模 案例_python 计量_35,以上结果表明,在2010年,中国工业总产出关于资本投入的产出弹性为0.6778,表明当其他因素不变时,工业的资本每增加1%,总产出将增加0.6778%,同样地,当其他因素不变时,劳动力投入每增长1%,总产出将增加0.2911%,可见,资本投入的增加对工业总产出的增长起到了更大的作用。

虚拟变量问题

在一些数据中,通常会有一些变量无法通过量化来进行处理,但是这些变量往往对模型结果产生较大的影响,所以,这类因素是无法被丢弃的,因此引入了“虚拟变量”,又叫做哑变量,来进行“量化处理”。下面我们将会以城镇居民为基准线对2013年中国农村与城镇居民家庭人均工资收入、其他收入和生活消费支出进行模型建立。
假设模型为:
python 计量 python计量经济学建模 案例_python 计量_36

data3 = pd.read_excel(r'./计量经济学数据.xlsx', sheet_name='Sheet3')
fit3 = sm.formula.ols(formula='生活消费 ~ 工资收入 + 其他收入 + C(农村or城镇)', data=data3).fit()
fit3.summary()

python 计量 python计量经济学建模 案例_python_37

模型检验:

python 计量 python计量经济学建模 案例_python_26
python 计量 python计量经济学建模 案例_多元线性回归_27不全部为零
拟合优度检验:
从回归估计来看,模型拟合较好,可决系数python 计量 python计量经济学建模 案例_多元线性回归_40
F检验:
F值为758.1,查表得python 计量 python计量经济学建模 案例_拟合_41,其中k=3,n=62,显然有python 计量 python计量经济学建模 案例_多元线性回归_14,表明模型的线性关系在5%的显著水平下显著成立.所以拒绝零假设。
t检验:
python 计量 python计量经济学建模 案例_python_43
python 计量 python计量经济学建模 案例_拟合_44,所以拒绝零假设.
综上可得2013年中国农村与城镇居民家庭人均工资收入、其他收入和生活消费支出的关系为:
python 计量 python计量经济学建模 案例_python 计量_45城镇居民,
以上结果表明,当其他因素不变时,中国城镇居民平均消费支出比农村居民平均消费水平多140.8608元。

受约束回归

在建立回归模型时,有时根据经济理论需要对自变量之间的关系进行约束,比如两个回归系数python 计量 python计量经济学建模 案例_python 计量_46python 计量 python计量经济学建模 案例_多元线性回归_47之间的约束条件使得python 计量 python计量经济学建模 案例_python 计量_48或者使得python 计量 python计量经济学建模 案例_python_49,此时称为此回归模型为受约束回归。

首先建立无约束回归模型
即:python 计量 python计量经济学建模 案例_拟合_50

import statsmodels.api as sm
data4 = pd.read_excel(r'./计量经济学数据.xlsx', sheet_name='Sheet4')
Q = data4["蛋类消费量Q(千克)"]
X = data4["人均消费支出X(元)"]
P0 = data4["居民消费价格指数P0"]
P = data4["蛋类P(价格指数)"]
P1 = data4["肉禽类P1(价格指数)"]
P2 = data4["水产类P2(价格指数)"]
P01 = data4["粮食P3(价格指数)"]
P02 = data4["油脂P4(价格指数)"]
P03 = data4["蔬菜P5(价格指数)"]
df = pd.DataFrame({"log(X/P0)":np.log(X/P0),
                  "P1/P":P1/P,
                 "P2/P":P2/P,
                  "P01":P01,
                  "P02":P02,
                  "P03":P03},)
df = sm.add_constant(df)
fit = sm.OLS(np.log(Q),df).fit()
fit.summary()

python 计量 python计量经济学建模 案例_多元线性回归_51

模型检验:
python 计量 python计量经济学建模 案例_python_26
python 计量 python计量经济学建模 案例_多元线性回归_27不全部为零
拟合优度检验:
从回归估计来看,调整的可决系数python 计量 python计量经济学建模 案例_拟合_54,但是此回归结果并不作为预测模型来进行预测,所以可以不必过分关注可决系数.
F检验:
F值为 4.641,python 计量 python计量经济学建模 案例_python_55,表明模型的线性关系在5%的显著水平下显著成立,所以拒绝零假设。
t检验:
以上结果除变量log(X/P0)P2/P在5%的显著水平下拒绝原假设,其他变量均无法通过t检验,在其他条件不变的情况下,农村人均消费支出会明显增加蛋类消费量,同时,当水产类价格上升速度大于蛋类产品时,会刺激农村消费者倾向于消费更多的蛋类产品,即在农村消费者的消费倾向中,水产品类与蛋类产品有一定的替代作用。

建立受约束回归模型
约束条件为python 计量 python计量经济学建模 案例_python_56,即回归模型为python 计量 python计量经济学建模 案例_python_57

python 计量 python计量经济学建模 案例_多元线性回归_58

从以上结果可以看出,在约束条件下,线性关系检验(F检验)和回归系数检验(t检验)在5%的显著水平下更加显著,拒绝原假设的理由更加充分,即更加印证了无约束回归所说明的结论。

多重共线性

检测方法以及解决办法详见下面链接。
链接: 多重共线性.

异方差性

异方差性:对于模型python 计量 python计量经济学建模 案例_多元线性回归_59,其中残差python 计量 python计量经济学建模 案例_python_60的方差随着python 计量 python计量经济学建模 案例_python 计量_61的变化而变化,而不是一个常数,这就说明模型存在异方差性,当然这只是模型假设的一个理想条件。
异方差性的后果:(1)参数估计量非有效(2)变量的显著性检验失去意义(3)模型预测失效
检验方法:(1)图示法(2)布罗施-帕甘检验(3)怀特检验

下面我们通过参考书上的案例来进行具体分析。
模型假设为python 计量 python计量经济学建模 案例_python 计量_62

data7 = pd.read_excel(r'./计量经济学数据.xlsx', sheet_name='Sheet7')
X = np.log(data7.loc[:,[ '从事农业经营的纯收入X1', '其他来源纯收入X2']])
Y = np.log(data7["人均消费支出Y"])
X = sm.add_constant(X)
fit = sm.OLS(Y,X).fit()
fit.summary()

python 计量 python计量经济学建模 案例_python 计量_63

从拟合结果来看,很明显常数项、变量python 计量 python计量经济学建模 案例_拟合_64python 计量 python计量经济学建模 案例_拟合_65都无法通过python 计量 python计量经济学建模 案例_拟合_66检验,从拟合参数来看,变量python 计量 python计量经济学建模 案例_拟合_65对因变量的解释性更大,所以如果存在异方差性,则更有可能变量python 计量 python计量经济学建模 案例_拟合_65引起的,下面我们来进行异方差性检验。

  1. 图示法

计算残差并绘制异方差性检验图,即python 计量 python计量经济学建模 案例_拟合_69python 计量 python计量经济学建模 案例_拟合_65的散点图。

plt.figure(figsize=(12,8))
plt.scatter(X["其他来源纯收入X2"],np.power(fit.predict(X)-Y,2))
fit.predict(X)
plt.title("异方差性检验图",fontsize=16)
plt.show()

python 计量 python计量经济学建模 案例_多元线性回归_71

从图中可以看出,拟合模型中可能存在异方差性,而且存在着递增型异方差性,但是从图形并不能很直接的说明问题,存在一定的主观因素在里面,所以下面另外两种方法更为直接地检验一下。

  1. 布罗施-帕甘检验

将原模型普通最小二乘法估计的残差项的平方后关于变量python 计量 python计量经济学建模 案例_拟合_65做回归。
模型假设为python 计量 python计量经济学建模 案例_python_73

e2=np.power(fit.predict(X)-Y,2)
X2 = sm.add_constant(X["其他来源纯收入X2"])
fit2 = sm.OLS(e2,X2).fit()
fit2.summary()

python 计量 python计量经济学建模 案例_多元线性回归_74

从上图可以得出残差平方与变量python 计量 python计量经济学建模 案例_拟合_65的拟合方程python 计量 python计量经济学建模 案例_python 计量_76,同时在5%的显著水平都通过了python 计量 python计量经济学建模 案例_拟合_66检验,同时在5%显著水平下也通过了python 计量 python计量经济学建模 案例_多元线性回归_78检验。综上即可说明在5%的显著水平下拒绝原模型随机干扰项方差相同的原假设,即原模型存在异方差性。

  1. 怀特检验

python 计量 python计量经济学建模 案例_拟合_79为对原模型进行普通最小二乘回归得到的残差平方,将其与python 计量 python计量经济学建模 案例_多元线性回归_80及其平方项与交叉项作辅助回归。
模型假设为python 计量 python计量经济学建模 案例_多元线性回归_81

X["从事农业经营的纯收入(X1)^2"]=np.power(X["从事农业经营的纯收入X1"],2)
X["其他来源纯收入(X2)^2"]=np.power(X["其他来源纯收入X2"],2)
X["X1*X2"]=X["从事农业经营的纯收入X1"]*X["其他来源纯收入X2"]
X3=X
fit3 = sm.OLS(e2,X3).fit()
fit3.summary()

python 计量 python计量经济学建模 案例_拟合_82

从上图可以清楚的看到,在5%的显著水平下,拟合方程在线性关系检验上是显著的,也就是拒绝了原拟合方程同方差的原假设,即原拟合方程存在异方差性。

内生解释变量问题(待更)