精华内容
下载资源
问答
  • 一元线性回归预测

    千次阅读 2017-10-23 20:24:52
    一元线性回归预测法是分析一个因变量与一个自变量之间的线性关系的预测方法。 常用统计指标:平均数、增减量、平均增减量 一元线性回归预测基本思想 确定直线的方法是最小二乘法最小二乘法的基本思想:最有代表性...

    一元线性回归预测法是分析一个因变量与一个自变量之间的线性关系的预测方法。 常用统计指标平均数增减量平均增减量

     

    一元线性回归预测基本思想

    确定直线的方法是最小二乘法 最小二乘法的基本思想:最有代表性的直线应该是直线到各点的距离最近。然后用这条直线进行预测。

     

     

     

     

    一元线性回归预测模型的建立

     

    1、选取一元线性回归模型的变量 ;

    2、绘制计算表和拟合散点图 ;

    3、计算变量间的回归系数及其相关的显著性 ;

    4、回归分析结果的应用 。

     

    模型的检验

     

     1、经济意义检验:就是根据模型中各个参数的经济含义,分析各参数的值是否与分析对象的经济含义相符。

     2、回归标准差检验

     3、拟合优度检验

     4、回归系数的显著性检验

     

    利用回归预测模型进行预测

     

    可以分为:点预测和置信区间预测法

    1、点预测法:将自变量取值带入回归预测模型求出因变量的预测值。

    2、置信区间预测法:估计一个范围,并确定该范围出现的概率。置信区间的大小的影响的因素:a、因变量估计值;b、回归标准差;C、概率度t;

     

    一元线性回归分析预测法模型分析

     

    一元线性回归分析预测法,是根据自变量x和因变量Y的相关关系,建立x与Y的线性回归方程进行预测的方法。由于市场现象一般是受多种因素的影响,而并不是仅仅受一个因素的影响。所以应用一元线性回归分析预测法,必须对影响市场现象的多种因素做全面分析。只有当诸多的影响因素中,确实存在一个对因变量影响作用明显高于其他因素的变量,才能将它作为自变量,应用一元相关回归分析市场预测法进行预测。

      一元线性回归分析法的预测模型为:

      \hat{Y}_t=a+bx_t    (1)

      式中,xt代表t期自变量的值;

      \hat{Y}_t代表t期因变量的值;

      a、b代表一元线性回归方程的参数。

      a、b参数由下列公式求得(∑代表\sum^{n}_{i-1}):

      \begin{cases}a=\frac{\sum Y_i}{n}-b\frac{\sum X_i}{n}\\b=\frac{n\sum X_{i}Y_{i}-\sum X_i\sum Y_i}{n\sum X^2_i-(\sum X_i)^2} \end{cases}

      为简便计算,我们作以下定义:

      \begin{cases}S_{xx}=\sum(X_i-\bar{X})^2=\sum X^2_i-\frac{(\sum X_i)^2}{n}\\S_{yy}=\sum(Y_i-\bar{Y})^2=\sum Y^2_i-\frac{(\sum Y_i)^2}{n}\\S_{xy}=\sum(X_i-\bar{X})(Y_i-\bar{Y})=\sum X_i Y_i-\frac{\sum X_i\sum Y_i}{n}\end{cases}    (2)

      式中:\bar{X}=\frac{\sum X_i}{n},\bar{Y}=\frac{\sum Y_i}{n}

      这样定义a、b后,参数由下列公式求得:

      \begin{cases}a=\bar{Y}-b\bar{X}\\b=\frac{S_{xy}}{S_{xx}}\end{cases}    (3)

      将a、b代入一元线性回归方程Yt = a + bxt,就可以建立预测模型,那么,只要给定xt值,即可求出预测值\hat{Y}_t

      在回归分析预测法中,需要对X、Y之间相关程度作出判断,这就要计算相关系数r,其公式如下:

      r=\frac{\sum(x_i-\bar{X})(Y_i-\hat{y})}{\sqrt{\sum(x_i-\bar{x})^2\sum(y_i-\bar{y})^2}}=\frac{S_{xy}}{\sqrt S_{xx}\bullet{S_{yy}}}

      相关系数r的特征有:

      ①相关系数取值范围为:-1≤r≤1 。

      ②r与b符合相同。当r>0,称正线性相关,Xi上升,Yi呈线性增加。当r<0,称负线性相关,Xi上升,Yi呈线性减少。

      ③|r|=0,X与Y无线性相关关系;|r|=1,完全确定的线性相关关系;0<|r|<1,X与Y存在一定的线性相关关系;|r|>0.7,为高度线性相关;0.3<|r|≤0.7,为中度线性相关;|r|≤0.3,为低度线性相关。

      r=\frac{S_{xy}}{\sqrt{S_{xx}\bullet S_{yy}}}    (4)

     

     

     

     

     

     

     

    展开全文
  • 用python实现一元线性回归方法与区间估计

    万次阅读 多人点赞 2018-05-13 00:31:13
    一元线性回归方法 本文参考浙大《概率论与数理统计》第四版使用python进行实现一元线性回归分析方法,在文末会介绍一个应用实例,有关详细理论可参见书藉,或者参考百度文库下该章对应课件: 浙大四版概率认与数理...

    一元线性回归方法

    本文参考浙大《概率论与数理统计》第四版使用python进行实现一元线性回归分析方法,在文末会介绍一个应用实例,有关详细理论可参见书藉,或者参考百度文库下该章对应课件:
    浙大四版概率认与数理统计《一元线性回归》

    关于浙大版的概率论我个人还是比较推崇的,该书讲解得非常深刻清晰,无论你是考研还是想系统学习下概率论与数理统计,这都是一本不错的书藉。在原书《一元线性回归》一章中同时介绍了非线性回归的分析方法,本文不做扩展,后续有时间会再出python实现举例。
    以下对一元线性回归方法做下简介:

    回归模型

    对于一元线性回归模型:

    μ(x)=a+bx(1) (1) μ ( x ) = a + b x

    假设对于 x x 每个都有Y~ N(a+bx,σ2) N ( a + b x , σ 2 ) , a,b,σ a , b , σ 都是不依赖于 x x 的未知参数
    ε=Y(a+b)x , 那么就可以得到一元线性回归模型
    Y=(a+b)x+ε,ε to N(0,σ2)(2) (2) Y = ( a + b ) x + ε , ε   t o   N ( 0 , σ 2 )

    其中 Y Y 表示 x的线性函数 , ε ε 代表随机误差

    参数估计

    求解上述一元回归线性方程,即实现对 a,b, a , b , 的求解 ,在高中的线性拟合的课程就学到了最小二乘法。 为了实现误差的分析, 这里采用最大似然法,可以得到 σ σ 的估计(相关证明略)

    μ^(x)=a^+b^x μ ^ ( x ) = a ^ + b ^ x 称为 x x 经验回归函数, 其中 a^,b^分别是 a,b a , b 的最优估计

    b^=LxyLxx,a^=y¯b^x¯(3) (3) b ^ = L x y L x x , a ^ = y ¯ − b ^ x ¯

    其中相应中间计算值如下
    x¯=1ni=1nxi, y¯=1ni=1nyi(4) (4) x ¯ = 1 n ∑ i = 1 n x i ,   y ¯ = 1 n ∑ i = 1 n y i


    (5)Lxx=i=1n(xix¯)2

     Lyy=i=1n(yiy¯)2(6) (6)   L y y = ∑ i = 1 n ( y i − y ¯ ) 2

     Lxy=i=1n(xix¯)(yiy¯)(7) (7)   L x y = ∑ i = 1 n ( x i − x ¯ ) ( y i − y ¯ )

    现在求解 σ σ 的估计 sigma^ s i g m a ^ ,令 Qe Q e 表示残差平方和则可以证明 Qeσ2 obey χ2(n2) Q e σ 2   o b e y   χ 2 ( n − 2 )
    从而 σ2 σ 2 的无偏估计量为
    σ2=Qen2=1n2[LYYb^LxY](8) (8) σ 2 = Q e n − 2 = 1 n − 2 [ L Y Y − b ^ L x Y ]

    相关系数与决定系数

    线性拟合过程中,一般用到相关系数 R R . 由于用来它反应线性回归程度结果过于乐观,一般用它的平方决定系数
    R2来反应线性回归程度, 有

    R2=L2xyLxxLyy(9) (9) R 2 = L x y 2 L x x L y y

    R2 R 2 接近于1时,说明回归效果显著

    线性假设的显著性检验

    检验假设: H0:b=0,H1:b0 H 0 : b = 0 , H 1 : b ≠ 0
    如果接受 H0 H 0 则表示线性回归结果不显著, 否则回归结果显著,
    求解可得 H0 H 0 的拒绝域为:

    |t|=|b|σ^Lxxtα/2(n2)(10) (10) | t | = | b | σ ^ L x x ≥ t α / 2 ( n − 2 )

    式(10)表明如果满足H_0拒绝域条件,则可以一定置信水平 α α 认为线性回归结果显著

    参数的置信区间

    当回归效果显著时, 对系数 b b 作区间估计, 系数 b的置信水平为 的置信区间为

    (b^±tα/2(n2)×σLxx)(11) (11) ( b ^ ± t α / 2 ( n − 2 ) × σ L x x )

    同理得到相应 a a 的置信区间
    (12)(a^±tα/2(n2)×σx¯Lxx)

    点预测与预测区间

    假设 Y0 Y 0 x=x0 x = x 0 处对 Y Y 的观察结果 。 Y^0=a^+b^x0 Y0 Y 0 的点预测, 给定一定置信水平 α α 得到相应的预测区间

    (Y^0±tα/2(n2)σ^1+1n+(x0x¯)2Lxx)(13) (13) ( Y ^ 0 ± t α / 2 ( n − 2 ) σ ^ 1 + 1 n + ( x 0 − x ¯ ) 2 L x x )

    其意味着给定观察值 Y0 Y 0 , 有一定的 1α 1 − α 把握认为式(13)预测区间内

    python 实现

    以下章节使用python实现上述线性回归模型及应用实例分析, python需要安装numpy, matplotlipscipy实现函数支持

    一元线性回归方法python 实现

    结合第一章节的理论,用python实现 a,b,σ a , b , σ 的估计, 线性回归显著性检验,及参数相应置信水平置信区间及点的预测区间计算。代码实现如下:

    #一元线性回归模型
    import scipy.stats as sst
    import numpy as np
    import matplotlib.pylab as plt
    from matplotlib.widgets import Cursor
    import csv
    
    
    #对升序序列找到对匹配val值最接近的点坐标
    def index_fit(y, val):
        if val >= y[-1]:
            return len(y) - 1
        for i, yi in enumerate(y):
            if val >= yi and val <= y[i + 1]:
                if abs(val - yi) <= abs(val - y[ i + 1]):
                    fit_index = i
                else:
                    fit_index = i+1
                break
        return fit_index
    
    #用于计算Lxx, Lyy
    def laa(x):
        x_mean = np.mean(x)
        lxx = np.sum((x-x_mean)**2)
        return lxx
    
    #用于计算Lxy
    def lab(x,y):
        x_mean = np.mean(x)
        y_mean = np.mean(y)
        lxy = np.sum((x-x_mean)*(y-y_mean))
        return lxy
    
    
    #一元线性回归模型
    def polyfit_one(x, y, alpha):
        assert len(x) == len(y)
        n = len(x)
        assert n > 2
        lxx = laa(x)
        lyy = laa(y)
        lxy = lab(x, y)
    
        R = lxy/(np.sqrt(lxx) * np.sqrt(lyy))
        R2 = R*R   #计算相关系数与决定系数
    
        b_est = lxy/lxx  #计算b估计
        x_mean = np.mean(x)
        y_mean = np.mean(y)
        a_est = y_mean - b_est * x_mean   #计算a估计
        Qe = lyy - b_est * lxy
        sigma_est2 = Qe / (n - 2)
    
        sigma_est = np.sqrt(sigma_est2) #sigma估计
    
        test = np.abs(b_est * np.sqrt(lxx))/sigma_est
        test_level = sst.t.ppf(1 - alpha/2, df=n - 2)
        linear_test = test > test_level   #线性回归检验
    
        #a,b的置信区间
        b_int = [b_est - test_level * sigma_est / np.sqrt(lxx), b_est + test_level * sigma_est / np.sqrt(lxx)]
        a_int = [y_mean - b_int[1] * x_mean, y_mean - b_int[0] * x_mean]
    
        poly_int = (a_int, b_int)
    
        poly_val = (a_est, b_est)
    
        #返回回归模型相应参数
        test_val = {'R': R,
                    'R2': R2,
                    'linear_test': linear_test,
                    'poly_int': poly_int,
                    }
        process_val = {'lxx': lxx,
                       'lyy': lyy,
                       'lxy': lxy,
                       'sigma_est': sigma_est,
                       'x_mean': x_mean,
                       'y_mean': y_mean,
                       'test_level': test_level,
                       'ndim': n,
                       }
        return (poly_val, test_val, process_val)
    
    #计算相应的预测区间
    def confidence_interval(y0=None, *args, **kwargs):
        a_est, b_est = args
        sigma_est = kwargs['sigma_est']
        test_level= kwargs['test_level']
        lxx = kwargs['lxx']
        n = kwargs['ndim']
        x_mean = kwargs['x_mean']
    
        if isinstance(y0, (int, float, np.ndarray)):
            x0 = (y0 - a_est) / b_est
        elif isinstance(y0, (list, tuple)):
            y0 = np.array(y0)
            x0 = (y0 - a_est) / b_est
        else:
            return None
    
        conf_down = y0 - test_level * sigma_est * np.sqrt(1 + 1 / n + ((x0 - x_mean) ** 2 / lxx))
        conf_up = y0 + test_level * sigma_est * np.sqrt(1 + 1 / n + ((x0 - x_mean) ** 2 / lxx))
    
        confidence_interval = (conf_down, conf_up)
    
        return confidence_interval

    应用说明

    本节将以实际的应用举例阐述下一元线性回归模型的使用与分析(博主工作时曾用该模型对工程数据进行参数拟合与风险把控取到了不错的效果,当然工作中的数据是不会给出来的)。这里采用百度文库一篇论文关于铜丝阻抗与温度关系的数据,数据链接如下:
    铜丝阻抗与温度数据

    本文已将它提取成csv格式文件, 为了方便理解,以下同时以列表形式给出

    Temperature/DegreeCelsius Resistance/Millohm
    04380
    104560
    204700
    304860
    405080
    505240
    605400
    705580
    805740
    905960
    1006060
    1106260
    1206440
    1306580
    1406740
    1506940
    1607120
    1707280
    1807420
    1907600
    2007780

    针对以上数据,以下进行线性回归模型分析。

    区间预测

    上述数据通过excel或者其他工具可以发现,阻抗与温度之间存在很好的线性关系,如下图
    阻抗与温度关系

    区间估计时一般取95%置信水平,由于数据之间非常好的线性水平这里将采用99%置信水平,进行区间预测。
    效果如下:
    阻抗-温度线性回模型

    上图中在拟合直线两边的虚线即为相应数据的99%预测区间。 设想如果铜丝阻抗有效工作阻抗在[4500,7000]这个范围内,
    那么铜丝工作的合适温度在哪个范围?一种想法是用拟合的直线表达式进行换算温度即可。但这是不够的,因为这种方法
    并没有考虑误差的影响。引入了概率分析后,线性回归模型的一个好处就是可以对误差进行理论分析。如上图的紫色与红色横虚线,分别对应了假想的合理阻抗范围。 我们期待的是任意一个温度,基于该温度的点的在一定置信水平的预测区间均落在这两条线之内。 以99%的置信的水平,可以得到建议的温度范围是[10.01, 151.14], 此时可以发现铜丝的预测阻抗分别是4552.55与 6950.95 , 相对于理想的阻抗左右各压缩了50m 安全区间。可能读者觉得这点变化并不足为奇,这是因为原数据之间存在很好的线性关系,以致于不采用线性回归模型仅作拟合就能做一个基本的判断。
    如果实验的环境并不是很好,或铜丝的质量不是很好(实际这是存在的),那么结果有如何呢? 我们对原数据加入40dB的相对噪声, 此时的温度-数据关系如下:
    加入噪声阻抗与温度关系
    with noise
    可以发现两次拟合的关系式差别不大,但是噪声使得预测点相应置信水平的预测区间放大了,此时如果想保证铜丝阻抗在[4500,7000]这个范围,99%置信下的温度保证范围在[17.41, 144.51] 此时的变化相对来说就不小了。

    另外在代码中, 可以比较加入噪声前后,未加入模拟噪声前的噪声估计 σ^1 σ ^ 1 是 19.08,加入模拟噪声 σ^n σ ^ n 的实际功率是49.71,加入后的噪声估计 σ^2 σ ^ 2 是57.29 , 可以发现 σ^22σ^21+σ^2n σ ^ 2 2 ≈ σ ^ 1 2 + σ ^ n 2 。这与线性回归的噪声估计刚好一致。

    同时需要说明的是,对一个点取 1α 1 − α 得到相应水平的预测区间, 但当如果对一个区间卡控时 ,相应的区间边界置信水平是 1α/2 1 − α / 2 . 如上例阻抗的卡控范围是[4500,7000], 99%的置信水平上边界7000为例相应的边界7000以上的可能性是0.5%, 所以边界的置信水平是99.5%。 所以以99%的水平判断边界时,可设置 α=0.02 α = 0.02

    异常点剔除

    继续阐述下线性模型的应用, 仍以采用上述阻抗与温度的例子。在线性拟合过程,读者可能有疑问,是否所有的点都应该纳入进行回归计算; 是否存在干扰点会影响线性拟合的结果; 如果存在这样的点怎么判断和剔除?

    参上,在线性回归模型已经对每个点在一定置信水平下的预测区间, 那么基于整体可以以一定的置信水平去剔除落在预测区间外的点。以上述数据为例,将温度为80的阻抗5740改成5400(做为记录误差或人为操作误差),仍以99%的置信水平,
    作图如下:
    with abnormal
    加入异常点后,可以发现在原模型中,温度为80的铜丝阻抗在预测区间外,因此有99%的把握判断其为异常点,剔除后作图如下 :
    delete abnormal
    剔除异常点后,对比可以发现,剔除异常点后模型与原来温度不是80时更加接近。

    最后,需要说明的是,该模型仅在线性关系下成立, 同时一些可以转化为线性模型的数据也适用,如指数与对数模型。
    像上述阻抗与温度的关系的数据较为理想, 大部分存在线性关系的模型受噪声影响波动时,像20个样本点显然求出的模型
    会不太准确,显然样本的数量也会影响模型的准确性。

    以下是实验代码(结合上半部分代码一起阅读):

    # 构建回归模型图示,
    # #parama:alpha 置信水平 ,fignum表示绘画窗口号,
    #         kwargs 设置ylimit line:ylimit_down, ylimit_up , axis tick: ytick_down, ytick_up
    #         xlabel, ylabel, lengend label, xtick, ytick,title
    def figure_drawing(x,y,alpha, fig_num, **kwargs):
        poly_val, test_val, process_val = polyfit_one(x, y, alpha)
        down_zone = confidence_interval(4500, *poly_val, **process_val)
        up_zone = confidence_interval(7000, *poly_val, **process_val)
    
        print(poly_val)
        print(test_val)
        print(process_val)
        print(down_zone, up_zone)
        print("Linear Test:", test_val['linear_test'])
    
        R2 = test_val['R2']
        f = plt.figure(fig_num)
        # seaborn.set()
    
        ax = f.add_subplot(111)
    
        ylimit_down = kwargs['ylimit_down']
        ylimit_up = kwargs['ylimit_up']
    
        tick_yd = kwargs['ytick_down']  # int(ylimit_down * 0.7)
        tick_yu = kwargs['ytick_up']  # int(ylimit_up * 1.3)
        Y_test = np.linspace(tick_yd, tick_yu, 1000) #从ticks上下限间取1000个点
        X_test = (Y_test - poly_val[0]) / poly_val[1]
    
        Y_down, Y_up = confidence_interval(Y_test, *poly_val, **process_val)
    
        xd = X_test[index_fit(Y_down, ylimit_down)]
        xu = X_test[index_fit(Y_up, ylimit_up)]
        yd = poly_val[0] + poly_val[1] * xd
        yu = poly_val[0] + poly_val[1] * xu
    
        xy_text1 = "(%.2f, %.2f)" % (xd, yd)
        xy_text2 = "(%.2f, %.2f)" % (xu, yu)
        poly_text = "y = %.2f *x  + %.2f " % (poly_val[1], poly_val[0])
        ax.plot(X_test, Y_test, '-b', label=poly_text)
    
        ax.plot(X_test, Y_down, '--g')
        ax.plot(X_test, Y_up, '--y')
        ax.scatter(x, y, s=10, c='r')
        xlabel = kwargs['xlabel']
        ylabel = kwargs['ylabel']
        ax.set_xlabel(xlabel)
        ax.set_ylabel(ylabel)
        xticks = kwargs['xticks']
        yticks = kwargs['yticks']
        ax.set_yticks(yticks)
        ax.set_xticks(xticks)
    
        title = kwargs['title'] + "\n $R^2$ =%f" % R2
        ax.set_title(title)
    
        plt.setp(ax.xaxis.get_majorticklabels(), rotation=-30)
    
        plt.axvline(xd, linestyle='-', color='purple', label="XL:%.2f " % xd)
        plt.axvline(xu, linestyle='-', color='cyan', label="XH:%.2f " % xu)
    
        legend = ax.legend(loc="upper left")
        legend_f = legend.get_frame()
        # legend_f.set_alpha(0)
        legend_f.set_facecolor("white")
    
    
        plt.annotate(xy_text1, xy=(xd, yd),
                     xycoords='data',
                     xytext=(+20, -30), textcoords='offset points',
                     fontsize=10, arrowprops=dict(arrowstyle="->", connectionstyle="arc3, rad= -.3"))
    
        plt.annotate(xy_text2, xy=(xu, yu),
                     xycoords='data',
                     xytext=(+20, -30), textcoords='offset points',
                     fontsize=10, arrowprops=dict(arrowstyle="->", connectionstyle="arc3, rad= -.3"))
    
        plt.axhline(ylimit_down, linestyle=':', color='brown')
        plt.axhline(ylimit_up, linestyle=':', color='darkblue')
        plt.grid(True)
    
    
        return poly_val, process_val
    
    #从csv文件里面读取x,y
    def read_xy(file_path):
        with open(file_path,encoding="utf-8") as fp:
            csv_reader = csv.reader(fp)
            x = []
            y = []
            for ri,row in enumerate(csv_reader):
                if ri == 0:
                    continue
                x.append(float(row[0]))
                y.append(float(row[1]))
        return np.array(x), np.array(y)
    
    def add_gausian_noise(xtest, snr):
        snr = 10**(snr/10.0)
        xpower = np.sum(xtest**2)/len(xtest)
        npower = np.sqrt(xpower / snr)
        noise = np.random.randn(len(xtest))*npower
        # print("add noise:", noise)
        #受限于信号长度,实际噪声与理论噪声会有一定出入
        print("noise real power", np.sqrt(np.sum(noise**2/len(xtest))))
        return noise
    
    if __name__ == "__main__":
        x, y = read_xy('Resistance to Temperature.csv') #读入数据
        y = y + add_gausian_noise(y, 40)  # 原信号本身存在噪声,可自行判断是否再加入噪声
        fig_opt = {
            'title':  'Resistance to Temperature with 99% confidence',
            'xlabel': 'Temperature /$\degree$C ',
            'ylabel': 'Resistance /m$\Omega$',
            'ylimit_down': 4500,
            'ylimit_up': 7000,
            'ytick_down': 4000,
            'ytick_up': 8000,
            'xticks': np.arange(-20, 210, 10),
            'yticks': np.arange(4000, 8000, 500),
        }
        poly_val, process_val = figure_drawing(x, y, 0.01, 1, **fig_opt)
        reserve_i = []
        # 剔除异常点
        for i, xi in enumerate(x):
            y0 = poly_val[0] + poly_val[1] * xi
            if y[i] >= confidence_interval(y0, *poly_val, **process_val)[0] and\
                    y[i] <= confidence_interval(y0, *poly_val, **process_val)[1]:
                reserve_i.append(i)
        x = x[reserve_i]
        y = y[reserve_i]
        print(reserve_i)
        print(len(reserve_i))
        #剔除异常点后,再进行线性回归图示,此时取alpha为之前的两倍
        figure_drawing(x, y, 0.02, 2, **fig_opt)
        #添加游动光标
        cursor = Cursor(plt.gca(), horizOn=True, color='black', lw=1)
        plt.show()

    如有疑惑,可以通过邮件huangshiyang7197@foxmail.com 进行交流

    博文预告: 下一篇博文将会介绍如何用python进行网络爬虫,结合pyecharts进行全国影院密度分布图,点个关注加期待哟!

    展开全文
  • 通过研究一元线性回归分析法,发现运用埋深与瓦斯含量两者的一元线性回归预测的瓦斯含量很多低于实际值,存在安全隐患。为此提出了通过求解瓦斯含量的置信区间,把置信上限设为瓦斯含量的安全预测值,作为对传统的瓦斯...
  • 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 ) 确定回归系数的点估计值
    其中, Y n*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.

    没有常数项的意思!
    展开全文
  • 一元线性回归,初次看的这个名词的人,可能会联想到一元一次方程,没错一元线性回归就是一元一次方程,一元一次方程在我们学习的方程组里估计是最简单的一种了,然而就是这最简单的一元线性回归确构成了复杂统计分析...

    目录

    一元线性回归流程描述

    一元线性回归总结


    一元线性回归流程描述

    一元线性回归,说简单也挺简单的,说复杂也挺复杂的,整体如下这么个过程

    一元线性回归总结

    相关系数总结:

    • 一元线性回归分析中用的相关系数是线性相关系数
    • 相关系数大,只代表线性相关性较强,不代表因果关系
    • 相关系数小,只代表线性相关性较弱,不代表非线性相关性弱

    一元线性回归分析预测总结:

    • 预测时的x变量,应当在训练模型x样本中的min和max之间,超出这个范围的预测将会不准确。
    • 预测完毕后,有必要进行残差分析,以验证是否符合正太分布,预测的前提就是残差符合正太分布
    • 预测的区间范围,在x均值附近最小,也最精确,里x均值越远预测区间越大,越不精确
    • 预测区间永远要比置信区间要宽
    展开全文
  • 1.9一元线性回归

    2020-05-16 08:15:00
    一元线性回归一元线性回归模型一元线性回归的参数估计最小二乘估计最大似然估计最大似然估计数学推导有偏估计与无偏估计参数估计的性质一元线性回归的显著性检验一元线性回归的残差分析一元线性回归模型的应用 一元...
  • spss系列——一元线性回归的分析与预测实例

    千次阅读 多人点赞 2021-01-21 16:41:29
    spss系列——一元线性回归的分析与预测实例散点图回归系数二级目录三级目录 本文主要利用某商店记录了12个月的销售收入yyy(亿元)和广告费xxx(亿元),研究某广告对销售收入的影响,其数据见下表所示。 销售收人与...
  • 006 一元线性回归

    2019-02-24 11:40:00
     一元线性回归的参数估计  一元线性回归的显著性校验  一元线性回归的残差分析  一元线性回归模型的应用 一:参数估计 1.一元线性回归模型  在研究某一现象时,主要关心与影响最主要因素关系时,两者有...
  • R语言中文社区专栏作者知乎ID:https://www.zhihu.com/people/herain-14前言数据挖掘的学习中,一元线性回归,通过现实生活中的企业销售和广告支出这两者之间的联系,进行线性回归模型的学习和形成商业二维变量分析...
  • matlab一元线性回归及多元线性回归方程

    万次阅读 多人点赞 2019-08-07 16:15:15
    %%1、bint表示回归系数区间估计 %2、r表示残差 %3、rint代表置信区间 %4、stas表示用于检验回归模型的统计量,有三个数值 r^2 F 与F对应的概率P 例如p<0.05 残差95% % r^2越接近于1,回归方程越显著 %alpha表示...
  • 这一章前半部分讲了一元回归模型 中 和 进行假设检验和置信区间的计算。因为其计算方法与第三章的统计学复习中涉及到的关于 的假设检验与置信区间计算部分十分相似,所以前两节并无明显的新内容。第三节讲了一元回归...
  • 一元线性回归模型,若算得参数aaa,bbb和σ2\sigma^2σ2的估计量a∧\stackrel{\wedge}{a}a∧,b∧\stackrel{\wedge}{b}b∧​和σ2∧\stackrel{\wedge}{\sigma^2}σ2∧。设x=x0x=x_0x=x0​为一指定值,依E(Y0)=ax0+...
  • R语言 一元线性回归

    2016-03-20 18:16:58
    r语言实现一元线性回归
  • 1.一元线性回归模型的数学形式 2.回归参数β0, β1的估计 3.最小二乘估计的性质  线性性  无偏性  最小方差性 一、一元线性回归模型的数学形式  一元线性回归是描述两个变量之间相关关系的最简单的回归...
  • 一元线性回归及Excel回归分析

    千次阅读 2019-06-08 19:26:54
    一元线性回归可以说是数据分析中非常简单的一个知识点,有一点点统计、分析、建模经验的人都知道这个分析的含义,也会用各种工具来做这个分析。这里面想把这个分析背后的细节讲讲清楚,也就是后面的数学原理。 什么...
  • 一元线性回归的点估计和区间估计

    千次阅读 2019-10-08 13:51:51
    一元线性回归模型 假设对于的每一个值,有~,其中都是不依赖的未知参数,即: ,~,称为随机误差。 假设样本为 点估计 最小二乘估计 最小二乘法的判断标准是:样本回归线上的点和真实观测点的“总体误差”即二者...
  • 一元线性回归

    2019-06-07 12:47:25
    回归方程模型: y(x)=a+bx 残差平方和函数 若要模型最优,即残差平方和最小。 对残差平方和函数求偏导,在偏导函数等于0时,残差平方和最小 解得: 代码 > b=Sxy/(Sx)^2 > b [1] 1.1 > a=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 参数...
  • 第11章 一元线性回归 11.1 变量间关系的度量 变量之间的关系可分为两种类型,即函数关系和相关关系。其中,函数关系是一一确定的关系,给定一个自变量x,因变量y依确定的关系取相应的值;变量之间存在的不确定性的...
  • 一元线性回归分析 多元线性回归 逻辑回归 其他回归分析 一、回归分析概述 (一)回归分析的定义与分类 (二)回归分析的过程 (1)收集一组包含因变量和自变量的数据; (2)根据因变量和自变量之间的关系,初步...
  • 1β0​,β1​的估计与性质1.3 回归方程的显著性检验以及检验等价1.3.1 β1\beta_1β1​的t检验1.3.2 回归方程的显著性F检验1.3.3 相关系数1.3.4 一元线性回归下三者的等价性证明1.4 残差分析1.5 回归系数的区间估计...
  • 第三章 一元线性回归

    千次阅读 2020-03-04 22:33:15
    第三章 一元线性回归
  • 在博文《一元线性回归未知参数的点估计》中利用scipy.stats的linregress函数,计算了总体分布N(ax+b,σ2)N(ax+b, \sigma^2)N(ax+b,σ2)的未知参数aaa,bbb和σ2\sigma^2σ2的无偏估计a∧\stackrel{\wedge}{a}a∧,b...
  • 简要:实际上计量模型估计和实现最好用的软件还是stata,这个软件无论在国内还是国外,经济学家们都...下一节,我们将选取上海两家股票历史价格数据来进行进一步的实证建模和预测,来展示一元线性回归模型的实用之处。

空空如也

空空如也

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

一元线性回归区间预测