精华内容
下载资源
问答
  • 一元二次回归方程计算方法

    热门讨论 2010-11-16 22:23:35
    一元二次回归方程计算方法,使用最小二乘法计算。。回归分析 一元二次回归方程计算方法,使用最小二乘法计算。。回归分析
  • 本学期我的专业课是概率论,回归分析,偏微分方程,数值代数,数值逼近,金融时间序列分析,应用金融计量学和商务英语。在所有的这些课程中,回归分析其实相对来说是比较友好的。但是学统计的人应该都会有感觉就是,...

    32fd5511307666440c1f8e522bca0bb7.png

    大家好!

    新学期开始了,不知道大家又是否能够适应新的一学期呢?先祝所有大学生和中小学生开学快乐!

    本学期我的专业课是概率论,回归分析,偏微分方程,数值代数,数值逼近,金融时间序列分析,应用金融计量学和商务英语。在所有的这些课程中,回归分析其实相对来说是比较友好的。但是学统计的人应该都会有感觉就是,回归分析这一门课无论是在理论还是课后的软件实践上,都是非常重要的一门统计课。这也是我决定好好花点时间,整理整理这一门课的笔记的原因。

    这一份笔记需要有《概率论》和《数理统计》的先修知识。如果你修过工科的《概率统计》应该也够了。因为个人数学专业的缘故,所以这一系列的笔记大部分会关注回归分析的理论而不是实践。个人认为,虽然现在关于回归已经有非常多的软件能够实现,但是只有真正了解它的本质,才能在研发和创新上有路可走。因此这一部分笔记其实非常适合了解回归内容,会使用软件跑回归,但是不太清楚回归的一些基本参数和原理的人去阅读。

    我们在之前的《统计学笔记》系列也确实有简单提到过回归分析(第7节),但是远没有这一份笔记来的系统。而且那一篇笔记只是一个简单的勾勒,在具体的原理细节上都说的很不清楚。因此这一系列的笔记,如果会一直更新的话,将会在《统计学笔记》的基础上做进一步系统而深入的细化,并努力把相关的理论解释清楚。

    因为暑假的时间很紧张(带孩子去了……),自己的之后的研究规划什么的还没有完全确定,因此暑假其实没有太大的贡献。当然我自己还不清楚会有什么其余的打算。但是不管怎么说,虽然别的内容是否总结整理我还没有定,但是这一系列笔记,我会尽力的去跟上教授的进度,并展现在这里。

    我们学校的《回归分析》是根据教授自己的slides进行授课的。所以我们的所有的笔记内容都会与教授的讲义有关。如果需要一本参考书的话,推荐人大的《应用回归分析》。但是教授自己也说了,这书很不理论……

    《回归分析》是我上的真正意义上的第一门统计专业的理论课。不可避免的是相比真正的统计学,我的笔记因为自己的理解很多,所以不能保证所有的内容都是“正确无误”的。如果发现了一些问题,也欢迎在评论区指正

    好了,废话就说到这里了,我们开始本节的内容吧。

    目录

    • 引言——关系与回归的由来
    • 一些回归的概念
    • 三大基本假设
    • 一元线性回归
      • 参数估计
        • 最小二乘估计
        • 最大似然估计
      • 参数的统计性质
        • 残差关系式
        • 的相关性质与统计量
        • 最佳线性无偏估计
    • 小结

    引言——关系(Correlation)与回归的由来

    研究代数方向或者学基础数学的人可能会把“关系”与集合论联系到一起?为了防止出现这个误解,我标注了一下英文……

    任何一个合格的大学生,都肯定在高中数学的《选修2-3》中接触过回归(regression),在那个时候我们就知道,回归分析就是给了一些数据点,根据这些数据点画一条直线,然后我们就根据这条直线去做预测。所有学统计的人也应该都会有一种感觉,就是说,统计一定程度上,破坏了数学的严谨性。出现这一条鄙视链的原因是,统计研究的是一种非确定性关系

    作为一个学数学的人,在没接触统计学之前,最烦的就是“不确定”。一加一等于几,你不能说它又是2,又是3。抽象一层来说,就有点“函数”的意思。在初中第一次接触函数就知道,给定一个自变量

    ,你必须要告诉我确定的
    是多少。这就是
    确定性关系。它不打马虎眼的,结果是确定的。

    那么为什么说统计“不严谨”呢?比方说你研究一个人身高与体重的联系,这个时候,你告诉我一个人的身高

    ,我是没有办法告诉你一个确定的体重
    的。出现这样的问题的原因归因于
    世界的概率和未知。换句话说,世界上任何一个事情,都是有自己的 概率分布的。比如说“太阳不可能从西边升起”这句话,实际上暗含的意思是“太阳从西边升起的概率为0”(当然细究一下这句话确实也不够严谨,因为概率为0并不代表不会发生)。所以只能说使用统计去找到某一个“最有可能发生的地方”,然后认为这个“概率最大”的地方就是我们要的结果。比如说我告诉你我身高是184cm,那么通过统计,你可以认为我“最有可能”体重是75kg,那么一般来说,如果作预测,你可能就会说,你“预测”我是75kg。但是实际上不一定是75kg的。

    那么回归分析是怎么回事呢?如果我知道对于每一个

    都有一个确定的
    ,那么就没统计什么事了。但是如果对于每一个
    都有一个确定的
    概率分布,你就会发现坏事了。下面一个图展现了这个问题,也展现了具体的“非确定性关系”。

    c63218ad0d746c8bed1e3de3f0d20ac6.png
    对于每一个具体的x,都会有不同的概率分布,那么想给定一个确定的y就不可能了,因为在概率分布上的每一个值y都有可能是最终的结果。

    为了勾勒出这种“非确定性关系”,我们引入了相关分析和回归分析。相关分析就是很单纯的,研究两个变量之间的关系。我当然可以认为两个变量都是随机变量。但是回归分析,是要研究因果关系的。要求给定的

    ,也就是“原因”,要明确。这会引出我们之后说的
    回归分析的三大基本假设之一。而回归分析,本质上,就是把可能 概率最大的点给找出来,然后画在图上。这个我们之后的细节也会涉及到。

    其实回归这个词本身也有它自己的来历,感兴趣的可以关注下高尔顿的农场实验。关于关系,就废话这么多。所以感觉学统计就是好,随随便便说废话也没人管我。不像纯数学怎么编废话都编不了几句……

    一些回归的概念

    首先要说明什么是回归函数。我们之前说了,给定一个

    ,出来的其实是
    的一个概率分布。因此我们实际上要研究的,其实就是
    (为什么这么说,之后会解释)。所以为了研究回归,我们说
    就是回归函数。

    那么什么是线性回归呢?请注意,它是针对回归系数要求线性。比方说常见的多元回归

    ,它依然是一个线性回归函数,因为
    都是一次的。

    那么什么是回归方程呢?讲白了,如果回归函数的形式我们找到了,那它就变成回归方程了。比方说我们发现

    ,那么回归方程就是
    。因为嫌
    太麻烦了,所以我们就直接写成
    ,这就是我们熟悉的回归方程的形式了。

    说到回归方程,就又多了两个概念——理论回归方程经验回归方程。什么意思?理论回归方程,就是说我们知道了具体的形式,但是不知道系数。一般写成

    而经验回归方程就是说,我们通过了一系列的操作,把系数给“估计”出来了,那就变成了经验回归方程。一般写成

    有人问,为什么说是“经验”回归方程?没有错,通过这么一个回归函数,我们确实可以有法子,在给定我的

    之后,把我的
    的概率分布的最大的点确定下来。但是,
    能确定
    的概率分布吗
    ?放心吧,统计学家早就放弃这个打算了。所以实际上我们确实找到了回归系数,但是我们一定是没办法找到“正确的”系数的,因为你没有办法捕获所有的影响
    的因素。正因因此,我们说它是“经验的”,其实暗含的意思是,我们通过了已知的,经验的数据,去“预测”回归系数,应该是这个最好。但是真正它是多少,我们永远没有办法知道。

    也正是这个原因,我们认为,无论你怎么写回归函数,最终的结果都是有偏差的,这也是引入误差项的原因之一,也就正好引入了回归方程的一般形式

    三大基本假设

    勾画出具体的两个变量之间的关系,不做点假设你从哪里下手?所以我们在回归之前,做了三个基本假设。

    Notation 1: Three basic assumptions of regression analysis
    (1)
    非随机。

    (2)
    (Gauss-Markov条件)

    (3)
    (正态分布假定)

    第一个假设的意思就是“原因要明确”,我们在之前的引言有说。第二个假设是为什么呐?我们做一个数学推导就能看出来。

    Deduction 1:

    看出来了吗?中间我们用了假设

    。如果这个假设不对,那么我们的回归函数的形式就错了,那也就是说我们刚开始研究的根基就被破坏了。这显然是不被允许的。

    当然有人问,那如果

    怎么办?一般是没有关系的,比如说它是一个常数
    ,那么它可以被“吸收”进
    里。也就是说,设
    ,然后认为
    是回归函数即可。

    第二个假设的第二条是为什么呐?这里的我们的假设的意思相当于,允许有一定的方差,但是误差项之间协方差必须为0,且误差项本身的方差必须在每一个点都相等。一方面,如果几个数据点之间有关系了是什么一个情况?一个经典的例子就是多重共线性。我们不在这里给出这方面的细节,但是我们之后的笔记中会具体的说明有关多重共线性的内容。当然,另一方面,如果每一个点的方差不一样怎么办?这个我们有专门的说法叫异方差性。出现了这种情况的话,统计学家也有自己的方法去解决它,之后的笔记里会涉及到。

    第三个假设也很好理解,如果残差项之间不是无关的,那么出现的问题,上一段已经说过了。为什么要假定为“正态分布”呢?除去正态分布的满足的比较好的一些性质以外,还有一个考虑是,它让回归“有办法”能够捕获到“概率最大”的点。下面的图就说明了这一点。

    5a11a42f66aa39d2b92f765ceec93328.png
    正态分布的期望值就正好落在最高处,也就是说,我们要求的E(y|x)对应的那个x值就正好是概率最大的点,符合我们的预期。

    所以,我们差不多算是说完了回归的最基本的一些东西。现在开始,我们要坐上数学的车了……

    一元线性回归

    参数估计

    一元线性回归的基本形式就是

    。通过这个我们可以得到的一个结论是
    。通过两边取期望和方差是容易看出来这一点的。

    我们之前说过,回归函数就是用来预测非确定性关系的。但是你作为一个函数,总不能连系数都不知道吧?所以才有了估计系数的说法。对于一元线性回归,估计系数自然就是估计

    了。

    估计参数的方法自然不少,这里主要说两种。

    最小二乘估计(OLSE)

    要知道,回归分析的基本操作原理是“捕获信息”。也就是说,我们需要通过已有的信息,去推测出新的未知的信息。那么什么是“已有的信息”?自然就是给定的一些数据点了。我们在之前解释过,我们根本不可能完全预测准确,对于给定的

    ,它所对应的确切的
    是多少。但是我们很明显,为了精确,是希望能够“
    减小误差”的。而最小二乘估计的目的就是去减少这种误差。数学公式表示出来就是
    ,其中
    是一系列已知的数据点。

    那么为什么要使用平方呢?有人问我用

    不行吗?直观上来看,这样似乎没有太大的问题。但是
    你怎么求它的极值呢?别忘了,我们既然要“减小误差”,那自然就是需要去寻找它“最小”的时候。怎么寻找极值,所有的高中生都知道应该使用导数。行了,绝对值处处可导吗?好像不是吧。基于这个考虑,我们使用了平方。

    好的,回到正题,要注意的地方是

    ,所以我们归根到底,就是要最小化
    。如果我们设这个函数为
    ,要求极值?别想了,求偏导吧。所以我们自然可以通过求偏导,去得到最终的结果。

    具体的推导细节,在《统计学笔记》的第7节中可以找到,这里我们直接给出推导的结果。

    Notation 2:

    因为这里我们找到了这两个具体的系数,所以自然,系数的符号要改为

    了。

    最大似然估计(MLE)

    只要你学过《概率统计》,就不会感到陌生。

    我们之前对

    ,也就是误差项,作过正态分布的假定。又因为
    的一个线性组合(别忘了,
    不认为是随机变量),所以实际上
    也是服从正态分布的。因此它的概率分布函数就是
    。那么乘在一起就是

    显然这个函数直接求导是不切实际的,因此我们取一下对数,得到

    当然了,这并不会让很多人觉得简单很多,因为看上去还是存在一定的复杂度的。但是别忘了,什么是最大似然估计?意思就是要最大化

    ,也就是最大化
    。注意,在
    已知的时候,如果我们要最大化
    ,那么其实最后的目的就是最小化
    有没有感觉似曾相识?对,这就是OLSE了,所以实际上,最后我们得到的结果,
    的估计值其实是与OLSE无差的。最后的问题其实就回到了
    的估计。

    要估计

    ,还有一个技巧就是,你可以把
    当作一个变量去考虑,这样求导就会方便很多。最后我们得到的结果如下:
    Notation 3:

    与之前相同,其中

    参数的统计性质

    其实在之前,我们就已经涉及到了不少新的参数,它们自然也有自己的性质,我们一一介绍。

    残差关系式

    我们回到最小二乘估计的过程中去,求偏导得到的两个式子是什么?

    Notation 4:

    别忘了,估计完

    之后,它们俩的标记就变为了
    。另外还要注意的是,
    。因此我们实际上,根据这两个式子,得到的残差关系式就是
    Notation 5:

    的相关性质与统计量

    首先是线性性。我们来看一下

    ,我们之前已经说过,
    ,那么对分子我们拆开一下,可以看出
    (注意,
    不随指标变化,而
    )。那么又因为
    的分母也是一个常数,所以我们可以看出,
    它实际上就是
    的线性组合
    。这样的话,
    也自然不用说了,很简单就能看出来。

    其次是无偏性。我们先证明

    Deduction 2:
    (想想为什么,我们之前有说过)

    最后一条需要注意到

    根据这个,我们来看看

    的情况。
    Deduction 3:

    最后一步注意到

    OK,下面是一个更刺激的东西——方差。这么说的原因是它的运算相比期望来说要更加复杂一些,我们继续看它们方差的推导。一样,先看看

    Deduction 4:
    (注意每一个
    之间的协方差为0)
    (关于
    而言,之前一大串都是常数,可以直接从var()内拿出来)

    根据这个,

    就好推了。
    Deduction 5:
    (注意两个常数之间协方差为0)

    下一步,是关于两个参数的分布。这没什么好说的,因为

    都是服从正态分布的,所以
    也自然服从正态分布,所以就得到了它们俩也是正态分布的结论(由线性性)。

    最后也是最有技巧的部分——协方差。这个推导如果找错了方法,是很要人命的。这里给一个我同学想出的比较容易的推导过程。

    Deduction 6:

    到目前为止,我们过完了所有的参数相关的统计量。也因为参数是具有统计量的,因此这就暗示了我们估计的参数,实际上也是不确定的。

    在说之后的内容之前,我们事先给定一些记号。这些记号已经在《统计学笔记》中出现过,引入它们只是为了方便(而且是大大的方便……)。

    Notation 6:

    最佳线性无偏估计(BLUE)

    这是关于

    的另外一个比较独特的性质。因为它其实是一个大定理,所以我们单独拉了出来。首先还是一样,看看到底这是啥吧。
    Definition 1:Best Linear Unbiased Estimation
    对于参数
    的一个无偏估计
    ,如果对于任何一个它的无偏估计
    ,都有
    ,则称
    的最佳线性无偏估计。

    那么下面这个大定理要说的就是

    Theorem 1:
    在G-M条件(回归三大基本假设的第二个)下,
    是对应的最佳线性无偏估计。

    我们证明一下这个结论。

    显然我们要关注的重点就是,是否对于任意的一个无偏估计

    ,都会有
    。选择使用
    的形式是因为,
    的任何一个估计都是
    的线性组合,我们已经在之前介绍过这个性质。

    下面我们做一点推导。

    Deduction 7:

    我们需要注意的是,第二个式子针对任意的

    都需要满足,因此我们可以得到的结论是。
    Notation 7:

    现在我们来考虑方差,不妨设

    ,那么我们显然要对方差做一点变换。为了凸显出两个估计参数之间的差异,我们不妨做一点加减运算。
    Deduction 8:

    显然,如果我们需要得到方差的这个结论,我们只需要考虑

    的情况就好。

    下面,我们主要来推导最后的协方差。

    Deduction 9:
    (能放在外面的原因是,每一个
    之间协方差为0)

    也就是说,我们推导出协方差其实是0。这就说明,

    ,而方差又是非负的,于是结论自然就成立了。

    通过这些不太显然的性质,相信大家也不难明白为什么线性回归现在依然很火了。另外,请不要在意求和号的一些细节,我只是懒得把上下标打上去了……

    小结

    这一节是一节相对来说比较偏引入的笔记。因为统计学科相对比较贴近实际,也有很高的实用性,因此大家的阅读难度没有之前的几个专题笔记那么大,并且我也有充分的理由说一大堆的废话……但是因为统计毕竟也算是数学(虽然有的人并不认为它是数学),所以也还是会涉及到一定量的定理和性质。在回归分析中,很多运算的技巧是需要记住的,这些都在笔记中有所体现。

    我们之后有可能会补充一些习题作为性质的补充,但是这一节就暂时没有了。

    感谢大家的支持~我会继续抽时间去贡献高质量有诚意的创作!

    ——————————————————广告——————————————————

    1f2389fb9c74ad596a5b7f9eaa666b00.png

    本专栏为我的个人专栏,也是我学习笔记的主要生产地。任何笔记都具有著作权,不可随意转载和剽窃

    个人微信公众号:cha-diary,你可以通过它来有效的快速的获得最新文章更新的通知。

    本人最近在寻找与数据科学,计算数学,统计有关的科研和实习机会。希望各路大佬神仙如果有看得上我的可以和我联系下~谢谢你们!

    专栏目录:笔记专栏|目录

    想要更多方面的知识分享吗?欢迎关注专栏:一个大学生的日常笔记。我鼓励和我相似的同志们投稿于此,增加专栏的多元性,让更多相似的求知者受益~

    展开全文
  • 1.实现一元(或多元)线性回归 a. 根据对客观现象的定性认识初步判断现象之间的相关性 b. 绘制散点图 c. 进行回归分析,拟合出回归模型 d. 对回归模型进行检验—计算相关系数、异方差检验(散点图) e. 进行回归预测...

    实现目标

    1.实现一元(或多元)线性回归
    a. 根据对客观现象的定性认识初步判断现象之间的相关性
    b. 绘制散点图
    c. 进行回归分析,拟合出回归模型
    d. 对回归模型进行检验—计算相关系数、异方差检验(散点图)
    e. 进行回归预测
    2实现离差形式的一元线性回归

    实验数据

    数据如下图,该数据为通过中国气象局数据库统计而来的2019年厦门市日平均气温数据(Data为1时日期为1月1日),该数据的散点图与折线图分别如图1图2所示。从图中可以看出厦门为典型的北半球夏季高温冬季低温气候,且存在波动。
    在这里插入图片描述
    在这里插入图片描述
    此外,为了方便进行一次线性回归及其相关操作,我取出一半数据(Data值为0至180)的数据进行线性回归模型的构建,如图3
    在这里插入图片描述

    结果分析

    数据集1下的回归分析

    在这里插入图片描述
    最终实验结果如图4所示,其中第一行表示一次回归模型的拟合函数,如图5所示,很明显的可以看出误差极大,因此我们对其进行二次回归
    在这里插入图片描述
    第二行结果为为此回归拟合函数,如图6所示,可以看出拟合效果较好
    在这里插入图片描述
    同时对一次线性回归计算得出相关系数为0.7861736064961535,u2-x散点图即其回归如图所示
    在这里插入图片描述
    在这里插入图片描述
    通过离差形式的线性回归拟合模型如下
    在这里插入图片描述

    数据集2下的回归分析

    在这里插入图片描述
    最终实验结果如图10所示,其余结果(图11-图15)解释同3.1.1
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    源代码

    数据下载点这里:(data1)(data2)

    import xlrd
    from pylab import * 
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    
    def readFire(dataFir):
    	dataN=[]
    	dataX=[]
    	dataY=[]
    	table = dataFir.sheet_by_index(0) 
    	for i in range(1,table.nrows): 
    	    line=table.row_values(i) 
    	    dataN.append(line) 
    	dataN=np.array(dataN) 
    	dataX = dataN[:,0]
    	dataY = dataN[:,4]
    	return dataX,dataY
    
    def Visual(x, y):
    	plt.title('折线图')
    	plt.plot(x, y)
    	plt.xlabel("Date")
    	plt.ylabel("Temperature(°C)")
    	plt.show()
    
    	plt.title('散点图')
    	plt.scatter(x, y,s=10,color="b")
    	plt.xlabel("Date")
    	plt.ylabel("Temperature(°C)")
    	plt.show()
    
    def Regression1(x,y):
    	n=len(x)
    	xx=0
    	xy=0
    	xAvg=0
    	yAvg=0
    	for i in range(n):
    	    xy = xy + x[i]*y[i]
    	    xx = xx + x[i]*x[i]
    	    xAvg = xAvg + x[i]
    	    yAvg = yAvg + y[i]
    	xAvg=xAvg/n
    	yAvg=yAvg/n
    	b = (xy-n*xAvg*yAvg)/(xx-n*xAvg*xAvg)  
    	a = yAvg - b*xAvg
    	print('一次回归方程为:y=',b,'* x +',a)
    	plt.title('一次线性回归')
    	plt.scatter(x,y,s=10,color="b") 
    	x=np.linspace(0,n,n)
    	yp=b*x+a
    	plt.plot(x,yp,color="r")
    	plt.show()
    
    def Regression2(x, y):
    	X = x.reshape(-1,1)
    	X2 = np.hstack([X**2,X])  
    	lr = LinearRegression()
    	lr.fit(X2,y)
    	print('二次回归方程为:y=',lr.coef_[0],'x^2 *',
    		lr.coef_[1],'x +',lr.intercept_)
    	yp = lr.predict(X2)
    	plt.title('二次线性回归')
    	plt.scatter(x,y,s=10,color="b")
    	plt.plot(x,yp,color='r')
    	plt.show()
    	XGXS(x,y,yp)
    
    def XGXS(x,y,yp):
    	n=len(x)
    	y1=0
    	y2=0
    	yAvg=0
    	for i in range(n):
    	    yAvg = yAvg + y[i]
    	yA=yAvg/n
    	for i in range(n):
    	    y1 = y1+(yp[i]-yA)**2
    	    y2 = y2+(y[i]-yA)**2
    	u2 = (y-yp)**2
    	plt.title('u2-x散点图')
    	plt.scatter(x,u2,s=10,color="b")
    	plt.show()
    	print('回归模型检验:')
    	R=pow(y1/y2,.5)
    	print('相关系数为:',R)
    	Regression1(x,u2)
    
    def LiCha(x,y):
    	n=len(x)
    	xMat = np.mat(x).T
    	yMat = np.mat(y)
    	xTx = xMat.T * xMat
    	ws = xTx.I * xMat.T * yMat.T
    	x=np.linspace(0,n,n)
    	yp = xMat * ws
    	print('离差回归方程为:y=',ws,'* x ')
    	plt.title('离差形式线性回归')
    	plt.scatter(x,y,s=10,color="b") 
    	plt.plot(x,yp,color="r")
    	plt.show()
    
    if __name__ == '__main__':
    	dataFir = xlrd.open_workbook("data2.xlsx") 
    	dataX,dataY = readFire(dataFir)
    	#可视化数据
    	Visual(dataX, dataY)
    	#一次线性回归
    	Regression1(dataX,dataY)
    	#二次线性回归
    	Regression2(dataX, dataY)
    	#离差形式线性回归
    	LiCha(dataX,dataY)
    
    
    展开全文
  • 各位大侠,有没有一元二次回归详细计算过程,求教
  • 话不多说开始学习线性回归(线性回归,猛地一听是不是想起了线性回归方程,对的就是你了解的线性回归方程,这里我们说的是一元线性回归方程,不难,你会一方程就会一元线性回归方程,这里不过只是增加了几个概念...

    6bc2acdd9858b7993cefcd4e45c31d43.png

    无论时代再如何变,人类的知识体系永远不会变,除非这个世界本身就不是真实的。

    很多人不喜欢数学,其实这是普遍现象,但是这个世界就是依靠数学运转着,除非你会魔法,那么你就不需要数学,从入行到现在,我依然不会觉得算法不重要,你只要打好业务代码就好了,难得就不做,这一点我是不行的,就像今天研究dns一样,找了许许多多的方案,最终决定尝试一种方案,一天下来没做啥,真的累了,数据更直观,用相应的公式和数据进行分析,这样就能做出你预期想要的答案,可能有种感觉,回到了中学(如果真能回到中学,我还真想回去,有时候感觉爱因斯坦的物质守恒定论可能并不真确,当然这只属于我个人观点,机器学习的时代的来临为我们能够节约多少时间,这是显而易见,这条路还很长,我们的路还需要慢慢摸索,加入真的有一天人工智能达到了钢铁侠中的jarvis一样,那我真的解放了,世界会怎么样,真的值得期待)。

    机器世代的来领早已经开始,下一个时代将是人工智能和数据的时代,也是信息安全保卫战的时代。

    信息在那个时代都不过时,我们是信息的使用者,也是信息的创造者,我们这个时代还没有将信息完全的分类和守护好,创造利益是我们当前要做的事,利益的趋向能使当前技术的成熟。

    话不多说开始学习线性回归(线性回归,猛地一听是不是想起了线性回归方程,对的就是你了解的线性回归方程,这里我们说的是一元线性回归方程,不难,你会一次方程就会一元线性回归方程,这里不过只是增加了几个概念):

    一元线性回归的基本形式就是

    。通过这个我们可以得到的一个结论是
    。这里我们可以用这个方程代替:
    ,这个我想大家就认识了,通常我们是依照下面的图求出方程:

    de5ad106fd370b6059aa758500c47625.png

    那时候们是手动求出这条直线,也就是

    这个方程。而在实际中我们可以利用简单的一元一次方程进行线性回归预测。

    这里我说几个概念:线性相关、协方差、相关系数、决定系数R平方,以及最小二乘法。

    线性相关:

    这里有几个特性:正向相关、负相关、不相关,这几个特性其实是依靠数据将这些相关性反映出来。

    正相关:随着x轴值的增大,y增大,这就是正相关,这里我们讨论的是一次方程,要说正相关其实和系数b相关[也就是斜率],斜率为正,那就是正相关,下图就是正相关的绘制曲线:

    52a85c0307250eae8db321aea716a1f8.png

    负相关与正相关相反的特性就是负相关,随着x值增大,y值减小,最主要的反应就是斜率为负,不难想象散点图的分布:

    1e23ea1a13958365e75b5a1d53d8ab30.png

    无相关(没有相关性):这个特性就是既不是正相关,又不是负相关,两种相关性都不符合,那么就是无相关(这种说法可能也不准确,理论上说一切事物都能够用数学解释,主要是你需要寻找一种模型解释现有的数据),下图我们不能用线性方程解释:

    ce27a6cca17a2d3084041956f40007fc.png

    协方差(协方差主要描述变量之间的相关性)

    两个数据点的协方差(:

    这里其实求得是单一的期望。

    协方差也有缺点:当我们利用协方差描述相关性时,如果两个点的数据变化幅度不想同时,所求的期望差值太大,我们就不能够用协方差进行相关性描述,为此我们需要排除这样的影响,这里我们就需要利用相关系数进行相关性描述。

    对于协方差的基本了解我推荐看这篇博客:

    如何通俗易懂地解释「协方差」与「相关系数」的概念? - GRAYLAMB的回答 - 知乎 https://www.zhihu.com/question/20852004/answer/134902061

    相关系数:

    214442e6cc79faf9a0c430e02a2f2473.png

    相关系数系数能够将协方差的影响剔除掉,这一点我们需要进一步学习:

    这里我依然推荐刚才那篇博客:

    如何通俗易懂地解释「协方差」与「相关系数」的概念? - GRAYLAMB的回答 - 知乎 https://www.zhihu.com/question/20852004/answer/134902061

    这里我们可以用一句话总结:相关系数是标准化后的协方差

    相关系数有三个极值:r=-1,r=+1,r=0,r的值有不同的含义。

    r=-1:负线性关

    r=+1:正相关

    r=0:非线性相关

    相关系数值的大小表示又有分类:0-0.3表示弱相关,0.3-0.6表示中等相关程度,0.6-1表示强相关。

    下面我们开始用代码来分析线性相关:

    在这之前我说一下进行线性分析在模型分析中会用到的知识点:特征工程

    特征工程是使用专业背景知识和技巧处理数据使得特征能在机器学习算法上发挥更好的作用的过程。现实生活中我们我们描述一个物体物体是怎样的,那么我就需要将这个事物相应的特点描述出来,而这些特点就是我们现在说的特征。而这些特征汇集成一个事物(这里的事物可能就是现实生活中的物品,也可能就是我们的评价等等),这里的事物就是标签,这些标签相对应的就有这些特征。比如下面的猫和驴

    2ab6d40061b1459fcdef0bbf95bf2f45.png

    3178db3cc513c80967423d981afa8f16.png

    如果我将这两张图截取:

    e07cdcb248fc5af5f00c1b540392f9d2.png

    0f07a0e46d7ad57f6da3e55e1b256df2.png

    7c823cd9a95ff66e4316e72a19caa523.png

    447e917e12b7adc18e84fc2905ef90aa.png

    e4369e83a8e5b8616594e2701021b9d8.png

    72fb5ae1ac7eb35c5f6919f8f2453359.png

    仅凭前三张截图,我们大体就能推论出这是一只猫,这是我们固有映像得出的答案,这个答案就是标签。这里面就有相关性的问题,上面已经讲解过相关性了。

    d5aa0687ea37484937a93703dc0b7160.png

    这里我们我没用用真实的数据,使用的随机生成的数据进行讲解,大部分产生的数据都是不相关的。

    4b07458ee642a15936b41683f1cd391f.png

    提取特征,这部分。我在我在pycharm 中执行是可以显示现实图片的,这里只是给出了对象。

    ff4e631ddcfb613a7b465df3859ab4e7.png

    相关系数,我这里显示的相关系数是0.005109,这里如果我再刷新一次就是负数,基本是不相关的,这里不能用线性相关来解释。

    44913289568abba26b80f986476fe34d.png

    这里的测试数据占用0.2,训练数据占用0.8,这个值得规定是train_testsplit中的train_size决定的

    755a622d0b4d702d1ad0227cd56a1d8b.png

    这一步只是为了展示训练数据和测试数据

    5a2f8ed25d66dc4c7c8f6d5a4a2a167f.png

    训练模型,这一步我们需要将数组转换类型,如果不转换,直接操作LinearRegression()这个函数,我们会得到下面的错误:

    98df8063f96e9b86115e005a8e237c74.png

    其实解析这个错误看他的报错就行,至于怎么解开这个谜题,上面一张图片我已经给出答案。

    6b214b840cf2eadfa990ae43ed057959.png

    这里我们绘制直线得出的截距和回归系数这个在绘图中是用不到的

    cb3bdd067bc8be8037dcaa9fca0b175d.png

    这里最后再画一次其实就是对照一下,求决定系数R平方,这里开方了,得出的结果,我想大家看懂了吧,这个数这么小,而且是负数,说明这条回归线不能描述这组数据的准确性。

    好了,这次讲解,主要是对简单的线性回归属性的回顾,操作的代码很少。

    展开全文
  • java实现一元二次函数求解

    千次阅读 2019-11-05 20:10:23
    这个程序的核心思想是通过二元一函数的求根公式,先求出Δ,然后判断是否为Δ是否为0,再将a,b,c带入求根公式当中进行计算,最后将大的数存入x1,小的数存入x2,得出最终结果。 具体代码如下: import java.math....

    在进行java学习的时候,完成的一道习题。
    题目要求:输入a,b,c三个数,代入到ax2+bx+c=0中进行运算,输出x1和x2,其中x1为较大的解,x2为较小的解,结果保留两位小数。
    在保留两位小数时,我用的是 java.math类中的BigDecimal方法:

    import java.math.BigDecimal;
    

    其中使用了BigDecimal.ROUND_HALF_DOWN将小数点后两位之后的数字直接抹去。

    BigDecimal z = new BigDecimal(x1);
    x1 = z.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
    BigDecimal d = new BigDecimal(x2);
    x2 = d.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
    

    这个程序的核心思想是通过二元一次函数的求根公式,先求出Δ,然后判断是否为Δ是否为0,再将a,b,c带入求根公式当中进行计算,最后将大的数存入x1,小的数存入x2,得出最终结果。
    具体代码如下:

    import java.math.BigDecimal;
    import java.util.Scanner;
    
    public class demo1 {
    	public static void main(String[] args) {
    		 Scanner cin = new Scanner(System.in);
    		 
    		 System.out.println("Please enter the A:");
    		 double a = cin.nextDouble();
    		 
    		 System.out.println("Please enter the B:");
    		 double b = cin.nextDouble();
    		 
    		 System.out.println("Please enter the C:");
    		 double c = cin.nextDouble();
    		 
    		 double dert = b*b-(4*a*c);
    		 double x1 = 0.0;
    		 double x2 = 0.0;
    		 boolean s = false;
    		 
    		 if(dert>=0){
    			 if(dert != 0){
    				 x1 = (-b+Math.sqrt(dert))/(a*2);
    				 x2 = (-b-Math.sqrt(dert))/(a*2);
    			 }
    
    			 else{
    				 x1 = x2 = -(b/(a*2));
    			 }
    			
    			 s = true;
    			 x1 = x1 *100 / 100;
    			 x2 = x2 *100 / 100;
    			 BigDecimal z = new BigDecimal(x1);
    			 x1 = z.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
    			 BigDecimal d = new BigDecimal(x2);
    			 x2 = d.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
    	     }
    		 if(!s){
    		 System.out.println("Don't have X");
    		 }
    		 else{
    			 if(x1<x2){
    				 double t = x1;
    				 x1 = x2;
    				 x2 = t;
    			 } 
    	     System.out.println(x1+" "+x2);
    		 }
    		cin.close();
    	}
    }
    
    

    下面展示一段测试结果:
    在这里插入图片描述
    而当Δ小于零时:
    在这里插入图片描述
    希望以上代码对于需要的人有所帮助,其中有很大的不足请在评论区批评指正。

    展开全文
  • tensorflow一元二次函数拟合

    千次阅读 2019-01-01 09:59:45
    先看下要做的内容,创建一元二次函数y=x平方-0.5,其中为了更符合散点图模拟需要,在方程加噪点,以标准方差0.05行驶,如图所示 折线图 散点图 下面我们要做的,是要计算机自动拟合出该散点图的函数,画出图样,...
  • 器学习一次回归和二次回归 reshape(行,列)可以根据指定的数值将数据转换为特定的行数和列数###reshape(-1,1)之后,数据集变成了一列 #采用线性回归方程预测 lr=LinearRegression() lr.fit (X,y) from sklearn....
  • 变量间的关系分析 变量间的关系有两类,一类是变量间存在完全...对应的分析方法:回归分析。 线性相关分析 如何去衡量两个变量或者多个变量间的相关程度呢? 需要引入线性相关系数ρ来衡量两变量的相关关系和密切程度
  • 1、一元线性和多元类似 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression #元数据生成 x_data = np.random.randn(35) y_data = np.random.randn(35) plt....
  • 导读 系列26介绍了处理两个变量间存在线性依存关系的统计分析方法,即线性回归。今天介绍两个变量间存在线性相关关系的统计分析方法及其SAS实现。三、双变量数据的假设检验图9-81双变量数据假设检验方法选择 单变量...
  • 解决回归问题 思想简单,实现容易 许多强大的非线性模型的基础 结果具有很好的可解释性 蕴含机器学习中的很多重要思想 回归问题:连续值 如果样本 特征 只有一个 称为简单线性回归 y=ax + b 通过 训练 ...
  • import numpy as np import matplotlib.pyplot as plt ... 线性回归模块 """ y_hat = a * x + b return y_hat def differentialFunction(x, y, y_hat, a, b, alpha): """ 微分模块 """ n = len(y) su
  • 本次推论会从最小二乘法去讲解一元线性回归 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2cJQ20aZ-1571074937442)(691F2113FCA64121B39A8B3BC30F5633)] 代价函数(损失函数): [外链...
  • 数据回归方法(一)——一元回归

    千次阅读 2020-05-30 11:37:18
    1.需求引入 有联系的事物之间存在着特定的关系。将事物抽象为变量,即变量之间存在着特定的关系。回归(regression)方法就是建立变量之间相互关系模型的数学方法。具体点说,在回归中,假定因...2.1一元线性回归
  • 为了给孩子一个直观的认识,做的描绘一元二次方程的曲线的程序,能够动态调整参数a,b,c的同时,演示曲线形状的变化,帮助孩子理解函数曲线。用C#做的,有源程序。
  • 左上图:残差与拟合图,理论上散点应该散乱的分布在横线两侧,但是此图明显有一个曲线关系,说明我们的模型需要加入一个二次项(这一点从散点图亦可以看出来)。 右上图:正太Q-Q图,用于检验因变量的正太分布性,若...
  • 一元线性回归模型其实还有一个进阶版本——一元多次线性回归模型,比较常见的是一元二次线性回归模型,其形式可以表示为如下所示的公式:y=ax2+bx+c 之所以还需要研究一元多次线性回归模型,是因为有时真正契合...
  • 一元多项式回归

    千次阅读 2019-06-07 13:31:00
    二次多项式拟合增广矩阵 5.0 15.0 55.0 | 15 15.0 55.0 225.0 | 56 55.0 225.0 979.0 | 231 解为 -0.3 ,1.1 ,0.0 x矩阵为非正定矩阵,秩为2,拟合为一次项 逆矩阵法 依旧计算量相当大,浮点运算误差...
  • 用R来求解一元二次方程

    万次阅读 2015-12-23 15:41:27
    在R语言中,可以用uniroot()函数来...对于一元二次方程,由于二次方程一般有2个根,所以需要调用uniroot()两次。  问题:一元二次方程ax^2+bx+c=0,设a=1,b=5,c=6,求x?  代码如下:  //fang.R ##求一元二次方程
  • 第4、8行代码定义biases,它是维矩阵,行数一直为1,列数为连接下一层神经元的个数,即它的形状为 1*连接下一层神经元的个数 ; 第5、9行代码表示 wx+b 的计算结果; 第6行代码表示在第1个连接的输出结果,经过...
  • 一元二次方程

    2015-01-08 14:17:47
    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 {  class Program  {  static void Main(string[] args) ... 
  • 一元线性回归 1、女士的身高-体重例子。--借助excel数据分析功能 2、气温-冰红茶销售量例子。--直接计算 多元线性回归 3、薪资-性别-年龄-教育程度例子。--借助excel数据分析功能 4、店铺营业额-店铺面积-离车站...
  • 本节主要介绍了一元线性回归、多元线性、多项式回归。 重点介绍了summary里面每个参数的意义; 创建训练集、测试集; 多项式poly()函数以及I()函数的使用。 ###########一元线性回归############# > library...
  • 使用lm(),根据已有数据求一元线性回归方程。具体代码如下: x <- c(1,2,3) y <- c(3,5,7) relation <- lm(y~x) # Apply the lm() function. print(relation) 运行代码,得到a = 2,b = 1。结果如下图: ...
  • (一)基础铺垫 ...一元二次方程: 一元三次方程: 一元 n 次方程: (二)案例 1.建模逻辑 一元非线性回归方程转为多元一次回归方程 2.实操 关键点提示:把一元非线性方程转化为多元线性方程的方法...
  • python一元二次方程系数求解

    千次阅读 2020-11-30 15:19:22
    python一元二次方程系数求解 提示:以下是本篇文章正文内容,下面案例可供参考 代码如下 代码如下(示例): #一元二次方程系数求解 import math #引入数学函数 a,b,c = eval(input()) #定义变量 d = b ** 2 - 4 *...
  • C++实现最小二乘法一元回归和多项式拟合

    千次下载 热门讨论 2014-03-23 20:50:32
    在进行曲线拟合时用的最多的是最小二乘法,其中以一元函数(线性)和多元函数(多项式)居多,下面这个类专门用于进行多项式拟合,可以根据用户输入的阶次进行多项式拟合,算法来自于网上,和GSL的拟合算法对比过,...
  • 机器学习 一元非线性回归模型

    万次阅读 2018-08-15 00:36:38
    实际问题中,变量之间常常不是直线。...常见的可转化一元线性回归的模型 倒幂函数曲线y=a+b⋅1xy=a+b⋅1xy=a+b \cdot \dfrac{1}{x}型 令x′=1xx′=1x{x}'=\dfrac{1}{x}, 则得y=a+b⋅x′y=a+b⋅x′y=a+b \cdot ...
  • 如y=wx + 1 或 y = wx^2 + 2X + 1,都只有一个参数,引起其残差函数就是一个只包含w参数的一元二次函数,一元二次方程的极小值是可以通过解析法获得的。 当x = -b/2a时,残差函数有最小值。x = -b/2a就是拟合参数的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,750
精华内容 2,300
关键字:

一元二次回归