精华内容
下载资源
问答
  • 线性回归为什么叫线性回归

    千次阅读 2021-12-03 18:16:42
    名字由来:由达尔文的表弟高尔顿提出。 线性:一条直线或线段。(Y= 0. 8567+0.... ...因此将使用的方法命名线性回归。(虽然之后的x与y变量之间并不总是具有回归关系,但是为了纪念高尔顿这位伟大

    名字由来:由达尔文的表弟高尔顿提出。

    线性:一条直线或线段。(Y= 0. 8567+0. 516*X是线性的)

    高尔顿使用最小二乘法研究父母与孩子身高时发现,孩子有回归至平均身高的倾向。高尔顿当时拟合了父母平均身高x和子女平均身高y的经验方程:Y= 0. 8567+0. 516*X (单位为米)。可以看到,父代身高每增加一个单位,其成年子女的平均身高只增加0.516个单位,“回归”到正常人平均身高(由下图形化展示可以看出,父母高孩子相对矮,父母矮孩子相对高),因此将找到Y= 0. 8567+0. 516*X 函数所使用的方法命名为线性回归。

    线性回归是方法

    题目:已知50对数据(x0:父母平均身高,y0孩子身高),使用线性回归的方法求一个线性函数反应父母平均身高与与孩子身高的映射关系。(说白了就是找一条直线函数y = kx+b,能够反映父母身高与孩子身高数据的规律)

    x0 ([1.5 , 1.52, 1.54, 1.56, 1.58, 1.6 , 1.62, 1.64, 1.66, 1.68, 1.7 ,

           1.72, 1.74, 1.77, 1.79, 1.81, 1.83, 1.85, 1.87, 1.89, 1.91, 1.93,

           1.95, 1.97, 1.99, 2.01, 2.03, 2.05, 2.07, 2.09, 2.11, 2.13, 2.15,

           2.17, 2.19, 2.21, 2.23, 2.26, 2.28, 2.3 , 2.32, 2.34, 2.36, 2.38,

           2.4 , 2.42, 2.44, 2.46, 2.48, 2.5 ])

    y0 ([1.67, 1.65, 1.67, 1.71, 1.71, 1.66, 1.71, 1.7 , 1.71, 1.73, 1.74,

           1.77, 1.77, 1.77, 1.79, 1.8 , 1.83, 1.81, 1.83, 1.81, 1.79, 1.87,

           1.88, 1.86, 1.93, 1.86, 1.91, 1.91, 1.96, 1.96, 1.95, 1.96, 1.95,

           1.94, 1.98, 2.  , 2.03, 2.05, 2.03, 2.04, 2.03, 2.04, 2.04, 2.12,

           2.08, 2.1 , 2.09, 2.14, 2.1 , 2.14])

     图形化展示

    线性回归方法:使用最小二乘法求这个函数 = 求最合适的参数值,这里我试图使用一次函数拟合数据,设函数为y=wx+b,w、b就是我需要求的参数,结果如图所示:

     如果不使用使用最小二乘法,函数参数是随机生成的,不能反映数据的关系

     python代码

    import numpy as np
    import scipy as sp
    import matplotlib.pyplot as plt
    from scipy.optimize import leastsq
    
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    
    # 数据x0:父母平均身高 y0:孩子身高
    x0 = np.array([1.5, 1.52, 1.54, 1.56, 1.58, 1.6, 1.62, 1.64, 1.66, 1.68, 1.7,
                   1.72, 1.74, 1.77, 1.79, 1.81, 1.83, 1.85, 1.87, 1.89, 1.91, 1.93,
                   1.95, 1.97, 1.99, 2.01, 2.03, 2.05, 2.07, 2.09, 2.11, 2.13, 2.15,
                   2.17, 2.19, 2.21, 2.23, 2.26, 2.28, 2.3, 2.32, 2.34, 2.36, 2.38,
                   2.4, 2.42, 2.44, 2.46, 2.48, 2.5]
                  )
    y0 = np.array([1.67, 1.65, 1.67, 1.71, 1.71, 1.66, 1.71, 1.7, 1.71, 1.73, 1.74,
                   1.77, 1.77, 1.77, 1.79, 1.8, 1.83, 1.81, 1.83, 1.81, 1.79, 1.87,
                   1.88, 1.86, 1.93, 1.86, 1.91, 1.91, 1.96, 1.96, 1.95, 1.96, 1.95,
                   1.94, 1.98, 2., 2.03, 2.05, 2.03, 2.04, 2.03, 2.04, 2.04, 2.12,
                   2.08, 2.1, 2.09, 2.14, 2.1, 2.14]
                  )
    
    np.random.seed(0)  # 随机数种子
    n = int(input("输入拟合函数次数(整数):"))
    w_b = np.around(np.random.randn(n), 2)  # 随机生成多项式参数,w_b拟合函数参数array([1.76405235, 0.40015721])
    
    # **计算误差
    def residuals_func(w_b, x, y):
        # f = np.poly1d(p)  polyid是多项式函数,若n=1,w_b=1.76,f(x)=p=1.76。若n=2,w_b=[1.76 0.4],f(x)=1.76x+0.4。
        # 若n=3,w_b=[1.76 0.4 0.98],f(x)=1.76x^2+0.4x+0.98等等......
        # np.poly1d(w_b)(x) = f(x)
        ret = np.poly1d(w_b)(x) - y
        return ret
    
    plsq = leastsq(residuals_func, w_b, args=(x0, y0))  # 最小二乘法黑箱计算,参数为(误差函数,误差函数的参数,样本点) 目的:调整w_b的数据,拟合数据点
    
    # 绘制
    plt.xlabel('父母平均身高')
    plt.ylabel('孩子身高')
    plt.plot(x0, np.poly1d(plsq[0])(x0), c='b', label='拟合的线性回归函数')
    # plt.plot(x0, np.poly1d(w_b)(x0), c='b', label='拟合的线性回归函数')
    plt.plot(x0, y0, 'bo', label='数据点')
    plt.legend(loc='best')  # 如果画图中有加lable,记得加上plt.legend(loc='best')
    plt.show()
    

    总结:线性回归是一种得到数据之间关系的方法。这种关系由一个确定的函数表示,如父母平均身高与孩子身高采用线性回归方法后得到y=1.76x+0.4

    附录:

    函数:在数学中为两不为空集的集合间的一种对应关系。例子:实数x对应x2  = 函数 = (f(x) = x2),函数的概念并不局限于数之间的映射关系。例子:Captital(U.K.) = London

    维基百科

    线性回归(英语:linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。

    回归分析(英语:Regression Analysis)是一种统计学上分析数据的方法,目的在于了解两个或多个变量间是否相关、相关方向与强度,并建立数学模型以便观察特定变量来预测研究者感兴趣的变量。

    展开全文
  • 回归分析的基本概念是用一群变量预测另一个变量的方法。通俗点来讲,就是根据几件事情的相关程度来预测另一件事情发生的概率。回归分析的目的是找到一个联系输入变量和输出变量的最优模型。回归方法有许多种,可通过...

    回归分析的基本概念是用一群变量预测另一个变量的方法。通俗点来讲,就是根据几件事情的相关程度来预测另一件事情发生的概率。回归分析的目的是找到一个联系输入变量和输出变量的最优模型。

    回归方法有许多种,可通过 3 种方法进行分类:自变量的个数、因变量的类型和回归线的形状。

    1)依据相关关系中自变量的个数不同进行分类,回归方法可分为一元回归分析法和多元回归分析法。在一元回归分析法中,自变量只有一个,而在多元回归分析法中,自变量有两个以上。

    2)按照因变量的类型,回归方法可分为线性回归分析法和非线性回归分析法。

    3)按照回归线的形状分类时,如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,则这种回归分析称为一元线性回归分析;如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是非线性关系,则称为多元非线性回归分析。

    1. 线性回归

    线性回归是世界上最知名的建模方法之一。在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计的。这些模型被叫作线性模型。在线性模型中,因变量是连续型的,自变量可以是连续型或离散型的,回归线是线性的。

    1)一元线性回归

    回归分析的目的是找到一个联系输入变量和输出变量的最优模型。更确切地讲,回归分析是确定变量 Y 与一个或多个变量 X 之间的相互关系的过程。

    Y 通常叫作响应输出或因变量,X 叫作输入、回归量、解释变量或自变量。线性回归最适合用直线(回归线)去建立因变量 Y 和一个或多个自变量 X 之间的关系,如图 1 所示。可以用以下公式来表示。

    Y = a+b x X+e

    其中,a 为截距,b 为回归线的斜率,e 是误差项。

    要找到回归线,就是要确定回归系数 a 和 b。假定变量 y 的方差是一个常量,可以用最小二乘法来计算这些系数,使实际数据点和估计回归直线之间的误差最小,只有把误差做到最小时得出的参数,才是我们最需要的参数。这些残差平方和常常被称为回归直线的误差平方和,用 SSE 来表示,如下。

    bcb1944e9508b412c0b96cc5cfe1b981.png

    9293d3af506dd158796b8fdb3897fd34.gif

    图 1  一元线性回归

    如图 2 所示,回归直线的误差平方和就是所有样本中的

    b45a7fb1297ad3fb7bc5216832ba81ef.png  值与回归线上的点中的 

    b45a7fb1297ad3fb7bc5216832ba81ef.png 的差的平方的总和。

    d9c7b6f9b364584078d53002109a7cc4.gif

    图 2  回归直线的误差平方和示意

    2)多元线性回归

    多元线性回归是单元线性回归的扩展,涉及多个预测变量。响应变量 Y 的建模为几个预测变量的线性函数,可通过一个属性的线性组合来进行预测,其基本的形式如下。

    e21eba6e3183af4ea213162f1768373c.png

    线性回归模型的解释性很强,模型的权值向量十分直观地表达了样本中每一个属性在预测中的重要度。例如,要预测今天是否会下雨,并且已经基于历史数据学习到了模型中的权重向量和截距么则可以综合考虑各个属性来判断今天是否会下雨。

    66ad394c048f94f394919f9d4e50806a.png

    其中,X1 表示风力,X2 表示湿度,X3 表示空气质量。

    在训练模型时,要让预测值尽量逼近真实值,做到误差最小,而均方误差就是表达这种误差的一种方法,所以求解多元线性回归模型,就求解使均方误差最小化时对应的参数。

    3)线性回归的优缺点

    线性回归是回归任务最常用的算法之一。它的最简单的形式是用一个连续的超平面来拟合数据集,例如,当仅有两个变量时就用一条直线进行拟合。如果数据集内的变量存在线性关系,拟合程度就相当高。

    线性回归的理解和解释都非常直观,还能通过正则化来避免过拟合。此外,线性回归模型很容易通过随机梯度下降法来更新数据模型。但是,线性回归在处理非线性关系时非常糟糕,在识别复杂的模式上也不够灵活,而添加正确的相互作用项或多项式又极为棘手且耗时。

    2. Spark MLlib 的 SGD 线性回归算法

    Spark MLlib 的 SGD 线性回归算法是由 LinearRegressionWithSGD 类实现的,该类是基于无正规化的随机梯度下降算法,使用由(标签,特征序列)组成的 RDD 来训练线性回归模型的。

    每一对(标签,特征序列)描述一组特征/以及这些特征所对应的标签。算法按照指定的步长进行迭代,迭代的次数由参数说明,每次迭代时,用来计算下降梯度的样本数也是由参数给出的。

    Spark MLlib 中的 SGD 线性回归算法的实现类 LinerRegressionWithSGD 具有以下变量。

    class LinerRegressionWithRGD private (

    private var stepSize: Double,

    private var numIterations: Int,

    private var miniBatchFraction: Double

    )

    1)Spark MLlib 的 LinerRegressionWithRGD 构造函数

    使用默认值构造 SparkMLlib 的 LinerRegressionWithRGD 实例的接口如下。

    {stepSize:1.0,numIterations:100,miniBatchFraction:1.0}。

    参数的含义解释如下。

    stepSize 表示每次迭代的步长。

    numIterations 表示方法单次运行需要迭代的次数。

    miniBatchFraction 表示计算下降梯度时所使用样本数的比例。

    2)Spark MLlib 的 LinerRegressionWithRGD 训练函数

    Spark MLlib 的 LinerRegressionWithRGD 训练函数 LinerRegressionWithRGD.train 方法有很多重载方法,这里展示其中参数最全的一个来进行说明。LinerRegressionWithRGD.train 方法预览如下。

    def train(

    input:RDD[LabeledPoint],

    numIterations:Int,

    stepSize:Double,

    miniBatchFraction:Double,

    initialWeights:Vector):LinearRegressionModel

    参数 numIterations、stepSize 和 miniBatchFraction 的含义与构造函数相同,另外两个参数的含义如下。

    input 表示训练数据的 RDD,每一个元素由一个特征向量和与其对应的标签组成。

    initialWeights 表示一组初始权重,每个对应一个特征。

    3. Spark MLlib 的 SGD 线性回归算法实例

    该实例使用数据集进行模型训练,可通过建立一个简单的线性模型来预测标签的值,并且可通过计算均方差来评估预测值与实际值的吻合度。

    本实例使用 LinearRegressionWithSGD 算法 建立预测模型的步骤如下。

    ①装载数据。数据以文本文件的方式进行存放。

    ②建立预测模型。设置迭代次数为 100,其他参数使用默认值,进行模型训练形成数据模型。

    ③打印预测模型的系数。

    ④使用训练样本评估模型,并计算训练错误值。

    该实例使用的数据存放在 lrws_data.txt 文档中,提供了 67 个数据点,每个数据点为 1 行,每行由 1 个标签值和 8 个特征值组成,每行的数据格式如下。

    标签值,特征 1 特征 2 特征 3 特征 4 特征 5 特征 6 特征 7 特征 8

    其中,第一个值为标签值,用“,”与特征值分开,特征值之间用空格分隔。前 5 行的数据如下。

    -0.4307829,-1.63735562648104 -2.00621178480549 -1.86242597251066 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.8644665073373.06

    -0.1625189,-1.98898046126935 -0.722008756122123 -0.787896192088153 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306

    -0.1625189, -1.578 818 8754 8545, -2.1887840293994 1.36116336875686 -1.02470580167082 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.155348103855541

    -0.1625189,-2.16691708463163 -0.807993896938655 -0.787896192088153 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306

    0.3715636,-0.507874475300631 -0.458834049396776 -0.250631301876899 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306

    在本实例中,将数据的每一列视为一个特征指标,使用数据集建立预测模型。实现的代码如下。

    import java.text.SimpleDateFormat

    import java.util.Date

    import org.apache.log4j.{Level,Logger}

    import org.apache.spark.mllib.linalg.Vectors

    import org.apache.spark.mllib.regression.{LinearRegressionWithSGD, LabeledPoint}

    import org.apache.spark.{SparkContext, SparkConf}

    /**

    * 计算回归曲线的MSE

    * 对多组数据进行模型训练,然后再利用模型来预测具体的值 * 公式:f(x) =a1*x1+a2*x2+a3*x3+....

    */

    object LinearRegression2 {

    //屏蔽不必要的曰志

    Logger.getLogger("org.apache.spark").setLevel(Level.WARN)

    Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF)

    //程序入口

    val conf = new SparkConf().setAppName(LinearRegression2).setMaster("local[1]")

    val sc = new SparkContext(conf)

    def main(args:Array[String]) {

    //获取数据集路径

    val data = sc.textFile (("/home/hadoop/exercise/lpsa2.data",1)

    //处理数据集

    val parsedData = data.map{ line =>

    val parts = line.split (",")

    LabeledPoint (parts(0).toDouble,Vectors.dense(parts(1).split('').map(_.toDouble)))

    }

    //建立模型

    val numIterations = 100

    val model = LinearRegressionWithSGD.train(parsedData, numIterations,0.1)

    //获取真实值与预测值

    val valuesAndPreds = parsedData.map { point =>

    //对系数进行预测

    val prediction = model.predict(point.features)

    (point, label, prediction) //(实际值,预测值)

    }

    //打印权重

    var weights = model.weights

    printIn("model.weights" + weights)

    //存储到文档

    val isString = new SimpleDateFormat("yyyyMMddHHmmssSSS").format{new Date ())

    val path = "("/home/hadoop/exercise/" + isString + "/results")"

    ValuesAndPreds.saveAsTextFile(path)

    //计算均方误差

    val MSE = valuesAndPreds.map {case (v,p) => math.pow ((v - p),2)}.reduce(_ + _) / valuesAndPreds.count

    printIn ("训练的数据集的均方误差是" + MSE)

    sc. stop ()

    }

    }

    运行程序会打印回归公式的系数和训练的数据集的均方误差值。将每一个数据点的预测值,存放在结果文件中,数据项的格式为(实际值,预测值)。

    4. 逻辑回归

    逻辑回归是用来找到事件成功或事件失败的概率的。首先要明确一点,只有当目标变量是分类变量时,才会考虑使用逻辑回归方法,并且主要用于两种分类问题。

    1)逻辑回归举例

    医生希望通过肿瘤的大小 X1、长度X2、种类 X3 等特征来判断病人的肿瘤是恶性肿瘤还是良性肿瘤,这时目标变量 y 就是分类变量(0 表示良性肿瘤,1 表示恶性肿瘤)。线性回归是通过一些 x 与 y 之间的线性关系来进行预测的,但是此时由于 y 是分类变量,它的取值只能是 0、1,或者 0、1、2 等,而不能是负无穷到正无穷,所以引入了一个 sigmoid 函数,即

    9f57ecd070305d3a2150d7d2b7effb44.png ,此时 x 的输入可以是负无穷到正无穷,输出 y 总是[0,1],并且当 x=0 时,y 的值为 0.5,如图 3(a) 所示。

    x=0 时,y=0.5,这是决策边界。当要确定肿瘤是良性还是恶性时,其实就是要找出能够分开这两类样本的边界,也就是决策边界,如图 3(b) 所示。

    e0f925b1039bd664161b3f6f1271b4cd.gif

    图 3  sigmoid 函数曲线图和决策边界示意

    2)逻辑回归函数

    在分类情形下,经过学习之后的逻辑回归分类器其实就是一组权值

    42e31878b3f47737d2c1aa7d770ad7ae.png。当测试样本集中的测试数据来到时,将这一组权值按照与测试数据线性加和的方式,求出一个 z 值,即 

    a1aed9e9ce7ecf302d11664564ac4b43.png,其中,

    aa42711640213ae3258ec0f580e72487.png 是样本数据的各个特征,维度为 m。之后按照 sigmoid 函数的形式求出

    cdd8f4b6dc4c977a334d22f76b69cf0a.png,即

    26230dedcafc55451204510d22a3aac8.png逻辑回归函数的意义如图 4 所示。

    d8a5a98b2cd1948283d04297ccce2dbb.gif

    图 4  逻辑回归函数的意义示意

    由于 sigmoid 函数的定义域是 (-inf,inf),而值域为 (0,1),因此最基本的逻辑回归分类器适合对二分目标进行分类。

    方法是,利用 sigmoid 函数的特殊数学性质,将结果映射到 (0,1) 中,设定一个概率阈值(不一定非是 0.5),大于这个阈值则分类为 1,小于则分类为 0。

    求解逻辑回归模型参数的常用方法之一是,采用最大似然估计的对数形式构建函数,再利用梯度下降函数来进行求解。

    3)逻辑回归的优缺点

    逻辑回归特别适合用于分类场景,尤其是因变量是二分类的场景,如垃圾邮件判断,是否患某种疾病,广告是否点击等。逻辑回归的优点是,模型比线性回归更简单,好理解,并且实现起来比较方便,特别是大规模线性分类时。

    逻辑回归的缺点是需要大样本量,因为最大似然估计在低样本量的情况下不如最小二乘法有效。逻辑回归对模型中自变量的多重共线性较为敏感,需要对自变量进行相关性分析,剔除线性相关的变量,以防止过拟合和欠拟合。

    展开全文
  • excel回归分析结果解读

    千次阅读 2021-01-17 14:44:26
    回归”一词的由来我们不必在“回归”一词上费太多脑筋。英国著名统计学家弗朗西斯·高尔顿(Francis Galton,1822—1911)是最先应用统计方法研究两个变量之间关系问题的人。“回归”一词就是由他引入的。他对父母...

    前言

    1.“回归”一词的由来

    我们不必在“回归”一词上费太多脑筋。英国著名统计学家弗朗西斯·高尔顿(Francis Galton,1822—1911)是最先应用统计方法研究两个变量之间关系问题的人。“回归”一词就是由他引入的。他对父母身高与儿女身高之间的关系很感兴趣,并致力于此方面的研究。高尔顿发现,虽然有一个趋势:父母高,儿女也高;父母矮,儿女也矮,但从平均意义上说,给定父母的身高,儿女的身高却趋同于或者说回归于总人口的平均身高。换句话说,尽管父母双亲都异常高或异常矮,儿女身高并非也普遍地异常高或异常矮,而是具有回归于人口总平均高的趋势。更直观地解释,父辈高的群体,儿辈的平均身高低于父辈的身高;父辈矮的群体,儿辈的平均身高高于其父辈的身高。用高尔顿的话说,儿辈身高的“回归”到中等身高。这就是回归一词的最初由来。

    回归一词的现代解释是非常简洁的:回归时研究因变量对自变量的依赖关系的一种统计分析方法,目的是通过自变量的给定值来估计或预测因变量的均值。它可用于预测、时间序列建模以及发现各种变量之间的因果关系。

    使用回归分析的益处良多,具体如下:

    1) 指示自变量和因变量之间的显著关系;

    2) 指示多个自变量对一个因变量的影响强度。

    回归分析还可以用于比较那些通过不同计量测得的变量之间的相互影响,如价格变动与促销活动数量之间的联系。这些益处有利于市场研究人员,数据分析人员以及数据科学家排除和衡量出一组最佳的变量,用以构建预测模型。

    2.为什么使用回归分析

    1)更好地了解

    对某一现象建模,以更好地了解该现象并有可能基于对该现象的了解来影响政策的制定以及决定采取何种相应措施。基本目标是测量一个或多个变量的变化对另一变量变化的影响程度。示例:了解某些特定濒危鸟类的主要栖息地特征(例如:降水、食物源、植被、天敌),以协助通过立法来保护该物种。

    2)建模预测

    对某种现象建模以预测其他地点或其他时间的数值。基本目标是构建一个持续、准确的预测模型。示例:如果已知人口增长情况和典型的天气状况,那么明年的用电量将会是多少?

    3)探索检验假设

    还可以使用回归分析来深入探索某些假设情况。假设您正在对住宅区的犯罪活动进行建模,以更好地了解犯罪活动并希望实施可能阻止犯罪活动的策略。开始分析时,您很可能有很多问题或想要检验的假设情况。

    回归分析的作用主要有以下几点:

    1)挑选与因变量相关的自变量;

    2)描述因变量与自变量之间的关系强度;

    3)生成模型,通过自变量来预测因变量;

    4)根据模型,通过因变量,来控制自变量。

    回归分析方法

    现在有各种各样的回归技术可用于预测,这些技术主要包含三个度量:自变量的个数、因变量的类型以及回归线的形状。

    1.回归分析方法

    1)线性回归

    线性回归它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的少数几种技术之一。在该技术中,因变量是连续的,自变量(单个或多个)可以是连续的也可以是离散的,回归线的性质是线性的。线性回归使用最佳的拟合直线(也就是回归线)建立因变量 (Y) 和一个或多个自变量 (X) 之间的联系。用一个等式来表示它,即:

    Y=a+b*X + e

    其中a 表示截距,b 表示直线的倾斜率,e 是误差项。这个等式可以根据给定的单个或多个预测变量来预测目标变量的值。

    一元线性回归和多元线性回归的区别在于,多元线性回归有一个以上的自变量,而一元线性回归通常只有一个自变量。

    线性回归要点:

    1)自变量与因变量之间必须有线性关系;

    2)多元回归存在多重共线性,自相关性和异方差性;

    3)线性回归对异常值非常敏感。它会严重影响回归线,最终影响预测值;

    4)多重共线性会增加系数估计值的方差,使得估计值对于模型的轻微变化异常敏感,结果就是系数估计值不稳定;

    5)在存在多个自变量的情况下,我们可以使用向前选择法,向后剔除法和逐步筛选法来选择最重要的自变量。

    2)Logistic回归

    Logistic回归可用于发现 “事件=成功”和“事件=失败”的概率。当因变量的类型属于二元(1 / 0、真/假、是/否)变量时,我们就应该使用逻辑回归。这里,Y 的取值范围是从 0 到 1,它可以用下面的等式表示:

    odds= p/ (1-p) = 某事件发生的概率/ 某事件不发生的概率

    ln(odds) = ln(p/(1-p))

    logit(p) = ln(p/(1-p)) =b0+b1X1+b2X2+b3X3....+bkXk

    如上,p表述具有某个特征的概率。在这里我们使用的是的二项分布(因变量),我们需要选择一个最适用于这种分布的连结函数。它就是Logit 函数。在上述等式中,通过观测样本的极大似然估计值来选择参数,而不是最小化平方和误差(如在普通回归使用的)。

    Logistic要点:

    1)Logistic回归广泛用于分类问题;

    2)Logistic回归不要求自变量和因变量存在线性关系。它可以处理多种类型的关系,因为它对预测的相对风险指数使用了一个非线性的 log 转换;

    3)为了避免过拟合和欠拟合,我们应该包括所有重要的变量。有一个很好的方法来确保这种情况,就是使用逐步筛选方法来估计Logistic回归;

    4)Logistic回归需要较大的样本量,因为在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差;

    5)自变量之间应该互不相关,即不存在多重共线性。然而,在分析和建模中,我们可以选择包含分类变量相互作用的影响;

    6)如果因变量的值是定序变量,则称它为序Logistic回归;

    7)如果因变量是多类的话,则称它为多元Logistic回归。

    3)Cox回归

    Cox回归的因变量就有些特殊,它不经考虑结果而且考虑结果出现时间的回归模型。它用一个或多个自变量预测一个事件(死亡、失败或旧病复发)发生的时间。Cox回归的主要作用发现风险因素并用于探讨风险因素的强弱。但它的因变量必须同时有2个,一个代表状态,必须是分类变量,一个代表时间,应该是连续变量。只有同时具有这两个变量,才能用Cox回归分析。Cox回归主要用于生存资料的分析,生存资料至少有两个结局变量,一是死亡状态,是活着还是死亡;二是死亡时间,如果死亡,什么时间死亡?如果活着,从开始观察到结束时有多久了?所以有了这两个变量,就可以考虑用Cox回归分析。

    4)poisson回归

    通常,如果能用Logistic回归,通常也可以用poission回归,poisson回归的因变量是个数,也就是观察一段时间后,发病了多少人或是死亡了多少人等等。其实跟Logistic回归差不多,因为logistic回归的结局是是否发病,是否死亡,也需要用到发病例数、死亡例数。

    5)Probit回归

    Probit回归意思是“概率回归”。用于因变量为分类变量数据的统计分析,与Logistic回归近似。也存在因变量为二分、多分与有序的情况。目前最常用的为二分。医学研究中常见的半数致死剂量、半数有效浓度等剂量反应关系的统计指标,现在标准做法就是调用Pribit过程进行统计分析。

    6)负二项回归

    所谓负二项指的是一种分布,其实跟poission回归、logistic回归有点类似,poission回归用于服从poission分布的资料,logistic回归用于服从二项分布的资料,负二项回归用于服从负二项分布的资料。如果简单点理解,二项分布可以认为就是二分类数据,poission分布就可以认为是计数资料,也就是个数,而不是像身高等可能有小数点,个数是不可能有小数点的。负二项分布,也是个数,只不过比poission分布更苛刻,如果结局是个数,而且结局可能具有聚集性,那可能就是负二项分布。简单举例,如果调查流感的影响因素,结局当然是流感的例数,如果调查的人有的在同一个家庭里,由于流感具有传染性,那么同一个家里如果一个人得流感,那其他人可能也被传染,因此也得了流感,那这就是具有聚集性,这样的数据尽管结果是个数,但由于具有聚集性,因此用poission回归不一定合适,就可以考虑用负二项回归。

    7)weibull回归

    中文有时音译为威布尔回归。关于生存资料的分析常用的是cox回归,这种回归几乎统治了整个生存分析。但其实夹缝中还有几个方法在顽强生存着,而且其实很有生命力。weibull回归就是其中之一。cox回归受欢迎的原因是它简单,用的时候不用考虑条件(除了等比例条件之外),大多数生存数据都可以用。而weibull回归则有条件限制,用的时候数据必须符合weibull分布。如果数据符合weibull分布,那么直接套用weibull回归自然是最理想的选择,它可以给出最合理的估计。如果数据不符合weibull分布,那如果还用weibull回归,那就套用错误,结果也就会缺乏可信度。weibull回归就像是量体裁衣,把体形看做数据,衣服看做模型,weibull回归就是根据某人实际的体形做衣服,做出来的也就合身,对其他人就不一定合身了。cox回归,就像是到商场去买衣服,衣服对很多人都合适,但是对每个人都不是正合适,只能说是大致合适。至于到底是选择麻烦的方式量体裁衣,还是选择简单到商场直接去买现成的,那就根据个人倾向,也根据具体对自己体形的了解程度,如果非常熟悉,自然选择量体裁衣更合适。如果不大了解,那就直接去商场买大众化衣服相对更方便些。

    8)主成分回归

    主成分回归是一种合成的方法,相当于主成分分析与线性回归的合成。主要用于解决自变量之间存在高度相关的情况。这在现实中不算少见。比如要分析的自变量中同时有血压值和血糖值,这两个指标可能有一定的相关性,如果同时放入模型,会影响模型的稳定,有时也会造成严重后果,比如结果跟实际严重不符。当然解决方法很多,最简单的就是剔除掉其中一个,但如果实在舍不得,觉得删了太可惜,那就可以考虑用主成分回归,相当于把这两个变量所包含的信息用一个变量来表示,这个变量我们称它叫主成分,所以就叫主成分回归。当然,用一个变量代替两个变量,肯定不可能完全包含他们的信息,能包含80%或90%就不错了。但有时候我们必须做出抉择,你是要100%的信息,但是变量非常多的模型?还是要90%的信息,但是只有1个或2个变量的模型?打个比方,你要诊断感冒,是不是必须把所有跟感冒有关的症状以及检查结果都做完?还是简单根据几个症状就大致判断呢?我想根据几个症状大致能确定90%是感冒了,不用非得100%的信息不是吗?模型也是一样,模型是用于实际的,不是空中楼阁。既然要用于实际,那就要做到简单。对于一种疾病,如果30个指标能够100%确诊,而3个指标可以诊断80%,我想大家会选择3个指标的模型。这就是主成分回归存在的基础,用几个简单的变量把多个指标的信息综合一下,这样几个简单的主成分可能就包含了原来很多自变量的大部分信息。这就是主成分回归的原理。

    9)岭回归

    当数据之间存在多重共线性(自变量高度相关)时,就需要使用岭回归分析。在存在多重共线性时,尽管最小二乘法(OLS)测得的估计值不存在偏差,它们的方差也会很大,从而使得观测值与真实值相差甚远。岭回归通过给回归估计值添加一个偏差值,来降低标准误差。

    上面,我们看到了线性回归等式:

    y=a+ b*x

    这个等式也有一个误差项。完整的等式是:

    y=a+b*x+e (误差项), [误差项是用以纠正观测值与预测值之间预测误差的值]

    => y=a+y= a+ b1x1+ b2x2+....+e, 针对包含多个自变量的情形。

    在线性等式中,预测误差可以划分为 2 个分量,一个是偏差造成的,一个是方差造成的。预测误差可能会由这两者或两者中的任何一个造成。在这里,我们将讨论由方差所造成的误差。岭回归通过收缩参数 λ(lambda)解决多重共线性问题。请看下面的等式:

    在这个等式中,有两个组成部分。第一个是最小二乘项,另一个是 β2(β-平方)和的 λ 倍,其中 β 是相关系数。λ 被添加到最小二乘项中用以缩小参数值,从而降低方差值。

    岭回归要点:

    1)除常数项以外,岭回归的假设与最小二乘回归相同;

    2)它收缩了相关系数的值,但没有达到零,这表明它不具有特征选择功能;

    3)这是一个正则化方法,并且使用的是 L2 正则化。

    10)偏最小二乘回归

    偏最小二乘回归也可以用于解决自变量之间高度相关的问题。但比主成分回归和岭回归更好的一个优点是,偏最小二乘回归可以用于例数很少的情形,甚至例数比自变量个数还少的情形。所以,如果自变量之间高度相关、例数又特别少、而自变量又很多,那就用偏最小二乘回归就可以了。它的原理其实跟主成分回归有点像,也是提取自变量的部分信息,损失一定的精度,但保证模型更符合实际。因此这种方法不是直接用因变量和自变量分析,而是用反映因变量和自变量部分信息的新的综合变量来分析,所以它不需要例数一定比自变量多。偏最小二乘回归还有一个很大的优点,那就是可以用于多个因变量的情形,普通的线性回归都是只有一个因变量,而偏最小二乘回归可用于多个因...

    展开全文
  • 用Excel做回归分析

    千次阅读 2020-12-19 04:21:38
    本节知识点:Excel数据分析工具库—回归线性回归和非线性回归简单线性回归和多重线性回归逻辑斯蒂回归一、什么回归分析(Regression)1、定义确定两种或两种以上变量间相关关系的一种统计分析方法。通过数据间相关性...

    Excel数据分析工具库是个很强大的工具,可以满足基本的统计分析,这里介绍用Excel数据分析工具库中的回归做回归分析。

    本节知识点:Excel数据分析工具库—回归

    线性回归和非线性回归

    简单线性回归和多重线性回归

    逻辑斯蒂回归

    一、什么是回归分析(Regression)

    1、定义

    确定两种或两种以上变量间相关关系的一种统计分析方法。通过数据间相关性分析的研究,进一步建立自变量(i=1,2,3,…)与因变量Y之间的回归函数关系,即回归分析模型,从而预测数据的发展趋势。

    2、分类按照涉及的变量的多少,分为一元回归和多元回归分析;

    按照因变量的多少,可分为简单回归分析和多重回归分析;

    按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。

    二、线性回归

    1、简单线性回归

    简单线性回归又叫一元线性回归,即回归模型中只有一个自变量和一个因变量,其回归方程可以表示为:

    Y=a+bx+e

    其中,Y表示因变量,x表示自变量,a是 常数,b是斜率,e是随机误差。

    2、最小二乘法:

    如何确定参数a和b,则要用最小二乘法来实现。通过最小化误差的平方和寻找数据的最佳函数匹配,即使得观测点和估计点的距离的平方和最小。

    3、线性回归分析的步骤:确定自变量和因变量

    绘制散点图,确定回归模型类型

    估计模型参数,建立回归模型:最小二乘法进行模型参数估计

    对回归模型进行检验

    利用回归模型进行预测

    4、多重线性回归

    定义:一个因变量与多个自变量的线性回归问题,是一元线性回归的推广。其回归方程可以写为:

    多重线性回归方程中回归系数的估计也是用到最小二乘法

    三、用Excel做回归分析

    我们研究销售额Y和推广费用X1之间的关系,数据如下:

    首先我们用数据分析—相关系数分析计算一下自变量和因变量之间的相关系数为0.95157,为强相关。

    绘制散点图如下:

    然后,我们用数据分析库里的回归来做分析

    注意Y值和X值输入区域,X值是自变量,Y是因变量。

    四、线性回归方程的检验

    评价回归拟合程度好坏(重要):

    1、 先看回归统计表,Multiple R即相关系数R的值,和我们之前做相关分析得到的值一样,大于0.8表示强正相关。

    2、 回归统计表中的R Square是R平方值,R平方即R的平方,又可以叫判定系数、拟合优度,取值范围是[0,1],R平方值越大,表示模型拟合的越好。一般大于70%就算拟合的不错,60%以下的就需要修正模型了。这个案例里R平方0.9054,相当不错。

    3、 Adjusted R是调整后的R方,这个值是用来修正因自变量个数增加而导致模型拟合效果过高的情况,多用于衡量多重线性回归。

    4、 第二张表,方差分析表,df是自由度,SS是平方和,MS是均方,F是F统计量,Significance F是回归方程总体的显著性检验,其中我们主要关注F检验的结果,即Significance F值,F检验主要是检验因变量与自变量之间的线性关系是否显著,用线性模型来描述他们之间的关系是否恰当,越小越显著。这个案例里F值很小,说明因变量与自变量之间显著。

    5、 残差是实际值与预测值之间的差,残差图用于回归诊断,回归模型在理想条件下的残差图是服从正态分布的。

    6、 第三张表我们重点关注P-value,也就是P值,用来检验回归方程系数的显著性,又叫T检验,T检验看P值,是在显著性水平α(常用取值0.01或0.05)下F的临界值,一般以此来衡量检验结果是否具有显著性,如果P值>0.05,则结果不具有显著的统计学意义,如果0.01

    7、 从第三张表的第一列我们可以得到这个回归模型的方程:y=4361.486+1.198017x,此后对于每一个输入的自变量x,都可以根据这个回归方程来预测出因变量Y。

    这里简单总结了一下什么是回归分析,如何用excel做线性回归分析,以及如何评价回归方程拟合程度的好坏。入门很简单,精通还很遥远,我们都在学习中。

    下一节内容:用Excel做直方图(2):频率分布直方图

    注:本文首发于CSDN

    @文章属原创,转载请联系作者,作者微信:data_cola

    @作者:虾壳,在数据分析的道路上努力奔跑

    @微信公众号:可乐的数据分析之路

    往期文章精选:可乐数据分析之路:用Excel做控制图​zhuanlan.zhihu.com可乐:用Excel做直方图(1):随机数发生器​zhuanlan.zhihu.com可乐数据分析之路:描述性统计分析​zhuanlan.zhihu.com可乐数据分析之路:用Excel做相关性分析​zhuanlan.zhihu.com可乐数据分析之路:用Excel做排列图​zhuanlan.zhihu.com

    展开全文
  • 用Excel做回归分析的详细步骤

    千次阅读 2020-12-19 04:21:39
    一、什么回归分析法“回归分析”是解析“注目变量”和“因于变量”并明确两者关系的统计方法。此时,我们把因子变量称为“说明变量”,把注目变量称为“目标变量址(被说明变量)”。清楚了回归分析的目的后,下面...
  • You can find the full article here 来看一个比较特殊的Survival分析建模的案例,利用的是半参模型:Poisson Regression 具体可以看文章:Survival Analysis with LightGBM plus Poisson Regression ...
  • 回归分析表怎么看懂?

    千次阅读 2021-02-05 08:36:50
    展开全部我给你解读一份stata的回归表格吧,应该有标准表格的所有内容了,因为你没有给范62616964757a686964616fe4b893e5b19e31333332643336例,……不过我们考试基本就是考stata或者eview的输出表格,它们是类似的...
  • 回归分析美赛学习

    2021-01-13 11:00:12
    回归分析的任务是: 通过研究自变量x与因变量y的相关关系,去解释y的形成机理,进而 达到通过x预测y的目的 常见的回归分析有5类: 线性回归,0-1回归,定序回归,计数回归和生存回归 关键词: 相关性 注意,不要把...
  • 数据挖掘 回归分析

    2021-09-28 11:02:17
    回归分析 回归分析是一种应用极为广泛的数量分析方法。它用于分析事物之间的统计关系,侧重考察变量之间的数量变化规律,并通过回归方程的形式描述和反映这种关系,以帮助人们准确把握变量受其他一个或多个变量影响...
  • 多重线性回归分析SPSS操作与解读

    千次阅读 2020-12-19 08:55:17
    严格来讲,这种一个因变量多个自变量的线性回归叫多变量线性回归或者多因素线性回归更合适一些。多元或者多变量往往指的是多个因变量。在线性回归中,残差是一个非常重要的概念,它是估计值与观测值之差,表示因变量...
  • 数据的回归分析

    2021-03-22 19:47:31
    一、Excel线性回归数据分析二、判断线性回归是否成立三、鸢尾花Iris数据集1、Anaconda创建虚拟环境及安装对应的包2、LinearSVC(C)方式实现分类 一、Excel线性回归数据分析 这里使用excel的数据分析功能来...
  • 如何使用SPSS进行相关性和回归分析

    千次阅读 2021-11-14 17:01:16
    下面用SPSS采用回归—线性分析的方式来分析一下:居民总储蓄 和 “居民总消费”情况是否具备相关性,如果具备相关性,那相关关系的密切程度多少。 下面以“居民总储蓄”和“居民总消费”的调查样本做统计分析,...
  • 通过回归分析预测连续变量 from IPython.display import Image %matplotlib inline 1.介绍线性回归 线性回归的目标是:对一个或者多个特征与连续型的目标变量之间的关系进行建模。 1.1简单线性回归 对于单个的特征...
  • 回归分析 变量之间X,Y之间存在某种密切的联系,但并非严格的函数关系(非确定性关系) 回归:回归是处理两个或两个以上变量之间互相依赖的定量关系的一种统计方法和技术,变量之间的关系并非确定的函数关系,通过...
  • 看来目前也没什么用了,想打个包刻在光碟上,却发现有些代码现在可能还能起作用,其中就有计算一元回归和多元回归的代码,一看代码文件时间,居然是1993年的,于是稍作整理,存放在这,分析虽不十分完整,但一般应用...
  • 线性回归模型用于处理回归问题,也就是预测连续型数值。线性回归模型是最基础的一种回归模型,理解起来也很容易,我们从解方程组谈起。
  • 原标题:【回归分析】R、R平方与调整后的R平方 回归分析,是对两个或两个以上变量之间的因果关系进行定量研究的一种统计分析方法。回归分析,也是我们进行需求预测常用的一种因果建模方法。我们做回归分析时,离不开...
  • 给出共享单车的相关业务数据,建立kmeans模型,不同维度分群结果进行分析 column definition user_id 用户编码 start_time 开始时间 end_time 结束时间 timeduration 骑行时长 bikeid ...
  • 一、为什么叫回归? 回归翻译自:regression,最初是统计学家们,关注到:孩子的身高总会向平均身高靠近,即使父母都很高,孩子也不会无限长高下去。从这些研究里,总结出回归分析方法(regression,还有一个意思是...
  • 一、线性回归描述• 父亲身高与儿子身高存在相关(相关关系)• 可否通过父亲身高预测儿子的身高?• 新生儿的体重与体表面积存在相关• 可否通过体重预测体表面积?(依存关系)1、概述例 研究大气污染物一氧化氮(NO)...
  • 本文通过一个简单的例子:预测房价,来探讨怎么用python做一元线性回归分析。1. 预测一下房价房价是一个很火的话题,现在我们拿到一组数据,是房子的大小(平方英尺)和房价(美元)之间的对应关系,见下表(csv数据文件)...
  • 首先透过现象看本质,回归分析的定义到底是什么? 1.回归定义 https://baike.baidu.com/item/%E5%9B%9E%E5%BD%92%E5%88%86%E6%9E%90/2625498?fr=aladdin提出 在统计学中,回归分析(regression analysis)指的是...
  • 大家好!我又出现了(*^__^*) 嘻嘻。...目录多元线性回归(下)偏回归平方和部分系数显著性检验违背基本假设的情况异方差性异方差性检验异方差性问题处理方法一元加权最小二乘估计多元加权最小二乘估计自相关性自相关...
  • 本文通过一个简单的例子:预测房价,来探讨怎么用python做一元线性回归分析。1. 预测一下房价房价是一个很火的话题,现在我们拿到一组数据,是房子的大小(平方英尺)和房价(美元)之间的对应关系,见下表(csv数据文件)...
  • Logistic回归 logistic回归主要用来预测离散因变量(分类因变量)与一组...评估结果 0 , 1 两种形式,0 表示企业两年后破产,将拒绝贷款,而 1 表示企业 2 年后具备还款能力,可以贷款。在表 6 中,已知前 20 家企业
  • 对“父母子女身高”数据集进行线性回归分析(简化的做法可选取父子身高数据X-Y) 1. 一元线性回归练习。对“父母子女身高”数据集进行线性回归分析(简化的做法可选取父子身高数据X-Y) 首先,打开父母子女身高...
  • 在MOOC的课程《用Python玩转数据》最终的实践课程中就用它来进行简单的数据分析,以及模型拟合。文章将主要分为2部分:1、使用sklearn的linear_model进行多元线性回归拟合;同时使用非线性回归模型来拟合(暂时还没想...
  • 常言道,名正则言顺。对于一个概念,如果它...为什么叫回归测试?据我观察,许多的答案都不能让人信服。今天,是时候为“回归测试”正个名了。要理解“回归测试”,先要理解“回归”。回归,是常用的汉语词汇。它有...
  • 以 Python 使用 分类回归 简单举例应用介绍分类分析。 分类回归 分类问题是用于将事物打上一个标签,通常结果离散值。例如判断一幅图片上的动物是一只猫还是一只狗,分类通常是建立在回归之上,分类的最后一层通常...
  • 回归分析就是通过一个(些)变量的变化解释另一个变量的变化,比如y=a+bx 对于两个连续的变量(比率变量或等距变量),通过观测研究,可以用积差相关分析的方法,定量地描述两个变量之间的相关强度与方向。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,103
精华内容 14,841
关键字:

为什么叫回归分析