文章目录

  • 模型
  • 回归模型
  • 估计的多元回归方程
  • 最小二乘估计
  • β ^ \hat{\beta} β^的性质
  • 拟合优度检验
  • 多重判定系数
  • 估计标准误差
  • 显著性检验
  • 线性关系的检验
  • 回归系数的检验
  • 多重共线性
  • 预测
  • 变量选择与逐步回归
  • 实战


模型

一元回归模型在二维空间中是一条直线,而多元回归模型,由于自变量的增加,它在更高维的空间中显示,因此很难将它画出来,相比一元回归模型,用归纳的方法将多元回归模型表述出来。

回归模型

多元线性回归的模型为多元回归理论 多元回归的模型_数学建模多元回归理论 多元回归的模型_统计学_02是回归系数,多元回归理论 多元回归的模型_统计学_03为误差项。

于是得到多元回归方程:
多元回归理论 多元回归的模型_统计学_04
它描述了多元回归理论 多元回归的模型_统计模型_05多元回归理论 多元回归的模型_统计学_06之间的关系。

现有多元回归理论 多元回归的模型_统计模型_07个独立观测数据多元回归理论 多元回归的模型_多元回归理论_08多元回归理论 多元回归的模型_统计模型_09,有
多元回归理论 多元回归的模型_数学建模_10

为了将模型简化,用矩阵的形式表示该模型,


多元回归理论 多元回归的模型_python_11

则有
多元回归理论 多元回归的模型_数学建模_12

和一元线性回归类似,假设:

  • 多元回归理论 多元回归的模型_统计模型_13,即该矩阵列满秩
  • 满足多元回归理论 多元回归的模型_统计模型_14条件
  • 多元回归理论 多元回归的模型_数学建模_15,其中多元回归理论 多元回归的模型_统计模型_16多元回归理论 多元回归的模型_统计学_17阶单位阵

根据假设,则有
多元回归理论 多元回归的模型_多元回归理论_18

估计的多元回归方程

估计样本的多元回归方程,总体回归参数多元回归理论 多元回归的模型_统计学_02是未知的,因此我们需要用样本去估计它们,其估计的回归方程为:
多元回归理论 多元回归的模型_python_20

最小二乘估计

和一元的一样,我们要估计未知的参数多元回归理论 多元回归的模型_统计学_02,采用最小二乘法。
在一元中,我们知道要使得拟合误差(即残差)平方和最小,即多元回归理论 多元回归的模型_多元回归理论_22最小。
同样的,记
多元回归理论 多元回归的模型_统计学_23

多元回归理论 多元回归的模型_统计模型_24
这时对每个估计参数求偏导,得到以下偏导方程组,
多元回归理论 多元回归的模型_多元回归理论_25

整理得到,
多元回归理论 多元回归的模型_python_26
由于式子太多,为了方便,用矩阵表示,即
多元回归理论 多元回归的模型_统计学_27

前面我们假设多元回归理论 多元回归的模型_统计模型_28矩阵列满秩,则多元回归理论 多元回归的模型_统计模型_29为可逆矩阵,那么就可以得到
多元回归理论 多元回归的模型_统计学_30
最后得到估计的方程
多元回归理论 多元回归的模型_python_31

并且由方程组我们可以知道,
多元回归理论 多元回归的模型_多元回归理论_32

将上面的等式写成矩阵的形式,即
多元回归理论 多元回归的模型_统计模型_33
其中多元回归理论 多元回归的模型_统计模型_34多元回归理论 多元回归的模型_统计模型_28为一开始表示的矩阵。

多元回归理论 多元回归的模型_统计学_36的性质

多元回归理论 多元回归的模型_统计学_36多元回归理论 多元回归的模型_多元回归理论_38的线性函数,这是显然的。并且多元回归理论 多元回归的模型_统计学_36多元回归理论 多元回归的模型_统计学_40的无偏估计,下面给出证明:
多元回归理论 多元回归的模型_python_41
关于协方差矩阵的理解多元回归理论 多元回归的模型_统计模型_42

于是我们估计的多元回归理论 多元回归的模型_统计学_36
多元回归理论 多元回归的模型_统计学_44

拟合优度检验

多重判定系数

与一元回归类似,对于多元回归,需要用多重判定系数评价其拟合程度。
同样有 多元回归理论 多元回归的模型_数学建模_45 成立。
为了度量多元回归方程拟合程度,我们定义多重判定系数 ,
多元回归理论 多元回归的模型_统计模型_46

和一元一样,只要回归平方和占比越大,其拟合效果越好。

对于多重判定系数有一点特别重要的需要说明:自变量个数的增加将影响到因变量中被估计的回归方程所解释的比例。当增加自变量时,会使预测误差变得较小,从而减小残差平方和多元回归理论 多元回归的模型_统计模型_47,那么多元回归理论 多元回归的模型_数学建模_48就会变大。从而使多元回归理论 多元回归的模型_python_49变大。
这就会引发一个问题,如果模型中增加一个自变量,即使这个自变量在统计上并不显著, 多元回归理论 多元回归的模型_python_49也会变大。为了避免这个问题。统计学家提出了调整的多重判定系数,记为多元回归理论 多元回归的模型_统计学_51
多元回归理论 多元回归的模型_多元回归理论_52

多元回归理论 多元回归的模型_python_53同时考虑了样本量多元回归理论 多元回归的模型_统计模型_07和模型中自变量的个数多元回归理论 多元回归的模型_数学建模_55的影响,这就使得多元回归理论 多元回归的模型_python_53的值永远小于多元回归理论 多元回归的模型_python_49,而且多元回归理论 多元回归的模型_python_53的值不会因为模型中自变量的个数增多而逐渐接近于多元回归理论 多元回归的模型_统计学_59
在多元回归分析中,通常采用调整的多重判定回归系数。

估计标准误差

和一元回归一样,多元回归理论 多元回归的模型_python_60是总体回归模型中多元回归理论 多元回归的模型_多元回归理论_61的无偏估计量。

多元回归理论 多元回归的模型_多元回归理论_62

多元回归对多元回归理论 多元回归的模型_python_60的解释和一元类似,这里就不再叙述了。

显著性检验

我们仍需要对线性关系多元回归理论 多元回归的模型_多元回归理论_64和回归系数多元回归理论 多元回归的模型_统计模型_65的检验。

线性关系的检验

为检验 多元回归理论 多元回归的模型_统计模型_05多元回归理论 多元回归的模型_数学建模_55 个自变量之间的关系是否显著,进行多元回归理论 多元回归的模型_统计学_68检验。

其中
多元回归理论 多元回归的模型_python_69

构造统计量
多元回归理论 多元回归的模型_多元回归理论_70

检验步骤如下,
第一步: 提出假设。
    多元回归理论 多元回归的模型_统计模型_71
第二步:检验统计量。
    多元回归理论 多元回归的模型_数学建模_72
第三步:作出决策。
    给定显著性水平多元回归理论 多元回归的模型_python_73,查表,
    若多元回归理论 多元回归的模型_数学建模_74,拒绝多元回归理论 多元回归的模型_统计模型_75,表明多元回归理论 多元回归的模型_数学建模_55个自变量和多元回归理论 多元回归的模型_统计模型_05的线性关系是显著的,
    若多元回归理论 多元回归的模型_统计模型_78,接受多元回归理论 多元回归的模型_统计模型_75,没有证据表明多元回归理论 多元回归的模型_数学建模_55个自变量和多元回归理论 多元回归的模型_统计模型_05的线性关系是显著的。

回归系数的检验

进行完线性关系的检验,就可以对回归系数多元回归理论 多元回归的模型_统计学_82进行检验,即每个自变量对多元回归理论 多元回归的模型_统计模型_05的影响进行 多元回归理论 多元回归的模型_数学建模_84

前面我们有
多元回归理论 多元回归的模型_统计学_44
对于每个多元回归理论 多元回归的模型_统计模型_86,有
多元回归理论 多元回归的模型_python_87
其中多元回归理论 多元回归的模型_数学建模_88多元回归理论 多元回归的模型_统计学_89中主对角线第多元回归理论 多元回归的模型_统计模型_90个元素。

构造统计量
多元回归理论 多元回归的模型_统计学_91

检验步骤如下,
第一步: 提出假设。
    多元回归理论 多元回归的模型_python_92
第二步:检验统计量。
    多元回归理论 多元回归的模型_多元回归理论_93
第三步:作出决策。
    给定显著性水平多元回归理论 多元回归的模型_python_73,并根据自由度多元回归理论 多元回归的模型_统计模型_95查表,
    若多元回归理论 多元回归的模型_多元回归理论_96,拒绝多元回归理论 多元回归的模型_统计模型_75,表明多元回归理论 多元回归的模型_统计学_98多元回归理论 多元回归的模型_统计模型_05的影响是显著的,
    若多元回归理论 多元回归的模型_数学建模_100,接受多元回归理论 多元回归的模型_统计模型_75,没有证据表明多元回归理论 多元回归的模型_统计学_98多元回归理论 多元回归的模型_统计模型_05的影响是显著的。

多重共线性

当回归模型中两个或两个以上的变量彼此相关时,则回归模型中存在多重共线性。

多重共线性的判定:

  • 模型中中各对自变量之间显著相关
  • 当模型的线性关系检验多元回归理论 多元回归的模型_多元回归理论_104检验多元回归理论 多元回归的模型_数学建模_105显著时,几乎所有的回归系数多元回归理论 多元回归的模型_数学建模_106多元回归理论 多元回归的模型_统计学_107检验却不显著。
  • 回归系数的正负号与预期的相反。
  • 容忍度多元回归理论 多元回归的模型_统计模型_108方差扩大因子多元回归理论 多元回归的模型_多元回归理论_109

容忍度:
某个变量的容忍度等于 多元回归理论 多元回归的模型_统计学_59 减去该自变量为因变量而其他 多元回归理论 多元回归的模型_数学建模_111 个自变量为预测变量时所得到的线性回归模型的判定系数。即 多元回归理论 多元回归的模型_统计模型_112。 容忍度越小,多重共线性越严重。通常认为容忍度小于 多元回归理论 多元回归的模型_多元回归理论_113

方差扩大因子:
容忍度的倒数。 因此,多元回归理论 多元回归的模型_多元回归理论_114 越大,多重共线性越严重,一般认为 多元回归理论 多元回归的模型_多元回归理论_114 的值大于 多元回归理论 多元回归的模型_统计学_116

多重共线性问题的处理:

  • 将一个或多个相关的自变量从模型中剔除,使保留的自变量尽可能不相关。
  • 如果要在模型中保留所有的自变量,那么应该:
    (1)避免根据 多元回归理论 多元回归的模型_数学建模_117 统计量对单个参数 多元回归理论 多元回归的模型_数学建模_118
    (2)对因变量多元回归理论 多元回归的模型_统计模型_119值的推断(预测和估计)限定在自变量样本值的范围内。

预测

当回归模型和系数通过检验后,可由给定的多元回归理论 多元回归的模型_统计学_120预测 多元回归理论 多元回归的模型_数学建模_121多元回归理论 多元回归的模型_数学建模_121是随机的,显然其预测值为
多元回归理论 多元回归的模型_统计学_123

给定多元回归理论 多元回归的模型_python_73,即可得到多元回归理论 多元回归的模型_数学建模_121的预测区间,结果较复杂,

多元回归理论 多元回归的模型_统计模型_07较大时,且 多元回归理论 多元回归的模型_数学建模_127 接近 多元回归理论 多元回归的模型_多元回归理论_128多元回归理论 多元回归的模型_数学建模_121的预测区间可以简化为

多元回归理论 多元回归的模型_统计模型_130

变量选择与逐步回归

在建立回归模型时,希望用最少的变量来建立模型,有效地引进自变量,使得模型更有操作性。

若新变量引入模型后,之前某个变量的$t检验不显著,则这个新变量将被模型剔除,在这种情况下,回归分析就很难存在多重共线性的影响,因此,要逐步回归搜索自变量,避免造成多重共线性。

逐步回归:逐步回归(Stepwise Regression)是一种常用的消除多重共线性、选取“最优”回归方程的方法。其做法是将逐个引入自变量,引入的条件是该自变量经F检验是显著的,每引入一个自变量后,对已选入的变量进行逐个检验,如果原来引入的变量由于后面变量的引入而变得不再显著,那么就将其剔除。引入一个变量或从回归方程中剔除一个变量,为逐步回归的一步,每一步都要进行F 检验,以确保每次引入新变量之前回归方程中只包含显著的变量。这个过程反复进行,直到既没有不显著的自变量选入回归方程,也没有显著自变量从回归方程中剔除为止。

多元回归分析大概就介绍这么多吧,中心化,标准化,样本相关阵等知识可以看这篇

实战

下面来实战吧~~~

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn import model_selection
import seaborn as sns

# 读取文件
data = pd.read_excel(r'Predict to Profit.xlsx')
examDf = pd.DataFrame(data)
print(examDf.head())

数据文件为Predict to Profit.xlsx,运行结果前五行如下:

多元回归理论 多元回归的模型_统计学_131

该数据有三个自变量影响利润的大小,下面进行回归分析。

# 数据清洗,比如第一列有可能是日期,这样的话我们就只需要从第二列开始的数据,
# 这个情况下,把下面中括号中的0改为1就好,要哪些列取哪些列
new_examDf = examDf.ix[:, 0:]

# 检验数据
print(new_examDf.describe())  # 数据描述,会显示最值,平均数等信息,可以简单判断数据中是否有异常值
print(new_examDf[new_examDf.isnull() == True].count())  # 检验缺失值,若输出为0,说明该列没有缺失值

# 输出相关系数,判断是否值得做线性回归模型
print(new_examDf.corr())  # 0-0.3弱相关;0.3-0.6中相关;0.6-1强相关;

# 通过seaborn添加一条最佳拟合直线和95%的置信带,直观判断相关关系
sns.pairplot(data, aspect=0.8, kind='reg')
plt.show()

运行结果:

多元回归理论 多元回归的模型_python_132


多元回归理论 多元回归的模型_统计学_133

训练线性回归模型

# 拆分训练集和测试集
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(new_examDf.ix[:, :3], new_examDf.Profit,
                                                                    train_size=0.8)
print("自变量---源数据:", new_examDf.ix[:, :3].shape, ";  训练集:", X_train.shape, ";  测试集:", X_test.shape)
print("因变量---源数据:", examDf.Profit.shape, ";  训练集:", Y_train.shape, ";  测试集:", Y_test.shape)

# 调用线性规划包
model = LinearRegression()

model.fit(X_train, Y_train)  # 线性回归训练

a = model.intercept_  # 截距
b = model.coef_  # 回归系数
print("拟合参数:截距", a, ",回归系数:", b)

# 显示线性方程,并限制参数的小数位为两位
print("最佳拟合线: Y = ", round(a, 2), "+", round(b[0], 2), "* X1 + ", round(b[1], 2), "* X2 + ", round(b[2], 2), "* X3")

Y_pred = model.predict(X_test)  # 对测试集数据,用predict函数预测

plt.plot(range(len(Y_pred)), Y_pred, 'red', linewidth=2.5, label="predict data")
plt.plot(range(len(Y_test)), Y_test, 'green', label="test data")
plt.legend(loc=3)
plt.show()  # 显示预测值与测试值曲线

运行结果:

多元回归理论 多元回归的模型_统计学_134


多元回归理论 多元回归的模型_数学建模_135

对比spss结果,如下图

多元回归理论 多元回归的模型_多元回归理论_136


多元回归理论 多元回归的模型_多元回归理论_137


多元回归理论 多元回归的模型_多元回归理论_138


多元回归理论 多元回归的模型_统计模型_139


多元回归理论 多元回归的模型_多元回归理论_140

两种方法,得到两个拟合方程
多元回归理论 多元回归的模型_统计学_141

多元回归理论 多元回归的模型_python_142