精华内容
下载资源
问答
  • 多元回归

    千次阅读 2019-04-13 21:02:58
    多元回归 多元线性回归模型的基本假定 为了方便地进行模型的参数估计,我们对以下回归方程式有如下假定: Y^=Xβ+ε\hat{Y}=X\beta+\varepsilonY^=Xβ+ε 解释变量x1,x2,⋯ ,xpx_1,x_2,\cdots,x...

    多元回归

    多元线性回归模型的基本假定

    为了方便地进行模型的参数估计,我们对以下回归方程式有如下假定:

    Y^=Xβ+ε\hat{Y}=X\beta+\varepsilon

    1. 解释变量x1,x2, ,xpx_1,x_2,\cdots,x_p 是确定性变量,不是随机变量,且要求rank(X)=p+1<nrank(X)=p+1<n。这里的rank(X)=p+1<nrank(X)=p+1<n,表明设计矩阵XX中的自变量列之间不相关,样本量的个数应该大于解释变量的个数,XX是以满秩矩阵。
    2. 随机误差项具有零均值等方差,即

    {E(εi)=0i=1,2, ,ncov(εi,εj)={σ2,i=j0,ij,i,j=1,2, ,n\begin{cases} E(\varepsilon_i)=0,\quad i =1,2,\cdots,n\\ cov(\varepsilon_i,\varepsilon_j)= \begin{cases} \sigma^2, &{i = j} \\ 0, & {i\neq j} \end{cases}\quad,i,j=1,2,\cdots,n \end{cases}
    这个假定常称为Gauss-Markov条件。E(εi)=0E(\varepsilon_i)=0,即假设观察值没有系统误差,随机误差项εi\varepsilon_i的平均值为零。随机误差项εi\varepsilon_i的协方差为零,表明误差项在不同点之间是不相关的(在正态假定下即为独立的),不存在序列相关,并且有相同的精度。

    参数估计量的性质

    多元线性回归方程未知β0,β1,...,βp\beta_0,\beta_1, ..., \beta_p 的估计是用最小二乘估计得到的。y^=Xβ^=X(XX)1Xy\hat{y}=X\hat{\beta}=X(X^{'}X)^{-1}X^{'}y中的H=X(XX)1XH=X(X^{'}X)^{-1}X^{'}是一个帽子矩阵,可以证明其是nn阶对称阵,同时还是幂等矩阵,即H=H2H=H^2。以下说一下参数估计量的性质:

    1. β^\hat{\beta}是随机向量yy的线性变换。
    2. β^\hat{\beta}β\beta的无偏估计。
    3. D(β^)=σ2(XX)1D(\hat{\beta})=\sigma^2(X^{'}X)^{-1}
    4. 高斯-马尔可夫定理:在假定的E(y)=Xβ,D(y)=σ2InE(y)=X\beta,D(y)=\sigma^2I_n时,β\beta任一线性函数cβc^{'}\beta的最小方差线性无偏估计(BLUE)(BLUE)cβc^{'}\beta,其中,cc是任一p+1p+1维常数向量,β^\hat{\beta}β{\beta}的最小二乘估计。
      读者在阅读高斯-马尔可夫定理的时候应该注意一下几点:可能存在非线性的,有偏估计使得方差不是最小。在正态假定下,即不可能存在y1,y2, ,yny_1,y_2,\cdots,y_n非线性函数,,也不可能存在y1,y2, ,yny_1,y_2,\cdots,y_n的其他非线性函数,作为cβc^{'}\beta的无偏估计,比最小二乘估计cβ^c^{'}\hat{\beta}的方差更小。
    5. cov(β^,e)cov(\hat{\beta},e)=0
    6. y=N(Xβ,σ2In)y = N(X\beta,\sigma^2I_n)时,则
      1. β^\hat{\beta}~N(β,σ2(XX)1)N(\beta,\sigma^2(X^{'}X)^{-1})
      2. SSEσ2\frac{SSE}{\sigma^2}~X2(np1)X^2(n-p-1)

    回归方程的显著性检验

    最小二乘法只是定性地给出了线性回归模型,但模型是否有效或者回归系数是否显著还需要经过检验才行。一般对线性回归模型进行两项统计检验:1、回归方程显著性FF检验。2、回归系数显著性tt检验。同时介绍衡量回归拟合程度的拟合优度检验。

    1. FF检验
      FF检验的原假设是:H0:β1=β2, ,βp=0H_0 :\beta_1=\beta_2,\cdots,\beta_p=0,当F>Fα(p,np1)F>F_{\alpha}(p,n-p-1)时,拒接原假设,认为在显著水平α\alpha下,yyx1,x2, ,xpx_1,x_2,\cdots,x_p有显著关系,即方程回归显著的。也可以看它的pp值,当p<αp<\alpha时,拒绝原假设。

    2. tt检验
      tt检验的目是检验单个回归系数是否显著的,从而达到剔除多余无效变量的作用。注意由于各个变量之间是有交互作用的,因此不能一次剔除多个不显著变量,原则上每次只剔除一个变量,先剔除其中tt值最小的(或者pp值最大的)一个变量,然后再对求的得的新的回归回归方程进行检验,有不显著的变量再剔除,直到保留的变量对yy有显著影响为止。在一元回归中,这两个检验是等价的,但是在多元检验中两者是不等价的。

    3. 拟合优度
      拟合优度用于检验回归方程对样本观察值的拟合程度。样本决定系数:R2=SSRSST=1SSESSTR^2=\frac{SSR}{SST}=1-\frac{SSE}{SST}
      当样本量nn和回归变量数目差接近的时候,R2R^2接近1,隐含虚假成分,因此在用这个决定系数决定模型的优劣一定要慎重。

    中心化、标准化和相关系数与偏相关系数

    在解释中心化之前先介绍一下舍入误差,及病态矩阵的概念。舍入误差主要是四舍五入等导致的误差,产生舍入误差产生的主要原因有二:①数据之间的量级悬殊;②设计矩阵XX的列向量近似线性相关,导致XXX^{'}X为病态矩阵,其逆矩阵(XX)1(X^{'}X)^{-1}就会产生较大的误差。病态矩阵:方程AX=BAX=B当其解集对AA高度敏感,那么称AA为病态矩阵。为了解决数据量纲和舍入误差的影响,因此要中心化和标准化。

    1.中心化
    中心化变换只改变直线截距,不改变直线斜率。通过坐标系的平移变换,使坐标原点移至样本中心,即做变换:
    {xj=xijxjˉyi=yiyˉ\begin{cases}{x_j}^{'}=x_{ij}-\bar{x_j}\\{y_i}^{'}=y_i-\bar{y}\end{cases}
    2.标准化及标准化回归系数
    为了消除量纲不同和数量级的差异带来的影响,就需要将数据标准化处理。让后利用得到标准化处理后的数据进行最小二乘估计位置参数,得到标准化回归系数。
    3.复相关系数RR反映的是yy与一组自变量之间的相关关系,是整体和共性指标简单相关系数反映两个自变量间的相关性,是局部和个性指标。
    4.偏相关系数可以度量p+1p+1个变量y,x1,x2, ,xpy,x_1,x_2,\cdots,x_p之中任意两个变量的线性程度,而这种线性相关程度实在固定其余p+1p+1个变量的影响下的线性相关。

    小结

    我们一般用最小二乘法进行模型的参数估计,不过在之前,我们要检验样本数据是否满足高斯-马尔可夫条件。初步得到模型以后,我们要做的是检验模型是否反映了线性关系,模型是否有效,模型参数是否显著。模型不通过可能有以下几方面的原因:①问题应该用非线性取描述,而错误地用线性进行拟合;由于认识的局限性,把重要的自变量给露了。用R2R^2进行的时候,要注意自变量个数要远小于样本量个数,这时的拟合优度检验才不会出现虚假因素。在存在交互现象的时候,用控制变量的方法解释单个参数对模型的影响是不合理的。

    展开全文
  • 使用Excel数据分析工具进行多元回归分析与简单的回归估算分析方法基本相同。但是由于有些电脑在安装办公软件时并未加载数据分析工具,所以从加载开始说起(以Excel2010版为例,其余版本都可以在相应界面找到)。点击...

    使用Excel数据分析工具进行多元回归分析与简单的回归估算分析方法基本相同。但是由于有些电脑在安装办公软件时并未加载数据分析工具,所以从加载开始说起(以Excel2010版为例,其余版本都可以在相应界面找到)。

    点击“文件”,如下图:

    895802-20180224104205841-586099936.png

    在弹出的菜单中选择“选项”,如下图所示:

    895802-20180224104322157-952122021.png

    在弹出的“选项”菜单中选择“加载项”,在“加载项”多行文本框中使用滚动条找到并选中“分析工具库”,然后点击最下方的“转到”,如下图所示:

    895802-20180224104438013-783999057.png

    在弹出的“加载宏”菜单中选择“分析工具库”,然后点击 “确定”,如下图所示:

    895802-20180224104522958-1474321039.png

    加载完毕,在“数据”工具栏中就出现“数据分析”工具库,如下图所示:

    895802-20180224104634661-405549508.png

    给出原始数据,自变量的值在A2:I21单元格区间中,因变量的值在J2:J21中,如下图所示:

    895802-20180224104727628-1358267284.png

    假设回归估算表达式为:

    895802-20180224105152555-1297964466.png

    试使用Excel数据分析工具库中的回归分析工具对其回归系数进行估算并进行回归分析:

    点击“数据”工具栏中中的“数据分析”工具库,如下图所示:

    895802-20180224105218615-1612868848.png

    在弹出的“数据分析”-“分析工具”多行文本框中选择“回归”,然后点击 “确定”,如下图所示:

    895802-20180224105252319-1650297425.png

    弹出“回归”对话框并作如下图的选择:

    895802-20180224105259768-1071268620.png

    上述选择的具体方法是:

    在“Y值输入区域”,点击右侧折叠按钮,选取函数Y数据所在单元格区域J2:J21,选完后再单击折叠按钮返回;这过程也可以直接在“Y值输入区域”文本框中输入J2:J21;

    在“X值输入区域”,点击右侧折叠按钮,选取自变量数据所在单元格区域A2:I21,选完后再单击折叠按钮返回;这过程也可以直接在“X值输入区域”文本框中输入A2:I21;

    置信度可选默认的95%。

    在“输出区域”如选“新工作表”,就将统计分析结果输出到在新表内。为了比较对照,我选本表内的空白区域,左上角起始单元格为K10.点击确定后,输出结果如下:

    895802-20180224105341507-876394146.png

    第一张表是“回归统计表”(K12:L17):

    其中:

    Multiple R:(复相关系数R)R2的平方根,又称相关系数,用来衡量自变量x与y之间的相关程度的大小。本例R=0.9134表明它们之间的关系为高度正相关。(Multiple:复合、多种)

    R Square:复测定系数,上述复相关系数R的平方。用来说明自变量解释因变量y变差的程度,以测定因变量y的拟合效果。此案例中的复测定系数为0.8343,表明用用自变量可解释因变量变差的83.43%

    Adjusted R Square:调整后的复测定系数R2,该值为0.6852,说明自变量能说明因变量y的68.52%,因变量y的31.48%要由其他因素来解释。( Adjusted:调整后的)

    标准误差:用来衡量拟合程度的大小,也用于计算与回归相关的其它统计量,此值越小,说明拟合程度越好

    观察值:用于估计回归方程的数据的观察值个数。

    第二张表是“方差分析表”:主要作用是通过F检验来判定回归模型的回归效果。

    该案例中的Significance F(F显著性统计量)的P值为0.00636,小于显著性水平0.05,所以说该回归方程回归效果显著,方程中至少有一个回归系数显著不为0.(Significance:显著)

    第三张表是“回归参数表”:

    K26:K35为常数项和b1~b9的排序默认标示.

    L26:L35为常数项和b1~b9的值,据此可得出估算的回归方程为:

    895802-20180224105410894-924898927.png

    该表中重要的是O列,该列的O26:O35中的 P-value为回归系数t统计量的P值。

    值得注意的是:其中b1、b7的t统计量的P值为0.0156和0.0175,远小于显著性水平0.05,因此该两项的自变量与y相关。而其他各项的t统计量的P值远大于b1、b7的t统计量的P值,但如此大的P值说明这些项的自变量与因变量不存在相关性,因此这些项的回归系数不显著。

    895802-20190513145946128-2121974130.png

    e8cf90fa-d501-475c-94e8-c4db89d5c829.jpg

    展开全文
  • EXCEL多元回归分析

    万次阅读 多人点赞 2018-04-13 14:36:14
    一、多元回归分析定义: 多元回归分析(Multiple Regression Analysis)是指在相关变量中将一个变量视为因变量,其他一个或多个变量视为自变量,建立多个变量之间线性或非线性数学模型数量关系式并利用样本数据进行...

    一、多元回归分析定义:

            多元回归分析(Multiple Regression Analysis)是指在相关变量中将一个变量视为因变量,其他一个或多个变量视为自变量,建立多个变量之间线性或非线性数学模型数量关系式并利用样本数据进行分析的统计分析方法。

    二、不多说,上实例分析过程:

    1)数据整理


    2)数据建模:

    假设回归估算表达式:y=b0+b1x1+b2x2+b3x3+b4x1x2+b5x1x3+b6x2x3+b7x12+b8x22+b9x32

    3)多元回归分析:

    Excel中:选择“工具”——“数据分析”——“回归”


    故此,估算的回归方程:

    y=6570.419+56.7445x1+104.106x2+50.071x3+0.482x1x2-0.0874x1x3-0.897x2x3-0.239x12-2.9996x22-0.1714x32

    (该表中重要的是E列,该列的E40:E49中的 P-value 为回归系数t统计量的P值。

    注意:其中b1、b7的t统计量的P值为0.0156和0.0175,远小于显著性水平0.05,因此该两项的自变量与y相关。而其他各项的t统计量的P值远大于b1、b7的t统计量的P值,但如此大的P值说明这些项的自变量与因变量不存在相关性,因此这些项的回归系数不显著。)

                                                                    注意:                                                      

    T检验用于对某一自变量Xi对于Y的线性显著性,若某一Xi不显著,意味可以从模型中剔除这个变量,使得模型更简洁。

    F检验用于对所有的自变量X在整体上看对于Y的线性显著性

    T检验的结果看P-value,F检验看Significant F值,一般要小于0.05,越小越显著(这个0.05其实是显著性水平,是人为设定的,如果比较严格,可以定成0.01,但是也会带来其他一些问题)                                 

    一般来说,只要F检验和关键变量的T检验通过了,模型的预测能力就是OK的。


    展开全文
  • 本资源适用于对做二元线性回归、残差分析的人有所帮助。如:做ndvi与温度、降雨的线性回归问题做残差分析。
  • scikit-learn : 线性回归,多元回归,多项式回归

    万次阅读 多人点赞 2016-06-17 23:36:53
    使用scikit-learn学习线性回归,多元回归,多项式回归

    匹萨的直径与价格的数据

    %matplotlib inline
    import matplotlib.pyplot as plt
    def runplt():
        plt.figure()
        plt.title(u'diameter-cost curver')
        plt.xlabel(u'diameter')
        plt.ylabel(u'cost')
        plt.axis([0, 25, 0, 25])
        plt.grid(True)
        return plt
    
    plt = runplt()
    X = [[6], [8], [10], [14], [18]]
    y = [[7], [9], [13], [17.5], [18]]
    plt.plot(X, y, 'k.')
    plt.show()

    这里写图片描述


    训练模型

    from sklearn.linear_model import LinearRegression
    import numpy as np
    # 创建并拟合模型
    model = LinearRegression()
    model.fit(X, y)
    print('预测一张12英寸匹萨价格:$%.2f' % model.predict(np.array([12]).reshape(-1, 1))[0])
    预测一张12英寸匹萨价格:$13.68
    

    一元线性回归假设解释变量和响应变量之间存在线性关系;这个线性模型所构成的空间是一个超平面(hyperplane)。

    超平面是n维欧氏空间中余维度等于一的线性子空间,如平面中的直线、空间中的平面等,总比包含它的空间少一维。

    在一元线性回归中,一个维度是响应变量,另一个维度是解释变量,总共两维。因此,其超平面只有一维,就是一条线。

    上述代码中sklearn.linear_model.LinearRegression类是一个估计器(estimator)。估计器依据观测值来预测结果。在scikit-learn里面,所有的估计器都带有:
    - fit()
    - predict()

    fit()用来分析模型参数,predict()是通过fit()算出的模型参数构成的模型,对解释变量进行预测获得的值。
    因为所有的估计器都有这两种方法,所有scikit-learn很容易实验不同的模型。

    一元线性回归模型:

    y=α+βx

    一元线性回归拟合模型的参数估计常用方法是:
    - 普通最小二乘法(ordinary least squares )
    - 线性最小二乘法(linear least squares)

    首先,我们定义出拟合成本函数,然后对参数进行数理统计。

    plt = runplt()
    plt.plot(X, y, 'k.')
    X2 = [[0], [10], [14], [25]]
    model = LinearRegression()
    model.fit(X, y)
    y2 = model.predict(X2)
    plt.plot(X, y, 'k.')
    plt.plot(X2, y2, 'g-')
    plt.show()

    这里写图片描述

    plt = runplt()
    plt.plot(X, y, 'k.')
    y3 = [14.25, 14.25, 14.25, 14.25]
    y4 = y2 * 0.5 + 5
    model.fit(X[1:-1], y[1:-1])
    y5 = model.predict(X2)
    plt.plot(X, y, 'k.')
    plt.plot(X2, y2, 'g-.')
    plt.plot(X2, y3, 'r-.')
    plt.plot(X2, y4, 'y-.')
    plt.plot(X2, y5, 'o-')
    plt.show()

    这里写图片描述

    成本函数(cost function)也叫损失函数(loss function),用来定义模型与观测值的误差。模型预测的价格与训练集数据的差异称为残差(residuals)或训练误差(training errors)。后面我们会用模型计算测试集,那时模型预测的价格与测试集数据的差异称为预测误差(prediction errors)或训练误差(test errors)。

    模型的残差是训练样本点与线性回归模型的纵向距离,如下图所示:

    plt = runplt()
    plt.plot(X, y, 'k.')
    X2 = [[0], [10], [14], [25]]
    model = LinearRegression()
    model.fit(X, y)
    y2 = model.predict(X2)
    plt.plot(X, y, 'k.')
    plt.plot(X2, y2, 'g-')
    
    # 残差预测值
    yr = model.predict(X)
    for idx, x in enumerate(X):
        plt.plot([x, x], [y[idx], yr[idx]], 'r-')
    
    plt.show()

    这里写图片描述

    我们可以通过残差之和最小化实现最佳拟合,也就是说模型预测的值与训练集的数据最接近就是最佳拟合。对模型的拟合度进行评估的函数称为残差平方和(residual sum of squares)成本函数。就是让所有训练数据与模型的残差的平方之和最小化,如下所示:

    SSres=i=1n(yif(xi))2

    其中, yi 是观测值, f(xi)f(xi) 是预测值。

    import numpy as np
    print('残差平方和: %.2f' % np.mean((model.predict(X) - y) ** 2))
    残差平方和: 1.75
    

    解一元线性回归的最小二乘法

    通过成本函数最小化获得参数,我们先求相关系数 ββ 。按照频率论的观点,我们首先需要计算 xx 的方差和 xx 与 yy 的协方差。
    方差是用来衡量样本分散程度的。如果样本全部相等,那么方差为0。方差越小,表示样本越集中,反正则样本越分散。方差计算公式如下:

    var(x)=ni=1(xix¯)2n1

    Numpy里面有var方法可以直接计算方差,ddof参数是贝塞尔(无偏估计)校正系数(Bessel’s correction),设置为1,可得样本方差无偏估计量。

    print(np.var([6, 8, 10, 14, 18], ddof=1))
    23.2
    

    协方差表示两个变量的总体的变化趋势。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。如果两个变量不相关,则协方差为0,变量线性无关不表示一定没有其他相关性。协方差公式如下:

    cov(x,y)=ni=1(xix¯)(yiy¯)n1

    其中, x¯是直径 x的均值, xi的训练集的第 i个直径样本, y¯是价格y的均值, yi的训练集的第i个价格样本, n是样本数量。Numpy里面有cov方法可以直接计算方差。

    import numpy as np
    print(np.cov([6, 8, 10, 14, 18], [7, 9, 13, 17.5, 18])[0][1])
    22.65
    

    现在有了方差和协方差,就可以计算相关系统 β 了。

    β=cov(x,y)var(x)

    算出β后,我们就可以计算α了:

    α=y¯βx¯

    将前面的数据带入公式就可以求出α了:

    α=12.90.9762931×11.2=1.9655

    模型评估

    前面我们用学习算法对训练集进行估计,得出了模型的参数。有些度量方法可以用来评估预测效果,我们用R方(r-squared)评估匹萨价格预测的效果。R方也叫确定系数(coefficient of determination),表示模型对现实数据拟合的程度。计算R方的方法有几种。一元线性回归中R方等于皮尔逊积矩相关系数(Pearson product moment correlation coefficient或Pearson’s r)的平方。种方法计算的R方一定介于0~1之间的正数。其他计算方法,包括scikit-learn中的方法,不是用皮尔逊积矩相关系数的平方计算的,因此当模型拟合效果很差的时候R方会是负值。下面我们用scikit-learn方法来计算R方。

    SStot=i=1n(yiy¯)2

    SSres=i=1n(yif(xi))2

    R2=1SSresSStot

    R方是0.6620说明测试集里面过半数的价格都可以通过模型解释。现在,让我们用scikit-learn来验证一下。LinearRegression的score方法可以计算R方:

    # 测试集
    X_test = [[8], [9], [11], [16], [12]]
    y_test = [[11], [8.5], [15], [18], [11]]
    model = LinearRegression()
    model.fit(X, y)
    model.score(X_test, y_test)
    0.66200528638545164
    

    多元回归

    from sklearn.linear_model import LinearRegression
    X = [[6, 2], [8, 1], [10, 0], [14, 2], [18, 0]]
    y = [[7], [9], [13], [17.5], [18]]
    model = LinearRegression()
    model.fit(X, y)
    X_test = [[8, 2], [9, 0], [11, 2], [16, 2], [12, 0]]
    y_test = [[11], [8.5], [15], [18], [11]]
    predictions = model.predict(X_test)
    for i, prediction in enumerate(predictions):
        print('Predicted: %s, Target: %s' % (prediction, y_test[i]))
    print('R-squared: %.2f' % model.score(X_test, y_test))
    Predicted: [ 10.06250019], Target: [11]
    Predicted: [ 10.28125019], Target: [8.5]
    Predicted: [ 13.09375019], Target: [15]
    Predicted: [ 18.14583353], Target: [18]
    Predicted: [ 13.31250019], Target: [11]
    R-squared: 0.77
    

    多项式回归

    上例中,我们假设解释变量和响应变量的关系是线性的。真实情况未必如此。下面我们用多项式回归,一种特殊的多元线性回归方法,增加了指数项。现实世界中的曲线关系都是通过增加多项式实现的,其实现方式和多元线性回归类似。本例还用一个解释变量,匹萨直径。让我们用下面的数据对两种模型做个比较:

    import numpy as np
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures
    X_train = [[6], [8], [10], [14], [18]]
    y_train = [[7], [9], [13], [17.5], [18]]
    X_test = [[6], [8], [11], [16]]
    y_test = [[8], [12], [15], [18]]
    # 建立线性回归,并用训练的模型绘图
    regressor = LinearRegression()
    regressor.fit(X_train, y_train)
    xx = np.linspace(0, 26, 100)
    yy = regressor.predict(xx.reshape(xx.shape[0], 1))
    plt = runplt()
    plt.plot(X_train, y_train, 'k.')
    plt.plot(xx, yy)
    
    quadratic_featurizer = PolynomialFeatures(degree=2)
    X_train_quadratic = quadratic_featurizer.fit_transform(X_train)
    X_test_quadratic = quadratic_featurizer.transform(X_test)
    regressor_quadratic = LinearRegression()
    regressor_quadratic.fit(X_train_quadratic, y_train)
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), 'r-')
    plt.show()
    print(X_train)
    print(X_train_quadratic)
    print(X_test)
    print(X_test_quadratic)
    print('1 r-squared', regressor.score(X_test, y_test))
    print('2 r-squared', regressor_quadratic.score(X_test_quadratic, y_test))

    这里写图片描述

    [[6], [8], [10], [14], [18]]
    [[   1.    6.   36.]
     [   1.    8.   64.]
     [   1.   10.  100.]
     [   1.   14.  196.]
     [   1.   18.  324.]]
    [[6], [8], [11], [16]]
    [[   1.    6.   36.]
     [   1.    8.   64.]
     [   1.   11.  121.]
     [   1.   16.  256.]]
    ('1 r-squared', 0.80972683246686095)
    ('2 r-squared', 0.86754436563450732)
    
    plt = runplt()
    plt.plot(X_train, y_train, 'k.')
    
    quadratic_featurizer = PolynomialFeatures(degree=2)
    X_train_quadratic = quadratic_featurizer.fit_transform(X_train)
    X_test_quadratic = quadratic_featurizer.transform(X_test)
    regressor_quadratic = LinearRegression()
    regressor_quadratic.fit(X_train_quadratic, y_train)
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), 'r-')
    
    cubic_featurizer = PolynomialFeatures(degree=3)
    X_train_cubic = cubic_featurizer.fit_transform(X_train)
    X_test_cubic = cubic_featurizer.transform(X_test)
    regressor_cubic = LinearRegression()
    regressor_cubic.fit(X_train_cubic, y_train)
    xx_cubic = cubic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_cubic.predict(xx_cubic))
    plt.show()
    print(X_train_cubic)
    print(X_test_cubic)
    print('2 r-squared', regressor_quadratic.score(X_test_quadratic, y_test))
    print('3 r-squared', regressor_cubic.score(X_test_cubic, y_test))

    这里写图片描述

    [[  1.00000000e+00   6.00000000e+00   3.60000000e+01   2.16000000e+02]
     [  1.00000000e+00   8.00000000e+00   6.40000000e+01   5.12000000e+02]
     [  1.00000000e+00   1.00000000e+01   1.00000000e+02   1.00000000e+03]
     [  1.00000000e+00   1.40000000e+01   1.96000000e+02   2.74400000e+03]
     [  1.00000000e+00   1.80000000e+01   3.24000000e+02   5.83200000e+03]]
    [[  1.00000000e+00   6.00000000e+00   3.60000000e+01   2.16000000e+02]
     [  1.00000000e+00   8.00000000e+00   6.40000000e+01   5.12000000e+02]
     [  1.00000000e+00   1.10000000e+01   1.21000000e+02   1.33100000e+03]
     [  1.00000000e+00   1.60000000e+01   2.56000000e+02   4.09600000e+03]]
    ('2 r-squared', 0.86754436563450732)
    ('3 r-squared', 0.83569241560369567)
    
    plt = runplt()
    plt.plot(X_train, y_train, 'k.')
    
    quadratic_featurizer = PolynomialFeatures(degree=2)
    X_train_quadratic = quadratic_featurizer.fit_transform(X_train)
    X_test_quadratic = quadratic_featurizer.transform(X_test)
    regressor_quadratic = LinearRegression()
    regressor_quadratic.fit(X_train_quadratic, y_train)
    xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_quadratic.predict(xx_quadratic), 'r-')
    
    seventh_featurizer = PolynomialFeatures(degree=7)
    X_train_seventh = seventh_featurizer.fit_transform(X_train)
    X_test_seventh = seventh_featurizer.transform(X_test)
    regressor_seventh = LinearRegression()
    regressor_seventh.fit(X_train_seventh, y_train)
    xx_seventh = seventh_featurizer.transform(xx.reshape(xx.shape[0], 1))
    plt.plot(xx, regressor_seventh.predict(xx_seventh))
    plt.show()
    print('2 r-squared', regressor_quadratic.score(X_test_quadratic, y_test))
    print('7 r-squared', regressor_seventh.score(X_test_seventh, y_test))

    这里写图片描述

    ('2 r-squared', 0.86754436563450732)
    ('7 r-squared', 0.49198460568655)
    

    可以看出,七次拟合的R方值更低,虽然其图形基本经过了所有的点。可以认为这是拟合过度(over-fitting)的情况。这种模型并没有从输入和输出中推导出一般的规律,而是记忆训练集的结果,这样在测试集的测试效果就不好了。


    正则化

    LASSO方法会产生稀疏参数,大多数相关系数会变成0,模型只会保留一小部分特征。而岭回归还是会保留大多数尽可能小的相关系数。当两个变量相关时,LASSO方法会让其中一个变量的相关系数会变成0,而岭回归是将两个系数同时缩小。

    import numpy as np
    from sklearn.datasets import load_boston
    from sklearn.linear_model import SGDRegressor
    from sklearn.cross_validation import cross_val_score
    from sklearn.preprocessing import StandardScaler
    from sklearn.cross_validation import train_test_split
    data = load_boston()
    X_train, X_test, y_train, y_test = train_test_split(data.data, data.target)
    X_scaler = StandardScaler()
    y_scaler = StandardScaler()
    X_train = X_scaler.fit_transform(X_train)
    y_train = y_scaler.fit_transform(y_train.reshape(-1, 1))
    X_test = X_scaler.transform(X_test)
    y_test = y_scaler.transform(y_test.reshape(-1, 1))
    regressor = SGDRegressor(loss='squared_loss',penalty="l1")
    scores = cross_val_score(regressor, X_train, y_train.reshape(-1, 1), cv=5)
    print('cv R', scores)
    print('mean of cv R', np.mean(scores))
    regressor.fit_transform(X_train, y_train)
    print('Test set R', regressor.score(X_test, y_test))
    ('cv R', array([ 0.74761441,  0.62036841,  0.6851797 ,  0.63347999,  0.79476346]))
    ('mean of cv R', 0.69628119572104885)
    ('Test set R', 0.75084948718041566)
    
    展开全文
  • 我眼中的多元回归模型

    千次阅读 2019-06-21 10:05:07
    多元回归与一元回归不同 与一元回归相比,多元回归有两点不同: 1、新增了一个假定,多元回归的假定为: Y的平均能够准确的被由X组成的线性函数模型呈现出来; 解释变量和随机扰动项不存在线性关系; ...
  • 多元回归分析

    千次阅读 2019-08-14 17:00:35
    一、概念 回归分析 是一种统计学上分析数据的...在自变量很多(有很多的冗余变量,变量直接不完全独立)时,采用逐步回归分析法,筛选自变量,建立预测效果更好的多元回归模型 二、案例 数学建模都是定量的解决问题...
  • 1.1-多元回归

    2018-07-12 01:06:02
    多元统计 第一节 多元回归 多元线性回归 多元非线性回归 待整理
  • 多元线性回归模型

    万次阅读 多人点赞 2019-07-02 19:22:12
    多元线性回归模型通常用来研究一个应变量依赖多个自变量的变化关系,如果二者的以来关系可以用线性形式来刻画,则可以建立多元线性模型来进行分析。 1.模型简介 1.1模型的结构 多元线性回归模型通常用来描述变脸y和x...
  • 【matlab 多元回归】matlab数值预测--多元回归算法

    万次阅读 多人点赞 2017-12-23 09:31:51
    对七个自变量,2个因变量分别做多元线性线性回归。数据形式如下: 下面是matlab 代码:clc,clear all %% % 读取excel数据,data存放数值数据,text...%建立第一个多元回归模型 y1=data1(:,1); y2=data1(:,2); x=data
  • 数学建模—多元回归分析

    千次阅读 2020-07-08 13:42:45
    title: 数学建模—多元回归分析 tags: 建模 EverydayOneCat 木星全貌???? 知识点 1.笔记 在了接受域中,接受X为0的假设,X对外没有比较显著的线性关系。 2.知识点补充 多元回归模型:含两个以上解释变量的回归...
  • 什么是线性回归 有监督学习 => 学习样本为D={(xi,yi)}i=1ND=\{(x_i,y_i)\}^N_{i=1}D={(xi​,yi​)}i=1N​ 输出/预测的结果yiy_iyi​为连续变量 需要学习映射f:x→yf:x...多元线性回归 损失函数(loss function...
  • 多元线性回归部分,西瓜书的省略实在是太多了,有时候会让读者很无奈。这篇博客便针对这些问题进行详细的解答,希望对大家理解西瓜书有帮助。 在多元线性回归这一章节中,或许是囿于篇幅,西瓜书中(1)没有解释...
  • 利用MATLAB进行多元线性回归 2.线性回归 b=regress(y,X) [b,bint,r,rint,s]=regress(y,X,alpha) 输入: y~因变量(列向量), X~1与自变量组成的矩阵, Alpha~...F值值的概率p,p时时回归归模型有效 输输出:b=(),bin...
  • 多元回归分析(线性回归)

    千次阅读 2020-08-13 18:14:30
    多元线性回归分析一、回归的基本理解(1)回归的基本任务(2)回归里的关键词(3)回归里的数据类型(4)回归方程中的系数解释(5)核心解释变量和控制变量(6)特殊的自变量:虚拟变量X二、例题:电商平台的奶粉...
  • 1.2 多元回归模型 1.3 多元回归方程 1.4 估计多元回归方程 1.5 估计流程(与简单线性回归类似) 1.6 估计方法   1.7 例子   x1 x2 y 1 100 4 9.3 2 50 3 ...
  • 一个多元回归模型建好后,如何评价模型的优劣呢?1. F值检验因变量的总变异(数据与均值之差的平方和,记为SStotal)由回归平方和(因变量的变异中可以由自变量解释的部分,记为SSR)与误差平方和(记为SSE)构成,如果自...
  • 多元线性回归模型的F检验

    万次阅读 2017-02-13 14:03:08
    F检验 对于多元线性回归模型,在对每个回归系数进行显著性检验之前,应该对回归模型的整体做显著性检验。这就是F检验。当检验被解释变量yt与一组解释变量x1, x2 , ... , xk -1是否存在回归关系时,给出的零假设...
  • 多元回归——matlab,R与spss

    千次阅读 2019-05-20 21:23:43
    多元回归(Multiple Regression) 具体是指在相关变量中指定其中一个为因变量,其余一个或多个变量视为自变量,建立多个变量之间的线性或非线性数学模型。 其中,称为回归参数,我们的目的就是利用样本数据对...
  • 多元回归模型

    2018-02-10 16:44:00
    回归模型 1 基本知识介绍 1.1回归模型的引入 由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候...
  • 多元回归&最小二乘

    2019-09-15 23:43:01
    最小二乘和回归分析的区别: 最小二乘法是在模型确定的情况下对未知参数由观测数据来进行估计,而回归分析则是研究变量间相关关系的统计分析方法。 ...
  • 一、多元回归分析简介 用回归方程定量地刻画一个应变量与多个自变量间的线性依存关系,称为多元回归分析(multiple linear regression),简称多元回归(multiple regression)。 多元回归分析是多变量分析的基础,也是...
  • matlab实现一元线性回归多元线性回归

    万次阅读 多人点赞 2018-01-30 10:58:46
    在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。 ...
  • 多元线性回归

    2016-12-05 13:58:23
    多元线性回归模型
  • [Matlab 多元回归]

    2020-07-29 18:10:44
    多元回归 [b,bint,r,rint,stats]=regress(Y,X,[alpha]) b:回归系数(向量中第一项为常数项) bint:回归系数的区间估计 r:残差 rint:置信区间 stats:用于检验回归模型的统计量。有4个数值: 判定系数R^2,F统计...
  • MATLAB实现一元回归和多元回归

    千次阅读 2018-08-15 10:52:24
    在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,092
精华内容 3,636
关键字:

多元回归f值