精华内容
下载资源
问答
  • 在二元线性回归模型中
    2021-03-17 22:34:52

    除了前面的优秀答案外,这里还有一个图形装配器,它有一个3d散点图、3d曲面图和一个等高线图。

    import numpy, scipy, scipy.optimize

    import matplotlib

    from mpl_toolkits.mplot3d import Axes3D

    from matplotlib import cm # to colormap 3D surfaces from blue to red

    import matplotlib.pyplot as plt

    graphWidth = 800 # units are pixels

    graphHeight = 600 # units are pixels

    # 3D contour plot lines

    numberOfContourLines = 16

    def SurfacePlot(func, data, fittedParameters):

    f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

    matplotlib.pyplot.grid(True)

    axes = Axes3D(f)

    x_data = data[0]

    y_data = data[1]

    z_data = data[2]

    xModel = numpy.linspace(min(x_data), max(x_data), 20)

    yModel = numpy.linspace(min(y_data), max(y_data), 20)

    X, Y = numpy.meshgrid(xModel, yModel)

    Z = func(numpy.array([X, Y]), *fittedParameters)

    axes.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=1, antialiased=True)

    axes.scatter(x_data, y_data, z_data) # show data along with plotted surface

    axes.set_title('Surface Plot (click-drag with mouse)') # add a title for surface plot

    axes.set_xlabel('X Data') # X axis data label

    axes.set_ylabel('Y Data') # Y axis data label

    axes.set_zlabel('Z Data') # Z axis data label

    plt.show()

    plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems

    def ContourPlot(func, data, fittedParameters):

    f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

    axes = f.add_subplot(111)

    x_data = data[0]

    y_data = data[1]

    z_data = data[2]

    xModel = numpy.linspace(min(x_data), max(x_data), 20)

    yModel = numpy.linspace(min(y_data), max(y_data), 20)

    X, Y = numpy.meshgrid(xModel, yModel)

    Z = func(numpy.array([X, Y]), *fittedParameters)

    axes.plot(x_data, y_data, 'o')

    axes.set_title('Contour Plot') # add a title for contour plot

    axes.set_xlabel('X Data') # X axis data label

    axes.set_ylabel('Y Data') # Y axis data label

    CS = matplotlib.pyplot.contour(X, Y, Z, numberOfContourLines, colors='k')

    matplotlib.pyplot.clabel(CS, inline=1, fontsize=10) # labels for contours

    plt.show()

    plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems

    def ScatterPlot(data):

    f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

    matplotlib.pyplot.grid(True)

    axes = Axes3D(f)

    x_data = data[0]

    y_data = data[1]

    z_data = data[2]

    axes.scatter(x_data, y_data, z_data)

    axes.set_title('Scatter Plot (click-drag with mouse)')

    axes.set_xlabel('X Data')

    axes.set_ylabel('Y Data')

    axes.set_zlabel('Z Data')

    plt.show()

    plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems

    def func(data, a, alpha, beta):

    t = data[0]

    p_p = data[1]

    return a * (t**alpha) * (p_p**beta)

    if __name__ == "__main__":

    xData = numpy.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0])

    yData = numpy.array([11.0, 12.1, 13.0, 14.1, 15.0, 16.1, 17.0, 18.1, 90.0])

    zData = numpy.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.0, 9.9])

    data = [xData, yData, zData]

    initialParameters = [1.0, 1.0, 1.0] # these are the same as scipy default values in this example

    # here a non-linear surface fit is made with scipy's curve_fit()

    fittedParameters, pcov = scipy.optimize.curve_fit(func, [xData, yData], zData, p0 = initialParameters)

    ScatterPlot(data)

    SurfacePlot(func, data, fittedParameters)

    ContourPlot(func, data, fittedParameters)

    print('fitted prameters', fittedParameters)

    modelPredictions = func(data, *fittedParameters)

    absError = modelPredictions - zData

    SE = numpy.square(absError) # squared errors

    MSE = numpy.mean(SE) # mean squared errors

    RMSE = numpy.sqrt(MSE) # Root Mean Squared Error, RMSE

    Rsquared = 1.0 - (numpy.var(absError) / numpy.var(zData))

    print('RMSE:', RMSE)

    print('R-squared:', Rsquared)

    更多相关内容
  • 二元线性回归,读取txt数据,三维可视化,注意读取数据时预处理很重要。
  • 二元线性回归模型可视化

    千次阅读 2020-12-20 14:43:50
    问题分析 以商品房销售记录为例 加载数据 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 用Axes3D库画3D模型图 import numpy as np plt.rcParams['font.sans-serif'] = 'SimHei' # ...

    问题分析

    以商品房销售记录为例
    在这里插入图片描述

    加载数据

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D  # 用Axes3D库画3D模型图
    import numpy as np
    
    plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体
    
    # 加载数据
    x1 = np.array([137.97,104.50,100.00,124.32,79.20,99.00,124.00,114.00,106.69,138.05,53.75,46.91,68.00,63.02,81.26,86.21])
    x2 = np.array([3,2,2,3,1,2,3,2,2,3,1,1,1,1,2,2])
    y = np.array([145.00,110.00,93.00,116.00,65.32,104.00,118.00,91.00,62.00,133.00,51.00,45.00,78.50,69.65,75.69,95.30])
    
    

    数据处理

    # 数据处理
    x0 = np.ones(len(x1))  # 生成全1矩阵
    X = np.stack((x0,x1,x2)).transpose()  # 用stack函数进行堆叠,再transpose进行转置 16*3
    Y = np.array(y).reshape(-1,1)  # 改变y数组形状 16*1
    

    求解模型参数W = (X’X)-1X’Y

    # 求解模型参数
    Xt = np.transpose(X)  # 计算X'
    XtX_1 = np.linalg.inv(np.matmul(Xt,X))  # 计算(X'X)-1
    XtX_1_Xt = np.matmul(XtX_1,Xt)  # 计算(X'X)-1X'
    W = np.matmul(XtX_1_Xt,Y)  # W = (X'X)-1X'Y
    W = W.reshape(-1)  # 改变W形状 1*3
    y_pred = W[1]*x1 + W[2]*x2 + W[0]  # 预测房价
    

    绘制散点图

    # 绘制散点图
    fig = plt.figure(figsize=(8,6))  # 设置画布大小
    ax3d = Axes3D(fig)  # 创建3D模型对象
    # ax3d.view_init(elev=0,azim=-90)  # 改变角度
    
    ax3d.scatter(x1,x2,y,color='b',marker='*',label='销售记录')  # 绘制实际房价
    ax3d.scatter(x1,x2,y_pred,color='r',label='预测房价')  # 绘制预测房价
    
    ax3d.set_xlabel('Area',color='r',fontsize=16)  # 设置x轴标签
    ax3d.set_ylabel('Room',color='r',fontsize=16)  # 设置y轴标签
    ax3d.set_zlabel('Price',color='r',fontsize=16)  # 设置z轴标签
    ax3d.set_yticks([1,2,3])  # 设置y轴刻度
    ax3d.set_zlim3d(30,160)  # 设置z轴范围
    
    plt.suptitle("商品房销售回归模型",fontsize=20)  # 设置标题
    plt.legend(loc='upper left')  # 设置图例
    plt.show()
    
    

    绘制结果

    在这里插入图片描述

    展开全文
  • 本文主要介绍:Excel数据分析工具库—回归线性回归和非线性回归简单线性回归和多重线性回归逻辑斯蒂回归一、什么是回归分析(Regression)1、定义确定两种或两种以上变量间相关关系的一种统计分析方法。通过数据间...

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

    本文主要介绍:

    • Excel数据分析工具库—回归
    • 线性回归和非线性回归
    • 简单线性回归和多重线性回归
    • 逻辑斯蒂回归

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

    1、定义

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

    2、分类

    • 按照涉及的变量的多少,分为一元回归和多元回归分析;
    • 按照因变量的多少,可分为简单回归分析和多重回归分析;
    • 按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。

    二、线性回归

    1、简单线性回归

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

    4e6099d1a8fcff5c7301dcdb27a65bcf.png

    其中,Y表示因变量,x表示自变量,a是 常数,b是斜率,

    a12a84532ac137e44bf44b7e6c3b710f.png

    2、最小二乘法:

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

    3、线性回归分析的步骤:

    • 确定自变量和因变量
    • 绘制散点图,确定回归模型类型
    • 估计模型参数,建立回归模型:最小二乘法进行模型参数估计
    • 对回归模型进行检验
    • 利用回归模型进行预测

    4、多重线性回归

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

    20d270ae3e82dfc154857fc31394b57a.png

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

    三、用Excel做回归分析

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

    16b8344331ada52bd7fe038e2401955a.png

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

    6769683812474ac04f0f7d864e586093.png

    绘制散点图如下:

    8a2e9b020af492dc1065cbf110eafa61.png

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

    0fe3a97f958da0a2140264d4e3b5e3f3.png

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

    a290105390290e230d146b61e945cd3c.png

    四、线性回归方程的检验

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

    c8948b3ecb4c24b1248fd07db1d1b259.png

    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做线性回归分析,以及如何评价回归方程拟合程度的好坏。入门很简单,精通还很遥远,我们都在学习中。

    注:本文首发于CSDN@文章属原创,转载请联系作者@作者:虾壳,在数据分析的道路上努力奔跑@微信公众号:可乐的数据分析之路

    展开全文
  • 已经求出线性回归模型来了,但画出来的图很奇怪,请问应该怎么表示啊
  • #资源达人分享计划#
  • 广义线性回归模型(GLM)是常见正太线性模型的直接推广,它适用于连续数据和离散数据,特别是后者,如属性数据、计数数据。广义线性回归模型要求响应变量只能通过线性形式依赖于自变量,从而保持了线性自变量的思想。...

    广义线性回归模型(GLM)是常见正太线性模型的直接推广,它适用于连续数据和离散数据,特别是后者,如属性数据、计数数据。

    广义线性回归模型要求响应变量只能通过线性形式依赖于自变量,从而保持了线性自变量的思想。它们对线性模型进行了两个方面的推广:一是通过设定一个连续函数,将响应变量的期望于线性自变量相联系,二是对误差的分布给出一个误差函数。这些推广使许多线性模型的方法能用于一般问题。

    回顾下线性模型:

    Y = XTβ+ε

    这里ε假定有均值为0的正态分布,因此有:

    Y ~ N(XTβ, σ2)

    于是我们就可以通过最大似然估计法得到参数β和σ的估计,而且这个估计在Y是正态假定下等价于最小估计,对Y取期望可得:

    μ=E(Y)=XTβ=η

    但是有一个问题就来了我们上面的模型需要满足的是Y符合正太分布,但如果Y有其他限制了,比如Y为频数或者二元响应变量,如果方差依赖均值,那我们上面的模型就没办法使用了,为了适应更加广泛的不同分布的变量,需要推广上面的模型广义线性模型就是把μ和η用一个函数g()连接起来也就是:

    g(μ)=η

    这就是广义线性模型,我们把g()函数称为连接函数,广义线性模型要求Y服从包括正态分布的的指数分布族中的已知分布就可。

    与广义线性模型有关的R函数

    R语言提供了拟合计算广义线性模型的函数glm(),其命令格式如下:

    glm(formula, family = gaussian, data, weights, subset,

        na.action, start = NULL, etastart, mustart, offset,

        control = list(...), model = TRUE, method = "glm.fit",

        x = FALSE, y = TRUE, singular.ok = TRUE, contrasts = NULL, ...)

    其中formula是拟合公式,这里的意义与线性模型相同;family是分布族,即广义线性模型的种类,如正态分布,Poisson分布、二项分布等;data是数据框,这里面的意义与线性模型相同。

    对于每个每个分布族(family),提供了相应的链接函数,下图所示:

    6ac8750e7b0a5bd130cc347763927c3c.png

    6909a755c1d141a5bf58699320e69ccd.png

    有了这些分布族和连续函数,就可以完成相应的广义线性模型的拟合问题。

    89793d50bd868ca69651a3a5bbf51d20.png

    正态分布族

    简单地说,广义线性模型一般(默认)模式是正态分布族,也是常规的线性模型。

    所以正态分布族:

    fm 

    #其中family = gaussian(link = identity)可以省略,因为正态分布的连接函数,默认值是恒等(identity)。同时,分布族的默认值是正态分布。

    与线性模型:

    fm

    输出结果一样,仅存在效率差异。

    二线分布族

    在二项分布族中,logistics回归模型是最重要的模型。在某些回归问题中,响应变量是分类的,比如成功和失败,得病与不得病。对于这种问题,正态分布模型显然不合适,因为正态误差不对应0-1响应。在这种情况需要采用logistics回归作为连接函数。

    对于响应变量Y有p个自变量,那么logistics回归模型为

    97928d855755633896557f51d0bbcb03.png

    其中β0为常数项(截距),β1,β2,……,βp为logistics模型回归系数。

    从上公式可以看出,logistics回归模型是一个非线性回归模型,自变量Xj(j=1,2,…,p)可以是连续变量,也可以是分类变量或哑变量(又称虚拟变量 ( Dummy Variables) ,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1)

    对上公式进行logit变换,logistics回归模型可以变成下列线性形式:

    acab91fe820b3b93127ba393d519d018.png

    从变换后公式可以看出,可以使用线性回归模型对参数进行估计。

    R语言计算logistics回归模型的语句为

    fm

    #式中link = logit为默认值,可省略不写。

    举例:有一组关于献血数据的例子,变量有Recency(上次献血距离研究时的年份),Frequency(总献血次数),Time(第一次献血是多少月之前),Donate(是否此次研究时间段是否会再次献血,1为会,0为不会),数据记录在“Trans.csv“”表格中。

    以Donate为因变量,我们可以看出Donate是二分变量,它有1和0两个亚元值,分别代表会和不会再次来献血。

    >setwd("D:/R/Test/Try9")

    >trans

    >head(trans)     #查看数据是否成功导入

    >glm.trans

    >summary(glm.trans)

    Call:

    glm(formula = Donate ~ Frequency + Time + Recency, data = trans)

    Deviance Residuals: 

         Min        1Q    Median        3Q       Max  

    -0.96668  -0.28733  -0.16228   0.05677   0.99111  

    Coefficients:

                  Estimate Std. Error t value Pr(>|t|)    

    (Intercept)  0.3291940  0.0295579  11.137  < 2e-16 ***

    Frequency    0.0229148  0.0034838   6.577 9.02e-11 ***

    Time        -0.0035797  0.0008313  -4.306 1.88e-05 ***

    Recency     -0.0099798  0.0019669  -5.074 4.93e-07 ***

    ---

    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

    (Dispersion parameter for gaussian family taken to be 0.1587853)

    从结果可以看出,三个因素都会影响是否会在该月再次献血

    对于广义线性模型GLM,同样可以做变量筛选、模型修正、回归诊断等工作!


    以下简述一下其他分布族(由于知识体系有限,生啃吃力,先马克一下,方到用时或知识积累足够后再继续学习):

    poisson分布族与拟poisson分布族

    poisson分布族模型使用方法:

    fm

    拟poisson分布族模型使用方法:

    fm

    其直观概念是:

    ln(E(Y)) = β0 1X12X2+…βpXp

    Poisson分布族模型要求相应变量Y是整数,而拟Poisson分布族模型则没有这一要求。

    Gamma分布族

    Gamma分布族模型使用方法为:

    fm

    其直观概念是

    1/E(Y) = β1X12X2+…βpXp

    quasi分布族

    quasi分布族模型使用方法为

    fm

    另外还有quasibinomial分布族,inverse.gaussian分布族等。

    展开全文
  • 本资源适用于对做二元线性回归、残差分析的人有所帮助。如:做ndvi与温度、降雨的线性回归问题做残差分析
  • 本节知识点:Excel数据分析工具库—回归线性回归和非线性回归简单线性回归和多重线性回归逻辑斯蒂回归一、什么是回归分析(Regression)1、定义确定两种或两种以上变量间相关关系的一种统计分析方法。通过数据间相关性...
  • 最小二乘法是一种通过数值对曲线函数拟合...我们来用一个最简单的一元线性回归模型的例子来理解最小二乘法。生活,我们知道人的身高和脚的大小是成正比的,这里我们假设身高和脚的大小是成一元线性关系的。那么...
  • 2019/3/30 二元线性回归——矩阵公式法又名:对于python科学库的糟心尝试 二元线性回归严格意义上其实不过是换汤不换药,我对公式进行推导,其实也就是跟以前一样的求偏导并使之为零,并且最终公式的严格推导我大概...
  • 本节知识点:Excel数据分析工具库—回归线性回归和非线性回归简单线性回归和多重线性回归逻辑斯蒂回归一、什么是回归分析(Regression)1、定义确定两种或两种以上变量间相关关系的一种统计分析方法。通过数据间...
  • python实现多元线性回归 这是东北大学20级信息科学与工程学院工业智能专业的一次小作业,但是过程我遇到了些困难,包括且不限于: 1、如何读取csv文件变成矩阵 2、应该用什么代码程序实现? 我的开发环境:MacBook...
  • 行业资料-电子功用-基于二元线性回归模型的配电网双端线路段阻抗分析方法
  • 二元线性回归模型及参数估计PPT课件.pptx
  • 从数据分析的角度看,所有事物之间存在着两种关系:函数关系和统计关系。函数关系是指两事物之间存在着一种一一对应的关系,当一个X确定,对应的变量Y也可以随之完全确定(即有唯一值)。比如乘车计费,里程数和费用...
  • 利用晋华宫煤的全水、灰分和发热量的相关关系推导二元线性回归方程,即应用工业分析数据可预测晋华宫煤的发热量,并用于矿区混煤参数的计算。基于具有代表性、准确性的实测数据所推导的回归方程的精度及准确度可达到...
  • 二元线性回归模型及参数估计PPT学习教案.pptx
  • 1.5.最小二乘法求二元线性回归

    千次阅读 2020-05-04 18:22:03
    最小二乘法求二元线性回归 y=2x1+(−3)∗x2+4y=2x_{1}+(-3)*x_{2}+4y=2x1​+(−3)∗x2​+4 构造数据集 import numpy as np np.random.seed(1) X = np.random.normal(size=(1000,2),scale=1)#1000行2列,每个样本有...
  • 我们都知道当Y是定量数据时,线性回归可以用来分析影响关系。如果现在想对某件事情发生的概率进行预估,比如一件衣服的是否有人想购买?这里的Y是“是否愿意购买”,属于分类数据,所以不能使用回归分析。如果Y为定...
  • 二元线性回归最小二乘法公式推导

    万次阅读 2017-02-28 21:23:23
    手动推导用最小二乘法进行线性回归,求参数
  • 根据河南永华能源郭村煤矿测试瓦斯基础参数和地勘钻孔瓦斯资料,定量分析出该矿煤层瓦斯含量与煤层底板标高和煤层厚度的线性关系,为了准确反映该区瓦斯赋存规律,运用二元线性回归的方法得出埋藏深度和煤层厚度2个因素...
  • 多元线性回归Matlab代码

    千次阅读 2021-04-18 15:53:37
    % 多元线性回归% b 回归系数% bint 回归系数的置信度为95%的置信区间% r 残差% rint 各残差的置信区间% stats 用于检验回归模型的统计量,有四个数值:相关系数R^2、F值、与F对应的概率p,误差方差。相关系数R^2越...
  • from numpy import genfromtxt import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 读入数据 Data = genfromtxt(r"data2.csv", delimiter=',') ...
  • 线性回归模型

    2022-02-02 17:02:23
    线性回归与回归算法的评价指标 1.定义 回归问题的判定 目标值是连续型数据 线型回归的作用 就是找出特征和目标之间存在的某种趋势。二维平面,该趋势用一条直线来表示 回归处理的问题为预测 预测房价 ...
  • 一元线性回归和二元线性回归的matlab实例编程 包括有多元线性回归模型
  • 机器学习数学基础之线性回归1. 线性回归公式2....线性回归在有监督的情况下使用——先利用一定的已知数据进行求解w,再根据w与输入的x求得y 2. 利用矩阵对线性公式整合 线性回归的特征值一般有很多个,即存在
  • # 创建模型 model = linear_model.LinearRegression() model.fit(x_data,y_data) # 系数 print("coefficients:",model.coef_) # 截距 print("intercept:",model.intercept_) # 测试 x_test = [[102,4]] predict = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,246
精华内容 5,698
热门标签
关键字:

在二元线性回归模型中