精华内容
下载资源
问答
  • 残差图的matlab代码
  • 残差图的matlab代码 标题 类别 我的计算机视觉混乱 计算机视觉 来自joshua19881228.github.io的叉子 我将维护此页面,以记录我已阅读,正在做或将要看的有关计算机视觉的一些事情。 以前,我想写一些我读过的论文...
  • 残差图的matlab代码 OCT-classification 运行环境 MATLAB R2017a Python 3.7 Pytorch 1.1.0 提取码:psgi 代码结构 BM3D BM3D.m MATLAB版本BM3D去燥程序 BM3D_progress.m 该代码加载数据集,选择处理的图片路径和...
  • 残差分析与残差图

    千次阅读 2021-03-18 16:46:02
    从线性回归与非线性回归说起 ...另一个诊断残差的直方。 理想情况下,我们希望残差是正态分布的,这意味着模型在两个方向(高和低)上误差是相同的。 用普通最小二乘法(OLS,ordinary least sq...

    从线性回归与非线性回归说起

    均方误差(Mean Squared Error,MSE):真实值与预测值差的平方和的平均值。

    RMSE指标

    在某些情况下决定系数(coefficient of determination)R^2【R方】非常重要,可以将其看成一个MSE标准化版本,R^2是模型捕获响应方差的分数。

    另一个诊断图是残差的直方图。 理想情况下,我们希望残差是正态分布的,这意味着模型在两个方向(高和低)上误差是相同的。

    <

    展开全文
  • 残差图

    万次阅读 2018-05-19 10:53:55
    残差图残差图是以某种残差为纵坐标,以其他适宜的两位横坐标的散点图。这里横坐标有多种选择,最常见的选择是: 因素的拟合值 某变量的观察值 在因变量的观察值Y1,Y2,⋯,YnY1,Y2,⋯,YnY_1,Y_2,\cdots,Y_n为一...

    残差图

     残差图是以某种残差为纵坐标,以其他适宜的两位横坐标的散点图。这里横坐标有多种选择,最常见的选择是:

    • 因素的拟合值
    • 某变量的观察值
    • 在因变量的观察值 Y1,Y2,,Yn Y 1 , Y 2 , ⋯ , Y n 为一时间序列时

     横坐标可取为观察时间或观察序号。通过对残差及残差图的分析,以考察模型假设的合理性的方法,称为残差分析。这些方法比较直观,应用上效果也好。目前许多统计软件包均能打出残差图。可用来检查回归线的异常点,在分析观测中常用的散点图是以自变量我横坐标的残差图。

    定义

     以残差 ϵ^i ϵ ^ i 为纵坐标,以拟合值 y^i y ^ i 或对应的数据观测序号 i i 或数据观测时间为横坐标的散点图称为残差图,残差图是进行模型诊断的重要工具。

    横坐标为回归值

     为检验建立的多元线性回归模型是否合适,可以通过回归值Y^与残差的散点图来检验,其方法是画出回归值 Y^ Y ^ 与普通残差的散点图 (Y^i,ϵ^i),i=1,2,,n ( Y ^ i , ϵ ^ i ) , i = 1 , 2 , ⋯ , n 或者画出回归值 Y^ Y ^ 与标准残差的散点图 (Y^i,ri),i=1,2,,n ( Y ^ i , r i ) , i = 1 , 2 , ⋯ , n 其图形可能出现以下三种情况:

     对于图1(a)的情况,不论回归值 Y^ Y ^ 具有相同的分布,而残差 ϵ^i ϵ ^ i ri r i 并满足模型的各假设条件;对于图1(b)的情况,表示回归值 的 Y^ Y ^ 大小与残差的波动大小有关系,即等方差性的假设有问题;对于图1(c),表示线性模型不合适的样本,可能有异常值存在

     对于图1(a),如果大部分点都落在中间(b)部分,而只有少数几个点落在外边,则这些点对应的样本,可能有异常值存在。

    横坐标为观测值

     以每个 Xj(1<j<p) X j ( 1 < j < p ) 的各个观测值 xij1<i<n) x i j ( 1 < i < n ) 为点的横坐标,即以自变量为横坐标的残差图。与拟合值 Y^ Y ^ 为横坐标的残差图一样,满意的残差图呈现图1a的水平带状,如果呈图1b的形状,则说明误差是等方差的假设不合适,若呈现图1c的形状,则需要再模型中添加 Xj X j 的高次项,或者对 Y Y <script type="math/tex" id="MathJax-Element-122">Y</script>作变换。

    图1a

    图1a

    图1b

    图1(b)

    图1c

    图1(c)

    展开全文
  • 针对高光谱遥感图像中存在的条带噪声,提出了一种基于低通滤波残差图的条带噪声去除算法。算法首先使用高斯低通滤波器对图像进行滤波,得到低通滤波残差图;然后借助条带噪声秩为1以及残差图中的细节与条带噪声正交...
  • 基于低通滤波残差图的高光谱条带噪声去除_鞠荟荟,caj文件。简介针对高光谱遥感图像中存在的条带噪声,提出了一种基于低通滤波残差图的条带噪声去除算法。算法首先使用高斯低通滤波器对图像进行滤波,得到低通滤波...
  • 作者:ALustForLife 先说残差图究竟是什么鬼。...(上图仅是残差的示意图,非残差图残差图可见下文) 用普通最小二乘法(OLS)做回归分析的人都知道,回归分析后的结果一定要用残差图(residual ...

    转自:https://www.jianshu.com/p/c9022affd8b9
    作者:ALustForLife

    先说残差图究竟是什么鬼。
    在这里插入图片描述
    Residual Illustration
    残差图是指以残差为纵坐标,以任何其他指定的量为横坐标的散点图。(上图仅是残差的示意图,非残差图,残差图可见下文)

    用普通最小二乘法(OLS)做回归分析的人都知道,回归分析后的结果一定要用残差图(residual plots)来检查,以验证你的模型。你有没有想过这究竟是为什么?残差图又究竟是怎么看的呢?

    这背后当然有数学上的原因,但是这里将着重于聊聊概念上的理解。从根本上说,随机性(randomness)和不可预测性(unpredictability)是任何回归模型的关键组成部分,如果你没有考虑到这两点,那么你的模型就不可信了,甚至说是无效的。

    为什么这么说呢?首先,对于一个有效的回归模型来说,可以细分定义出两个基本组成部分:

    Response =(Constant + Predictors)+ Error

    我想说的是另一种说法,那就是:

    响应(Response) = 确定性(Deterministic) + 随机性(Stochastic)

    (有时候真是不得不吐槽下,毕竟是外国人发明的现代科学,中文翻译过来难眠有混淆视听之嫌,学术词汇的理解还是看英文更能清晰本质,一会就会聊到Stochastic就明白为什么这么说)

    确定性部分(The Deterministic Portion)

    为了完整,先提一下Deterministic这部分。在预测模型中,该部分是由关于预测自变量的函数组成,其中包含了回归模型中所有可解释、可预测的信息。

    随机误差(The Stochastic Error)

    Stochastic 这个词很牛逼,其不仅蕴含着随机性(random),还有不可预测性(unpredictable)。这是很重要的两点,往往很多朋友都以为有随机性的特点就够了,其实不然。这两点放在一起,就是在告诉我们回归模型下的预测值和观测值之间的差异必须是随机不可预测的。换句话说,在误差(error)中不应该含有任何可解释、可预测的信息。

    模型中的确定性部分应该是可以很好的解释或预测任何现实世界中固有的随机响应。如果你在随机误差中发现有可解释的、可预测的信息,那就说明你的预测模型缺少了些可预测信息。那么残差图(residual plots)就可以帮助你检查是否如此了!

    小注:回归残差其实是真实误差(ture error)的估计,就好比回归系数是真实母体系数(ture population coefficients)的估计。

    残差图(Residual Plots)

    我们可以用残差图来估计观察或预测到的误差error(残差residuals)与随机误差(stochastic error)是否一致。用一个丢骰子的例子最好理解了。当你丢出去一个六面的骰子时,你不应该能够预测得到哪面点数向上。然而,你却可以评估在一系列投掷后,正面向上的数字是否遵循一个随机模式,你自己心中就会想象出一个随机散布的残差图。如果,有人背着你对骰子做了点手脚,让六点更频繁的出现向上,这时你心中的残差图看上去就似乎有规律可循,从而不得不修改心中的模型,让你狐疑骰子一定有问题。

    相同的原则也适用于回归模型。你不应该能够预测任何给定的观察或预测结果的错误(或者说差别)。你需要确定残差是否与随机误差相互呈现一致性,就像丢骰子一样,残差若整体呈现“很古怪”的模式,你就需要回头修改你的回归模型了。上面“古怪”究竟怎么看呢?看下文。

    话说,OLS回归模型的随机误差到底是什么样子的呢?首先,残差不应该成片的很高或很低,而是在拟合值的范围内,残差应该以0为中心。换句话说,模型的拟合应该平均散布在被拟合值点附近。而且,在OLS理论中,假设随机误差产生的是正态分布的残差。因此,残差应该是以对称的模式,并且在整个拟合范围内具有恒定均匀的扩散,如下图python代码和绘图:
    在这里插入图片描述

    %matplotlib inline
    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    给任务单独分配随机种子
    np.random.seed(sum(map(ord
                           , "anscombe"))) 
    import seaborn as sns
    
    anscombe = sns.load_dataset("anscombe")
    sns.residplot(x="x", y="y"
                  , data=anscombe.query("dataset == 'I'")
                  , scatter_kws={"s": 80}) 
    

    Valid residual plot
    这是用Seaborn画的美图。拟合的好,就是0均值的白噪声分布 N ( 0 , σ 2 ) N(0,\sigma^2) N(0,σ2),不含任何人为模态。

    下面来看一个有问题的残差图。请一定要记住,残差不应该包含任何可预测的信息。

    sns.residplot(x="x", y="y"
                  , data=anscombe.query("dataset == 'II'")
                  , scatter_kws={"s": 80})
    

    Not valid residual plot
    在上图中,你就可以根据拟合值来预测残差的非零值。例如,拟合值为9的预期残差为正值,而5和13的拟合值具有负的预期残差。

    残差中的非随机模式表明模型的确定部分(预测变量)没有捕获一些“泄露”到残差中的一些可解释/可预测信息。该图表明模型几种没法解释的可能性,可能性包括:

    一个缺失的变量
    模型缺少一个变量的高阶项来解释曲率
    模型缺少在已经存在的项之间的相互作用项(交叉项)
    由此来回溯去修改模型,以期望修改后的残差图是理想中的残差图。

    除了上述之外,还有两种预测信息会潜入到了残差中的方式:

    残差不应该与另外的变量有所相关。如果你可以用另一个变量预测出此残差图,那么该变量就应该考虑到你的模型当中。那么就可以通过绘制其他变量的残差图,来考察这个问题。
    相邻残差(Adjacent residuals)不应该相互关联(残差的自相关性)。如果你可以使用一个残差来预测得到下一个残差,则说明存在一些模型还未捕捉到的可预测信息。通常来说,这种情况涉及时间有序的观察预测。例子就不举了。
    综上,若非要一句话小结,那就是要留意两个细节:正确残差图不仅要体现出随机性(random),还要体现不可预测性(unpredictable)即可。

    以上。

    Ref:

    展开全文
  • 线性回归—投资额(python、OLS最小二乘、残差图、DW检验) 一、问题描述:     建立投资额模型,研究某地区实际投资额与国民生产值(GNP)及物价指数(PI)的关系,根据对未来GNP及PI的估计,预测未来投资额。...

    线性回归—投资额(python、OLS最小二乘、残差图、DW检验)


    一、问题描述
        建立投资额模型,研究某地区实际投资额与国民生产值(GNP)及物价指数(PI)的关系,根据对未来GNP及PI的估计,预测未来投资额。以下是该地区连续20年的统计数据。

    年份序号投资额国民生产总值物价指数
    190.9596.70.7167
    297.4637.70.7277
    3113.5691.10.7436
    4125.77560.7676
    5122.87990.7906
    6133.3873.40.8254
    7149.39440.8679
    8144.2992.70.9145
    9166.41077.60.9601
    101951185.91.0000
    11229.81326.41.0575
    12228.71434.21.1508
    13206.11594.21.2579
    14257.917181.3234
    15324.11918.31.4005
    16386.62163.91.5042
    174232417.81.6342
    18401.92631.71.7842
    19474.92954.71.9514
    20424.530732.0688

    二、问题分析

        以时间为序的数据称为时间序列。时间序列中同一变量的顺序观测值之间存在自相关,若采用普通回归模型直接处理,将会出现不良后果。因此,需要诊断并消除数据的自相关性,建立新的模型。另外许多经济数据在时间上有一定的滞后性,也会影响模型效果。
        本文按照正常建模流程来处理数据,分析每个模型的优缺点并进行比较。
    三、基本模型
    变量描述:
         t t t~年份序号
         y t y_{t} yt~投资额
         x 1 t x_{1t} x1t~GNP
         x 2 t x_{2t} x2t~物价指数
    画散点图:
        拿到数据的第一步,画散点图,观察投资额与GNP和物价指数的基本关系。


    图1 投资额与GNP散点图

    图2 投资额与物价指数散点图

    可以看到,投资额与GNP及物价指数间均有很强的线性关系。所以,构建基本回归模型:

    y t = β 0 + β 1 x 1 t + β 2 x 2 t + ϵ t y_{t} = \beta_{0}+\beta_{1}x_{1t}+\beta_{2}x_{2t}+\epsilon_{t} yt=β0+β1x1t+β2x2t+ϵt

    四、模型求解和代码展示
        第一步,导入相关库,并解决画图中文问题。

    #导入库
    import cmath
    import numpy as np 
    import pandas as pd
    import statsmodels.api as sm
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    #matplotlib画图中中文显示会有问题,需要这两行设置默认字体
    

        第二步,导入数据,变量描述。

    #导入数据
    touzi = pd.read_csv("touzi.csv")
    touzi = pd.DataFrame(touzi)
    
    #变量描述
    t = touzi['年份序号']
    yt = touzi['投资额']
    x1t = touzi['国民生产总值']
    x2t = touzi['物价指数']
    

        第三步,分析 y t y_{t} yt(投资额) 和 x 1 t x_{1t} x1t(GNP)及 x 2 t x_{2t} x2t(物价指数) 之间的关系,通过散点图得以直观表达。分别是图1、图2。

        第四步(最重要一步),求解模型回归系数: β 0 、 β 1 、 β 2 \beta_{0}、\beta_{1}、\beta_{2} β0β1β2.
        本文用OLS普通最小二乘法求解,在下列代码 (‘yt ~ x1t + x2t’, data = touzi)中,yt表示因变量。自变量则在yt~后边表示成变量相加的格式,模型会自动求解出变量前的回归系数。

    #yt = b0 + b1x1t + b2x2t + e
    model_1 = sm.formula.ols('yt ~ x1t + x2t', data = touzi).fit()  #OLS普通最小二乘法
    model_1.summary()
    

    图3 拟合参数

        下面是模型结果中部分参数的解释。

    左边:
    Dep.Variable:    输出变量的名称
    Model:         模型名称
    Method:        方法,其中 Least Squares 表示最小二乘法
    Date:         日期
    Time:         时间
    No.Observations: 样本数目
    Df Residuals:    残差自由度
    Df Model:        模型参数个数,相当于输入的X的元素个数
    右边:
    R- squared:        可决系数,用来判断估计的准确性,范围在[0,1]越接近1,说明对y的解释能力越强,拟合越好
    Adj-R- squared:    通过样本数量与模型数量对R-squared进行修正,奥卡姆剃刀原理,避免描述冗杂
    F-statistic:       衡量拟合的显著性,重要程度
    Prob(F-statistic): 当prob(F-statistic)<α时,表示拒绝原假设,即认为模型是显著的
    Log likelihood:    对数似然比LLR
    AIC:               衡量拟合优良性
    BIC:               贝叶斯信息准则
    

        主要看此处的结果。Intercept表示 β 0 \beta_{0} β0 的数值, x 1 t 、 x 2 t x_{1t}、x_{2t} x1tx2t分别表示求得自身系数 β 1 、 β 2 \beta_{1}、\beta_{2} β1β2 的数值。

    coef:     系数
    std err:  系数估计的基本标准误差
    t:        t统计值,衡量系数统计显著程度的指标
    P>|t|:    P[0.025,0.975]:   95%置信区间的下限和上限值
    

    五、基本回归模型结果分析

    equation_yt = 'yt方程为:' + '\tyt' + '  =  ' + '363.7029' + '  +  ' + '0.6792' + '*x1t  ' + '-  ' + '972.7857' + '*x2t'
    print(equation_yt)
    pre_yt = 363.7029 + 0.6792*x1t - 972.7857*x2t
    pre_yt = list(pre_yt)
    MSE = cmath.sqrt(sum((yt - pre_yt)**2/(20)))
    print('剩余标准差:\ts   = ',MSE)
    print('R2 = ',0.990,',拟合度高')
    

        模型优点: R 2 = 0.990 R^2 = 0.990 R2=0.990,拟合度高
        模型缺点:没有考虑时间序列数据的滞后性影响,可能忽视了随机误差存在自相关,如果存在自相关,用此模型会有不良后果。

    六、自相关的定性诊断
    1、残差诊断法
        模型残差 e t = y t − y ^ t e_{t} = y_{t} -\widehat{y}_{t} et=yty t
         e t e_{t} et为随机误差 ϵ t \epsilon_{t} ϵt的估计值。
        作残差 e t e_{t} et~ e t − 1 e_{t-1} et1散点图,如果大部分点落在第1,3象限,则 ϵ t \epsilon_{t} ϵt存在正的自相关;如果大部分点落在第2,4象限,则 ϵ t \epsilon_{t} ϵt存在负的自相关。

    #残差诊断法
    et = yt - pre_yt    #残差
    et = list(et)
    
    #残差et 与 et_1 散点图
    plt.ylim(-30, 20)
    plt.xlim(-30, 20)
    plt.plot([-30,20],[0,0],'b',linewidth=1)
    plt.plot([0,0],[-30,20],'b',linewidth=1)
    et_1 = et[1:20]
    et_change = et[0:19]
    plt.scatter(et_1,et_change,marker = '+',color = 'g')
    

    图4 基本回归模型残差图

        自相关直观判断,基本回归模型的随机误差 ϵ t \epsilon_{t} ϵt存在正的自相关。注:此图不能直观看出大部分点落在第1,3象限,与案例中的图不太相同,不知原因,如有解决的朋友欢迎在评论区留言。下面展示案例图:


    图4 案例中基本回归模型残差图
    2、D-W统计量与D-W检验

    D W = ∑ t = 2 n ( e t − e t − 1 ) 2 ∑ t = 2 n e t 2 ≈ 2 [ 1 − ∑ t = 2 n e t e t − 1 ∑ t = 2 n e t 2 ] = 2 ( 1 − ρ ^ ) DW{\rm{ = }}\frac{{\sum\limits_{t = 2}^n {{{({e_t} - {e_{t - 1}})}^2}} }}{{\sum\limits_{t = 2}^n {e_t^2} }} \approx 2[1 - \frac{{\sum\limits_{t = 2}^n {{e_t}{e_{t - 1}}} }}{{\sum\limits_{t = 2}^n {e_t^2} }}] = 2(1-\widehat{\rho}) DW=t=2net2t=2n(etet1)22[1t=2net2t=2netet1]=2(1ρ )
        其中, ρ ^ = ∑ t = 2 n e t e t − 1 ∑ t = 2 n e t 2 \widehat{\rho} = \frac{{\sum\limits_{t = 2}^n {{e_t}{e_{t - 1}}} }}{{\sum\limits_{t = 2}^n {e_t^2} }} ρ =t=2net2t=2netet1,此处 ≈ \approx 的前提是 n n n较大。


        其中, d L d_{L} dL d U d_{U} dU需要查询D-W分布表。 − 1 -1 1 ≤ \le ρ ^ \widehat{\rho} ρ ≤ \le 1 1 1 即  0 0 0 ≤ \le D W DW DW ≤ \le 4 4 4 .
        注:以下DW计算数据均用课件给出数据,不再计算,有兴趣的朋友可以计算,因为用最小二乘估计参数与课件数据有偏差,计算出来的DW值不符合正自相关性,如果我解决了会及时修改。不过程序计算步骤都是没有问题的。

         D W DW DW计算程序:

    #D-W统计量
    DW = sum([(m-n)**2 for m,n in zip(et_change,et_1)])/sum([m**2 for m in et_change])
    print('DW =',DW,' 解释:因误差,假设原模型有正自相关')
    p = 1-DW/2
    print('p =',p)
    

        原模型 D W o l d = 0.8754 DW_{old}=0.8754 DWold=0.8754,根据样本容量 n = 20 n=20 n=20, α = 0.05 \alpha=0.05 α=0.05,通过查表得到 d L = 1.10 d_{L}=1.10 dL=1.10, d U = 1.54 d_{U}=1.54 dU=1.54,因为 D W o l d < d L DW_{old}<d_{L} DWold<dL,所以原模型有正自相关。
    七、广义差分变换
        原模型: y t = β 0 + β 1 x 1 t + β 2 x 2 t + ε t , ε t = ρ ε t − 1 + u t y_{t}=\beta_{0}+\beta_{1} x_{1 t}+\beta_{2} x_{2 t}+\varepsilon_{t}, \quad\varepsilon_{t}=\rho \varepsilon_{t-1}+u_{t} yt=β0+β1x1t+β2x2t+εt,εt=ρεt1+ut
        变换: y t ∗ = y t − ρ y t − 1 , x i t ∗ = x i t − ρ x i , t − 1 , i = 1 , 2 y_{t}^{*}=y_{t}-\rho y_{t-1}, x_{i t}^{*}=x_{i t}-\rho x_{i, t-1},\quad i=1,2 yt=ytρyt1,xit=xitρxi,t1,i=1,2
        新模型: y t ∗ = β 0 ∗ + β 1 x 1 t ∗ + β 2 x 2 t ∗ + u t , β 0 ∗ = β 0 ( 1 − ρ ) y_{t}^{*}=\beta_{0}^{*}+\beta_{1} x_{1 t}^{*}+\beta_{2} x_{2 t}^{*}+u_{t},\quad\beta_{0}^{*}=\beta_{0}(1-\rho) yt=β0+β1x1t+β2x2t+ut,β0=β0(1ρ)
        以 β 0 ∗ , β 1 , β 2 \beta_{0}^{*}, \beta_{1}, \beta_{2} β0,β1,β2 为回归系数的普通回归模型。

        DW检验后的处理步骤如下图:


         ρ ^ = 1 − D W / 2 = 0.5623 \hat{\rho}=1-DW/2=0.5623 ρ^=1DW/2=0.5623
        作变换:
         y i ∗ = y t − 0.5623 y t − 1 y_{i}^{*}=y_{t}-0.5623 y_{t-1} yi=yt0.5623yt1
         x i t ∗ = x i t − 0.5623 x i , t − 1 , i = 1 , 2 x_{i t}^{*}=x_{i t}-0.5623 x_{i, t-1}, \quad i=1,2 xit=xit0.5623xi,t1,i=1,2

        给出程序:

    #去掉数据后
    yt_1 = [97.4,113.5,125.7,122.8,133.3,149.3,144.2,166.4,195.0,229.8,228.7,206.1,257.9,324.1,386.6,423.0,401.9,474.9,424.5]
    x1t_1 = [637.7,691.1,756.0,799.0,873.4,944.0,992.7,1077.6,1185.9,1326.4,1434.2,1594.2,1718.0,1918.3,2163.9,2417.8,2631.7,2954.7,3073.0]
    x2t_1 = [0.7277,0.7436,0.7676,0.7906,0.8254,0.8679,0.9145,0.9601,1.0,1.0575,1.1508,1.2579,1.3234,1.4005,1.5042,1.6342,1.7842,1.9514,2.0688]
    
    #广义差分变换
    #变换
    yt_change = [a - p*b for a,b in zip(yt[1:20],yt_1)]
    x1t_change = [c - p*d for c,d in zip(x1t[1:20],x1t_1)]
    x2t_change = [e - p*f for e,f in zip(x2t[1:20],x2t_1)]
    
    yt_change = pd.DataFrame(yt_change)
    x1t_change = pd.DataFrame(x1t_change)
    x2t_change = pd.DataFrame(x2t_change)
    touzi['yt_change'] = yt_change
    touzi['x1t_change'] = x1t_change
    touzi['x2t_change'] = x2t_change
    

    八、新模型求解及验证
    1、求解模型
    y t ∗ = β 0 ∗ + β 1 x 1 t ∗ + β 2 x 2 t ∗ + u t y_{t}^{*}=\beta_{0}^{*}+\beta_{1} x_{1 t}^{*}+\beta_{2} x_{2 t}^{*}+u_{t} yt=β0+β1x1t+β2x2t+ut.

    #新模型
    #yt_change = b0_change + b1_1x1t_change + b2_1x2t_change + u
    model_2 = sm.formula.ols('yt_change ~ x1t_change + x2t_change', data = touzi).fit()  #OLS普通最小二乘法
    model_2.summary()
    

    #新模型
    equation_yt_change = 'yt_change方程为:' + '  yt_change' + '  =  ' + '252.0659' + '  +  ' + '0.7176' + '*x1t_change  ' + '-  ' + '1040.8011' + '*x2t_change'
    print(equation_yt_change)
    pre_yt_change = 252.0659 + 0.7176*x1t_change - 1040.8011*x2t_change
    MSE_change_1 = (yt_change - pre_yt_change)**2/(19)
    MSE_change_2 = MSE_change_1.apply(lambda x: x.sum())
    MSE_change_3 = cmath.sqrt(MSE_change_2)
    print('剩余标准差:\t  s_change   = ',MSE_change_3,'< s = 12.2853')
    print('R2_change  = ',0.991)
    

        总体效果良好, s n e w = 7.6100 < s o l d = 12.2853 s_{new}=7.6100 \quad <\quad s_{old}=12.2853 snew=7.6100<sold=12.2853

    2、新模型的自相关检验
        新模型 D W n e w = 1.5751 DW_{new}=1.5751 DWnew=1.5751,样本容量 n = 19 n=19 n=19,回归变量数目 k = 3 k=3 k=3, α = 0.05 \alpha=0.05 α=0.05,通过查表得,临界值 d L = 1.08 , d U = 1.53 d_{L}=1.08,d_{U}=1.53 dL=1.08,dU=1.53.
         d U < D W n e w < 4 − d U d_{U}<DW_{new}<4-d_{U} dU<DWnew<4dU,新模型无自相关性。
        新模型: y ^ t ∗ = 252.0659 + 0.7176 x 1 t ∗ − 1040.8011 x 2 t ∗ \hat{y}_{t}^{*}=252.0659+0.7176 x_{1 t}^{*}-1040.8011x_{2 t}^{*} y^t=252.0659+0.7176x1t1040.8011x2t.
        还原为原始变量: y ^ t = 252.0659 + 0.5623 y t − 1 + 0.7176 x 1 , t − 1040.8011 x 2 , t − 0.4.35 x 1 , t − 1 + 585.2425 x 2 , t − 1 \hat{y}_{t}=252.0659+0.5623y_{t-1}+0.7176 x_{1,t}-1040.8011x_{2,t}-0.4.35x_{1,t-1}+585.2425x_{2,t-1} y^t=252.0659+0.5623yt1+0.7176x1,t1040.8011x2,t0.4.35x1,t1+585.2425x2,t1,称为一阶自回归模型。
        其中, 0.4.35 x 1 , t − 1 0.4.35x_{1,t-1} 0.4.35x1,t1 0.5623 y t − 1 × ρ 0.5623y_{t-1}\times \rho 0.5623yt1×ρ; 585.2425 x 2 , t − 1 = 1040.8011 x 2 t × ρ 585.2425x_{2,t-1}=1040.8011x_{2 t} \times \rho 585.2425x2,t1=1040.8011x2t×ρ.

    九、基本回归模型与一阶自回归模型比较
    1、残差图比较

    #一阶自回归模型
    onelevel_pre_yt =np.array([p*q for q in yt_1])  + np.array([0.7176*r for r in x1t[0:19]]) + np.array([p*(-0.7176)*s for s in x1t_1]) + np.array([-1040.8011*t for t in x2t[0:19]]) + np.array([p*1040.8011*v for v in x2t_1])
    
    #新残差诊断法
    et_one = list(yt[0:19]) - onelevel_pre_yt   #残差
    et_one = list(et_one)
    

        将原模型与新模型(一阶自回归模型)残差归一化,把数据规模转换到[-20,20],进行比较。

    #对 et 数据归一化到[-20,20]区间范围
    a_min = -20
    b_max = 20
    et_min = min(et[0:19])
    et_max = max(et[0:19])
    k=(b_max-a_min)/(et_max - et_min)
    et_sta=[(a_min + k*(l - et_min)) for l in et[0:19]]
    
    #对 et_one 数据归一化到[-20,20]区间范围
    et_min_one = min(et_one)
    et_max_one = max(et_one)
    k2=(b_max-a_min)/(et_max_one - et_min_one)
    et_sta_one=[(a_min + k2*(ll - et_min_one)) for ll in et_one]
    

        GNP(国民生产总值)的新旧模型残差比较。

    #残差与国民生产总值的关系
    plt.scatter(x1t[0:19],et_sta,marker = '+')
    plt.scatter(x1t[0:19],et_sta_one,marker = '+',color='r')
    plt.legend(["原模型","新模型"])
    

    图5 GNP新旧模型残差比较图

        物价指数新旧模型残差比较。

    #残差与物价指数的关系
    plt.scatter(x2t[0:19],et_sta,marker = '+')
    plt.scatter(x2t[0:19],et_sta_one,marker = '+',color='r')
    plt.legend(["原模型","新模型"])
    

    图6 物价指数新旧模型残差比较图

    2、拟合图比较

    #对 yt 数据归一化到[0,500]区间范围
    c_min = 0
    d_max = 500
    yt_min = min(yt[0:19])
    yt_max = max(yt[0:19])
    k3=(d_max-c_min)/(yt_max - yt_min)
    yt_sta=[(c_min + k3*(lll - yt_min)) for lll in yt[0:19]]
    
    #对 onelevel_pre_yt 数据归一化到[-20,20]区间范围
    onelevel_pre_yt_min = min(onelevel_pre_yt)
    onelevel_pre_yt_max = max(onelevel_pre_yt)
    k4=(d_max-c_min)/(onelevel_pre_yt_max - onelevel_pre_yt_min)
    onelevel_pre_yt_sta=[(c_min + k4*(llll - onelevel_pre_yt_min)) for llll in onelevel_pre_yt]
    
    #对 x1t 数据归一化到[0,20]区间范围
    e_min = 0
    f_max = 20
    x1t_min = min(x1t[0:19])
    x1t_max = max(x1t[0:19])
    k5=(f_max-e_min)/(x1t_max - x1t_min)
    x1t_sta=[(e_min + k5*(lllll - x1t_min)) for lllll in x1t[0:19]]
    
    #对 et_one 数据归一化到[-20,20]区间范围
    x2t_min = min(x2t[0:19])
    x2t_max = max(x2t[0:19])
    k6=(f_max-e_min)/(x2t_max - x2t_min)
    x2t_sta=[(e_min + k6*(llllll - x2t_min)) for llllll in x2t[0:19]]
    
    #拟合图比较
    plt.scatter(x1t_sta[0:19],yt_sta[0:19],marker='o',c='',edgecolors='b')
    plt.scatter(x2t_sta[0:19],yt_sta[0:19],marker='+',color='r',edgecolors='b')
    plt.legend(["原模型","新模型"])
    

        新旧模型拟合图比较。


    图7 新旧模型拟合图比较

        按道理,这里是要看出:一阶自回归模型残差 e e e比基本回归模型要小,这里我也没有明确看出来。
        接下来就可以根据方程式进行投资额预测,本文不再展开描述。

    展开全文
  • 残差图的matlab代码 PID仿真工具 pid仿真工具是一个1维控制仿真软件 功能 PID仿真工具提供任意控制算法仿真、任意模型仿真功能。通过GUI显示仿真数据。软件分为2部分功能: 1、控制算法仿真 2、系统模型辨识 与...
  • 源视频链接: https://pan.baidu.com/s/1td2EKEzSOsTl16nnUZogyQ 提取码: 53hm 转载于:https://www.cnblogs.com/liusuanyatong/p/11259601.html
  • 为啥一定要用残差图检查你的回归分析?

    万次阅读 多人点赞 2018-07-22 21:19:41
    先说残差图究竟是什么鬼。 残差图是指以残差为纵坐标,以任何其他指定的量为横坐标的散点图。(上图仅是残差的示意图,非残差图残差图可见下文) 用普通最小二乘法(OLS)做回归分析的人都知道,回归分析后的结果...
  • 说明:这段代码实现了论文: [1] Mariano Rivera、Francisco Hernandez-Lopez 和 Adonai Gonzalez,“通过累积残差图进行相位展开”,发表在 Optics and Lasers in Engineering,2015 年。 代码作者:Mariano Rivera...
  • 特别是偏残差图,功能很强,但不漂亮,残差几乎看不见。我们需要根据这些代码来制作自己的偏回归平滑图。 1) 基本的数据设置 我们正在使用这里讨论的数据集。我们使用的是国家发病率和死亡率空气污染研究(NMMAPS...
  • 残差图的matlab代码 Video digital watermark (1) 选题 视频的数字水印嵌入与视频的类mpeg2标准压缩(用于作为攻击水印的手段)。 (2) 工作简介,即要做什么事情 通过对视频中随机选取的帧做频域高频部分的...
  • 残差图可以作为图形分析方法,可以对回归模型进行评估、获取模型的异常值,同时还可以检查模型是否是线性的,以及误差是否随机分布。 #获取特征和目标变量的值 X = data["rm"] Y = data["medv"] from sklearn....
  • F[Kt]-残差图 (2003年)

    2021-06-17 15:04:09
    利用图的合成运算找到了一种从已知的残差图构造新的残差图的方法;讨论了F-残差图与F[Kt]-残差图之间的某些内在联系,发现了一类新的典型的m-Kn-残差图
  • 本文研究了3-维超平面完备残差图以及m重3-维超平面完备残差图.利用容斥原理以及集合的运算性质等方法,分别获得了3-维超平面完备残差图和m重3-维超平面完备残差图的最下阶以及二者的唯一极图,将文献[1]中定义的...
  • 残差图+两变量+ECDF

    千次阅读 2018-10-09 21:50:39
    正态QQ的原理 QQ通过把测试样本数据的分位数与已知分布相比较,从而来检验数据的分布情况 QQ是一种散点,对应于正态分布的QQ,就是由标准正态分布的分位数为横坐标,样本值为纵坐标的散点 。要利用QQ...
  • 简单线性回归模型与分析残差图.pptx
  • 为了获得对模型性能的无偏估计,在训练过程中使用未知数据对测试进行评估是至关重要的。所以,需要将数据集划分为训练数据集和测试数据集,前者用于模型的训练,后者用户模型在未知...可以通过绘制预测值的残差图,...
  • 安装PyFoam 与输出残差图

    千次阅读 2020-05-28 21:17:06
    之后pyFoam可显示残差图像 输出残差图 输出残差图 1)这就产生了第一种方法 pyFoamRunner.py --clear icoFoam -case cavity 运行结束后,用下面命令plot残差 pyFoamPlotWatcher.py *.log(*为case文件夹中,...
  • 基于残差图像表示和特征提取的人脸识别方法
  • 链接:点击跳转
  • 论线性回归中残差图的重要性

    千次阅读 2015-01-02 19:11:00
    因为在这里不清楚如何用sas组合四幅图,所以就没贴出来,如果是线性模型,那么残差应该符合正态分布的假设,所以残差应该围绕0上下无规律波动,如下(y1*x1的残差图) 如果不是这种形状,就表明拟合的模型有问题,...
  • 利用matlab中的regress回归分析拟合曲面(得到方程系数)以及残差图。matlab代码如下:% 示例数据,随便编的 a1 = 76 ;b1 = 72 ; a2 = 59 ;b2 = 113; a3 = 48 ;b3 = 63 ; a4 = 66 ;b4 = 158; a5 = 92 ;b5 = 166....
  • 对股票软件比较熟悉的同学都知道经常会看到这样的界面:上图显示的是股价的运行,下图显示的是一些技术指标(坐标轴可以...%绘制拟合、残差图 %x横坐标;y_real观测值,y_fit拟合值 figure(100); hold all; h=subplot(2

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,803
精华内容 18,321
关键字:

残差图