精华内容
下载资源
问答
  • matlab实现一元线性回归和多元线性回归

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

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

      在实际经济问题中,一个变量往往受到多个变量的影响。例如,家庭消费支出,除了受家庭可支配收入的影响外,还受诸如家庭所有财富、物价水平、金融机构存款利息等多种因素的影响,表现在线性回归模型中的解释变量有多个。这样的模型被称为多元线性回归模型。

       多元线性回归模型的一般表现形式为

    Yi=β0+β1X1i+β2X2i+…+βkXki+μi i=1,2,…,n
    其中 k为解释变量的数目,βj(j=1,2,…,k)称为回归系数(regression coefficient)。上式也被称为总体回归函数的随机表达式。它的非随机表达式为
    E(Y∣X1i,X2i,…Xki,)=β0+β1X1i+β2X2i+…+βkXki
    βj也被称为偏回归系数

    1.Matlab多元线性回归模型实现

    (1)b=regress( Y,  X ) 确定回归系数的点估计值
    其中,Yn*1的矩阵;X为(ones(n,1),x1,…,xm)的矩阵;

    (2)[b, bint,r,rint,stats]=regress(Y,X,alpha) 求回归系数的点估计和区间估计,并检验回归模型

    • 回归系数
    • bint 回归系数的区间估计
    • 残差
    • rint 残差置信区间
    • stats 用于检验回归模型的统计量,有四个数值:相关系数R2F值、与F对应的概率p,误差方差。相关系数R2越接近1,说明回归方程越显著;F > F1-α(kn-k-1)时拒绝H0F越大,说明回归方程越显著;与F对应的概率时拒绝H0,回归模型成立。p值在0.01-0.05之间,越小越好。
    (3)出残差以及其置信区间rcoplot(r,rint);

    实例1:(一元线性回归)

    测得16名女子的身高和腿长如下表所示(单位:cm)

    试研究这些数据之间的关系。

    Matlab程序为:(输入如下命令)

    结果显示:

    因此我们可得y=-16.0730+0.7194x 成立

    (残差分析)

    接着输入

    结果显示

    (预测及作图)

    接着输入

    结果显示

    实例2:(多元线性回归)

    水泥凝固时放出的热量y与水泥中的四种化学成分x1,x2,x3,x4有关,今测得一组数据如下,试确定多元线性模型。


    Matlab程序:(输入命令)


    结果显示

    因此,我们得到y=-62.4045+1.55x1+0.5102x2+0.1019x3-0.1441x4成立

    (残差分析)

    接着输入

    结果显示

    接着输入

    预测结果

    4.错误:Warning: R-square and the F statistic are not well-defined unless X has a column of ones.

    Type "help regress" for more information.

    没有常数项的意思!
    展开全文
  • (MATLAB)一元线性回归和多元线性回归1.一元线性回归2.多元线性回归2.1数据说明2.2程序运行结果 1.一元线性回归 直接看代码,目标是建立yyyxxx的函数关系,即求y=kx+by=kx+by=kx+b中的kkkbbb,kkkbbb都是实数...

    (MATLAB)一元线性回归和多元线性回归

    1.一元线性回归

    直接看代码,目标是建立yyxx的函数关系,即求y=kx+by=kx+b中的kkbbkkbb都是实数。

    % 用regress函数进行回归
    x=[23.80,27.60,31.60,32.40,33.70,34.90,43.20,52.80,63.80,73.40];
    y=[41.4,51.8,61.70,67.90,68.70,77.50,95.90,137.40,155.0,175.0];
    figure
    plot(x,y,'r*') %作散点图(制定横纵坐标)
    xlabel('x')
    ylabel('y')
    
    Y=y';
    X=[ones(size(x,2),1),x'];
    [b,bint,r,rint,s]=regress(Y,X);
    hold on
    plot(x,b(1)+b(2)*x)
    title("预测结果")
    figure
    rcoplot(r,rint)  % 残差分析
    

    输出结果b就是系数矩阵,本题b=[-23.5493,2.791],则预测结果为y = -23.5493+2.7991x
    在这里插入图片描述

    预测结果与散点图如下:
    在这里插入图片描述

    残差分析图如下,可以看出只有一个异常点,拟合效果不错。
    在这里插入图片描述

    2.多元线性回归

    2.1数据说明

    部分data数据如下图所示:
    在这里插入图片描述
    导入MATLAB中,数据是一个200行4列的矩阵,此处表示有3个变量x1,x2,x3x_1,x_2,x_3,每个变量有200条数据,最后一列数据表示yy,多元线性回归的目标是建立yyx1,x2,x3x_1,x_2,x_3之间的关系,即求k0,k1,k2,k3k_0,k_1,k_2,k_3,使得y=k0+k1x1+k2x2+k3x3y=k_0+k_1x_1+k_2x_2+k_3x_3

    % 多元线性回归
    
    a = load('data.txt');
    
    x1=a(:,[1]) ;
    x2=a(:,[2]) ;
    x3=a(:,[3]) ;
    y=a(:,[4]);
    
    X=[ones(length(y),1), x1,x2,x3];
    
    
    [b,bint,r,rint,stats]=regress(y,X);
    b
    rcoplot(r,rint)
    

    2.2程序运行结果

    b的求解结果如下,所以求出y=2.9389+0.0458x1+0.1885x20.001x3y=2.9389+0.0458x_1+0.1885x_2-0.001x_3
    在这里插入图片描述

    残差分析如下:
    在这里插入图片描述

    展开全文
  • 一元线性回归VS多元线性回归

    千次阅读 2018-11-10 21:25:40
    一元线性回归和多元线性回归表面意思容易理解,但是结合实际的数据集,会混乱。这也是在编写线性回归博文的时候梳理知识点发现自己的不足,同时记录下来,让有疑问的同学也可以得到答案,拨开乌云。 1.在数据集上的...

          一元线性回归和多元线性回归表面意思容易理解,但是结合实际的数据集,会混乱。这也是在编写线性回归博文的时候梳理知识点发现自己的不足,同时记录下来,让有疑问的同学也可以得到答案,拨开乌云。

    1.在数据集上的异同

    一元线性回归:

    给定数据集D=\left \{ \left ( x _{i},y_{i} \right ) \right \}_{i=1}^{m},其中x_{i}\in R,样本有1个属性描述。

    VS

    多元线性回归:

    给定数据集D=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m}) \right \},其中x_{i}=\left ( x_{i1};x_{i2} ;...;x_{id}\right ) ,y_{i}\in R,样本有d个属性描述。

     

    2.向量表达式

    一元线性回归:

                           f\left ( x_{i} \right )=\theta x_{i}+b

    VS

    多元线性回归:

                          f\left ( x_{i} \right )=w^{T} x_{i}+b

    展开全文
  • 文章目录原理以及公式【1】一元线性回归问题【2】多元线性回归问题【3】学习率【4】流程分析(一元线性回归)【5】流程分析(多元线性回归)归一化原理以及每种归一化适用的场合一元线性回归代码以及可视化结果多元...


    原理以及公式

    【1】一元线性回归问题

    原函数是一元函数(关于x),它的损失函数是二元函数(关于w和b)

    这里介绍两种损失函数:平方损失函数和均方差损失函数
    在这里插入图片描述

    【2】多元线性回归问题

    X和W都是m+1维的向量,损失函数是高维空间中的凸函数

    【3】学习率

    学习率属于超参数(超参数:在开始学习之前设置,不是通过训练得到的)
    可以选择在迭代次数增加时减少学习率大小.
    下图是学习率正常或较小、稍大、过大的迭代图。

    【4】流程分析(一元线性回归)

    过程分析:

    1、加载样本数据x,y
    2、设置超参数学习率,迭代次数
    3、设置模型参数初值w0, b0
    4、训练模型w, b
    5、结果可视化

    														流程图:
    

    在这里插入图片描述

    【5】流程分析(多元线性回归)

    归一化原理以及每种归一化适用的场合

    在这里插入图片描述

    线性归一化:适用于样本分布均匀且集中的情况,如果最大值(或者最小值)不稳定,和绝大数样本数据相差较大,使用这种方法得到的结果也不稳定.为了抑制这个问题,在实际问题中可以用经验值来代替最大值和最小值
    标准差归一化适用于样本近似正态分布,或者最大最小值未知的情况,有时当最大最小值处于孤立点时也可以使用标准差归一化
    非线性映射归一化,通常用于数据分化较大的情况(有的很大有的很小)
    总结:样本属性归一化需要根据属性样本分布规律定制

    过程分析:

    加载样本数据area,room,price
    数据处理归一化,X,Y
    设置超参数学习率,迭代次数
    设置模型参数初值W0(w0,w1,w2)
    训练模型W
    结果可视化

    在这里插入图片描述

    一元线性回归代码以及可视化结果

    #解析法实现一元线性回归 
    # #Realization of one variable linear regression by analytic method
    #导入库
    import numpy as np
    import matplotlib.pyplot as plt 
    #设置字体
    plt.rcParams['font.sans-serif'] =['SimHei']
    #加载样本数据
    x=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])
    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])
    #设置超参数,学习率
    learn_rate=0.00001
    #迭代次数
    iter=100
    #每10次迭代显示一下效果
    display_step=10
    #设置模型参数初值
    np.random.seed(612)
    w=np.random.randn()
    b=np.random.randn()
    #训练模型
    #存放每次迭代的损失值
    mse=[]
    for i in range(0,iter+1):
        #求偏导
        dL_dw=np.mean(x*(w*x+b-y))
        dL_db=np.mean(w*x+b-y)
        #更新模型参数
        w=w-learn_rate*dL_dw
        b=b-learn_rate*dL_db
        #得到估计值
        pred=w*x+b
        #计算损失(均方误差)
        Loss=np.mean(np.square(y-pred))/2
        mse.append(Loss)
        #显示模型
        #plt.plot(x,pred)
        if i%display_step==0:
            print("i:%i,Loss:%f,w:%f,b:%f"%(i,mse[i],w,b))
    #模型和数据可视化
    plt.figure(figsize=(20,4))
    plt.subplot(1,3,1)
    #绘制散点图
    #张量和数组都可以作为散点函数的输入提供点坐标
    plt.scatter(x,y,color="red",label="销售记录")
    plt.scatter(x,pred,color="blue",label="梯度下降法")
    plt.plot(x,pred,color="blue")
    
    #设置坐标轴的标签文字和字号
    plt.xlabel("面积(平方米)",fontsize=14)
    plt.xlabel("价格(万元)",fontsize=14)
    
    #在左上方显示图例
    plt.legend(loc="upper left")
    
    #损失变化可视化
    plt.subplot(1,3,2)
    plt.plot(mse)
    plt.xlabel("迭代次数",fontsize=14)
    plt.ylabel("损失值",fontsize=14)
    #估计值与标签值比较可视化
    plt.subplot(1,3,3)
    plt.plot(y,color="red",marker="o",label="销售记录")
    plt.plot(pred,color="blue",marker="o",label="梯度下降法")
    plt.legend()
    plt.xlabel("sample",fontsize=14)
    plt.ylabel("price",fontsize=14)
    #显示整个绘图
    plt.show()
    
    

    在这里插入图片描述

    多元线性回归代码以及可视化结果

    #解析法实现多元线性回归
    #Realization of multiple linear regression by analytic method
    #导入库与模块
    import numpy as np
    import matplotlib.pyplot as plt 
    from mpl_toolkits.mplot3d import Axes3D
    #=======================【1】加载样本数据===============================================
    area=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])
    room=np.array([3,2,2,3,1,2,3,2,2,3,1,1,1,1,2,2])
    price=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])
    num=len(area) #样本数量
    #=======================【2】数据处理===============================================
    x0=np.ones(num)
    #归一化处理,这里使用线性归一化
    x1=(area-area.min())/(area.max()-area.min())
    x2=(room-room.min())/(room.max()-room.min())
    #堆叠属性数组,构造属性矩阵
    #从(16,)到(16,3),因为新出现的轴是第二个轴所以axis为1
    X=np.stack((x0,x1,x2),axis=1)
    print(X)
    #得到形状为一列的数组
    Y=price.reshape(-1,1)
    print(Y)
    #=======================【3】设置超参数===============================================
    learn_rate=0.001
    #迭代次数
    iter=500
    #每10次迭代显示一下效果
    display_step=50
    #=======================【4】设置模型参数初始值===============================================
    np.random.seed(612)
    W=np.random.randn(3,1)
    #=======================【4】训练模型=============================================
    mse=[]
    for i in range(0,iter+1):
        #求偏导
        dL_dW=np.matmul(np.transpose(X),np.matmul(X,W)-Y)   #XT(XW-Y)
        #更新模型参数
        W=W-learn_rate*dL_dW
        #得到估计值
        PRED=np.matmul(X,W)
        #计算损失(均方误差)
        Loss=np.mean(np.square(Y-PRED))/2
        mse.append(Loss)
        #显示模型
        #plt.plot(x,pred)
        if i % display_step==0:
            print("i:%i,Loss:%f"%(i,mse[i]))
    #=======================【5】结果可视化============================================
    plt.rcParams['font.sans-serif'] =['SimHei']
    plt.figure(figsize=(12,4))
    #损失变化可视化
    plt.subplot(1,2,1)
    plt.plot(mse)
    plt.xlabel("迭代次数",fontsize=14)
    plt.ylabel("损失值",fontsize=14)
    #估计值与标签值比较可视化
    plt.subplot(1,2,2)
    PRED=PRED.reshape(-1)
    plt.plot(price,color="red",marker="o",label="销售记录")
    plt.plot(PRED,color="blue",marker="o",label="预测房价")
    plt.xlabel("sample",fontsize=14)
    plt.ylabel("price",fontsize=14)
    plt.legend()
    plt.show()
    

    在这里插入图片描述

    总结

    注意点:选择归一化方式


    喜欢的话点个赞和关注呗!
    展开全文
  • 线性回归模型建模步骤 (一元线性回归、多元线性回归)
  • 一元线性回归:梯度下降法 一元线性回归是线性回归的最简单的一种,即只有一个特征变量。首先是梯度下降法,这是比较经典的求法。一元线性回归通俗易懂地说,就是一元一次方程。只不过这里的斜率截距要通过最小...
  • 一元线性回归与多元线性回归

    千次阅读 2019-02-03 11:39:29
    回归分析中,只包括一个自变量一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量自变量之间是线性关...
  • 一元线性回归,多元线性回归、逻辑回归概念学习
  • c语言线性回归,包括一元回归和多元回归的程序片段。 测试可运行
  • 介绍了线性回归分析的基础,如一元线性回归和多元线性回归
  • 一元线性回归 1、女士的身高-体重例子。--借助excel数据分析功能 2、气温-冰红茶销售量例子。--直接计算 多元线性回归 3、薪资-性别-年龄-教育程度例子。--借助excel数据分析功能 4、店铺营业额-店铺面积-离车站...
  • 基于spss的一元线性回归与多元线性回归案例,个人整理出的,包含了部分案例、实验报告、题目,及部分题目答案,适合作为spss、MATLAB等软件数据分析题目联系
  • 本节主要介绍了一元线性回归、多元线性、多项式回归。 重点介绍了summary里面每个参数的意义; 创建训练集、测试集; 多项式poly()函数以及I()函数的使用。 ###########一元线性回归############# > library...
  • 第11章 一元线性回归 11.1 变量间关系的度量 变量之间的关系可分为两种类型,即函数关系相关关系。其中,函数关系是一一确定的关系,给定一个自变量x,因变量y依确定的关系取相应的值;变量之间存在的不确定性的...
  • 一元线性回归clear;clc; %一元线性回归 x=[143,145,146,147,149,150,153,154,155,156,157,158,159,160,162,164]; y=[88,85,88,91,92,93,93,95,96,98,97,96,98,99,100,102]; X=[ones(length(y),1),x']; Y=y'; %b 参数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,781
精华内容 3,112
关键字:

一元线性和多元线性