精华内容
下载资源
问答
  • 多元线性回归分析

    2021-10-28 10:12:19
    文章目录1,概念2,用Excel进行多元线性回归1,删掉表里的不需要的项,即非数据项2,分析数据库3,代码方式实现多元线性回归1,导入包2,读取文件3,取出变量4,进行多元线性回归并得出结果5,结果6,检测异常7,...

    1,概念

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

    2,用Excel进行多元线性回归

    1,删掉表里的不需要的项,即非数据项

    在这里插入图片描述

    2,分析数据库

    在数据出鼠标右击
    在这里插入图片描述
    然后点击自定义功能区,点击加载项,再点击转到
    在这里插入图片描述再点击分析工具库,点击确定
    在这里插入图片描述
    再点击数据,点击右边的数据分析
    在这里插入图片描述

    选择回归
    在这里插入图片描述
    在这里输入x和y的输入区域
    在这里插入图片描述
    然后就会生成另一个文件,点开
    在这里插入图片描述可以看到intercept为截距,下面几行就是对应自变量的系数

    3,代码方式实现多元线性回归

    1,导入包

    import pandas as pd
    import numpy as np
    import seaborn as sns
    from sklearn import datasets
    from sklearn.linear_model import LinearRegression
    
    

    2,读取文件

    df = pd.read_csv('C:\\Users\\hp\\Desktop\\house_prices.csv')
    df.info()#显示列名和数据类型类型
    df.head(6)#显示前n行,n默认为5
    
    

    注意,这里的df = pd.read_csv()中填的是csv文件路径,就是我们要读取的文件的路径,根据每个人的不同

    3,取出变量

    #取出自变量
    data_x=df[['area','bedrooms','bathrooms']]
    data_y=df['price']
    
    

    4,进行多元线性回归并得出结果

    # 进行多元线性回归
    model=LinearRegression()
    l_model=model.fit(data_x,data_y)
    print('参数权重')
    print(model.coef_)
    print('模型截距')
    print(model.intercept_)
    
    

    5,结果

    在这里插入图片描述

    6,检测异常

    # 异常值处理
    # ================ 异常值检验函数:iqr & z分数 两种方法 =========================
    def outlier_test(data, column, method=None, z=2):
        """ 以某列为依据,使用 上下截断点法 检测异常值(索引) """
        """ 
        full_data: 完整数据
        column: full_data 中的指定行,格式 'x' 带引号
        return 可选; outlier: 异常值数据框 
        upper: 上截断点;  lower: 下截断点
        method:检验异常值的方法(可选, 默认的 None 为上下截断点法),
                选 Z 方法时,Z 默认为 2
        """
    
        if method == None:
            print(f'以 {column} 列为依据,使用 上下截断点法(iqr) 检测异常值...')
            print('=' * 70)
            # 四分位点;这里调用函数会存在异常
            column_iqr = np.quantile(data[column], 0.75) - np.quantile(data[column], 0.25)
            # 1,3 分位数
            (q1, q3) = np.quantile(data[column], 0.25), np.quantile(data[column], 0.75)
            # 计算上下截断点
            upper, lower = (q3 + 1.5 * column_iqr), (q1 - 1.5 * column_iqr)
            # 检测异常值
            outlier = data[(data[column] <= lower) | (data[column] >= upper)]
            print(f'第一分位数: {q1}, 第三分位数:{q3}, 四分位极差:{column_iqr}')
            print(f"上截断点:{upper}, 下截断点:{lower}")
            return outlier, upper, lower
        # ===================== Z 分数检验异常值 ==========================
        if method == 'z':
            print(f'以 {column} 列为依据,使用 Z 分数法,z 分位数取 {z} 来检测异常值...')
            print('=' * 70)
            mean, std = np.mean(data[column]), np.std(data[column])
            upper, lower = (mean + z * std), (mean - z * std)
            print(f"取 {z} 个 Z分数:大于 {upper} 或小于 {lower} 的即可被视为异常值。")
            print('=' * 70)
            # 检测异常值
            outlier = data[(data[column] <= lower) | (data[column] >= upper)]
            return outlier, upper, lower
    
    

    7,得到异常集并进行丢弃

    outlier, upper, lower = outlier_test(data=df, column='price', method='z')#获得异常数据
    outlier.info(); outlier.sample(5)
    df.drop(index=outlier.index, inplace=True)#丢弃异常数据
    
    

    8,取出自变量和因变量

    #取出自变量
    data_x=df[['area','bedrooms','bathrooms']]
    data_y=df['price']
    
    

    9,进行多元线性回归

    # 进行多元线性回归
    model=LinearRegression()
    l_model=model.fit(data_x,data_y)
    print('参数权重')
    print(model.coef_)
    print('模型截距')
    print(model.intercept_)
    
    

    10,结果

    在这里插入图片描述

    4,用线性回归模型的统计学库实现

    1,导入函数

    数据的预处理都是一样的,只是后面的导入的函数不一样了

    # 对名义变量neighborhood进行处理
    # 设置虚拟变量
    nominal_data = df['neighborhood']
    # 设置虚拟变量
    dummies = pd.get_dummies(nominal_data)
    dummies.sample() # pandas 会自动帮你命名
    # 每个名义变量生成的虚拟变量中,需要各丢弃一个,这里以丢弃C为例
    dummies.drop(columns=['C'], inplace=True)
    dummies.sample()
    # 对名义变量style进行处理
    # 设置虚拟变量
    nominal_style_data = df['style']
    # 设置虚拟变量
    style_dummies = pd.get_dummies(nominal_style_data)
    style_dummies.sample() # pandas 会自动帮你命名
    # 每个名义变量生成的虚拟变量中,需要各丢弃一个,这里以丢弃lodge
    #原因:转化后的虚拟变量需要舍弃一个,才能得到满秩矩阵,可理解为当变量名可划分为n类时,只需要n-1个虚拟变量就能获取所有信息了
    style_dummies.drop(columns=['lodge'], inplace=True)
    style_dummies.sample()
    #数据拼接
    results = pd.concat(objs=[df, dummies], axis='columns') # 按照列来合并
    results = pd.concat(objs=[results, style_dummies], axis='columns') # 按照列来合并
    results.sample(3)
    
    

    2,进行预测

    from statsmodels.formula.api import ols
    #使用虚拟变量
    lm = ols('price ~ area + bedrooms + bathrooms + A + B', data=results).fit()
    lm.summary()
    
    

    在这里插入图片描述

    3,检验一下

    def vif(df, col_i):
        """
        df: 整份数据
        col_i:被检测的列名
        """
        cols = list(df.columns)
        cols.remove(col_i)
        cols_noti = cols
        formula = col_i + '~' + '+'.join(cols_noti)
        r2 = ols(formula, df).fit().rsquared
        return 1. / (1. - r2)
    test_data = results[['area', 'bedrooms', 'bathrooms', 'A', 'B']]
    for i in test_data.columns:
        print(i, '\t', vif(df=test_data, col_i=i))
    
    

    在这里插入图片描述可以看到bedroom和bathroom相关程度较高

    4,去掉bedroom,再次建模

    # 去掉bedroom再次建模
    lm = ols(formula='price ~ area + bathrooms + A + B', data=results).fit()
    lm.summary()
    
    

    在这里插入图片描述成功

    5,分析

    不进行数据处理时,用jupyter和使用excel进行数据分析的结果没有不同,但是数据清理之后差别还是挺大的,在就行了多元共线性检测后,结果更为合理

    6,总结

    初步了解了多元线性回归的步骤,也清楚了异常数据对于回归方程的影响,明白了Excel和jupyter的差别

    7,参考

    Excel-一元线性回归和多元线性回归(借助数据分析功能和直接计算)

    线性回归分析

    展开全文
  • 大家好!我又出现了(*^__^*) 嘻嘻。...目录多元线性回归(下)偏回归平方和部分系数显著性检验违背基本假设的情况异方差性异方差性检验异方差性问题处理方法一元加权最小二乘估计多元加权最小二乘估计自相关性自相关...

    大家好!我又出现了(*^__^*) 嘻嘻。刚结束PDE考试(不可避免的凉凉)我就赶紧过来完成了这一篇文章。

    这一节我们会结束多元线性回归的内容,并且会努力结束下一个部分——违背基本假设的情况的相关内容。

    提供之前的笔记:

    我们开始本节的内容。

    目录多元线性回归(下)偏回归平方和

    部分系数显著性检验

    违背基本假设的情况异方差性异方差性检验

    异方差性问题处理方法一元加权最小二乘估计

    多元加权最小二乘估计

    自相关性自相关系数法

    DW检验

    自相关性问题的处理方法迭代法

    差分法

    异常值与强影响点关于自变量

    异常删除残差

    关于自变量

    异常,强影响点强影响点的判定

    库克距离

    Box-Cox变换

    多元线性回归(下)

    偏回归平方和

    这一个概念其实是拟合优度里的内容,单独拉出来说的原因是它在理论上还有很多其余的重要的知识内容。

    我们在上一节中说过,偏相关系数是一个不错的衡量回归系数显著性的指标。但是有没有发现我们有说过对方程做显著性检验,也有说过对每个系数做显著性检验,却好像没有说过对部分系数做显著性检验。这就是偏回归平方和可以用到的地方。事实上,它和偏相关系数差别也不大。

    首先我们给出它的定义。Definition 1: Sum of squares of partial regression

    称为自变量

    的偏回归平方和,其中

    表示在原本p个变量中剔除

    后的剩下p-1个变量的回归出的残差平方和。

    类似定义。

    现在我们用它的思想来解决这个问题。

    部分系数显著性检验

    我们设

    。那么我们的目的是构造两个平方和的差,这样才有可能分离出部分变量的

    等,进而进行假设检验。

    因为

    (

    为帽子矩阵),而这个

    是由自变量的集合决定的。所以我们如果要构造只包含自变量集合

    的残差平方和,只需要设

    即可。

    为了尊重Prof,我们遵守原来的标记,设

    (这个命名在《数值线性代数》里用的比较多,因为它们都是投影(projector)矩阵),那么容易得到

    回想一下上一节我们怎么进行方程的显著性检验的?对,关键的问题就是要研究统计量矩阵表示中,最中间的那个矩阵。如果我们说明了它是二次型,就可以使用

    分布相关的知识。所以我们需要看看

    到底是个啥。

    首先我们要计算

    ,在第四节中,我们计算过,这里我们直接用那里的公式。

    其中

    因为计算

    还需要之前加一个

    ,之后加一个

    。所以把

    按照之前的规则分块,写开乘上

    的第一个部分,就是

    ,而第二项乘完相当于

    (注意

    为对称阵),所以加在一起我们容易得到最后的结果

    下面我们试试看,能不能证明这是一个对称幂等阵,如果证明出来了,就说明这是一个二次型,就可以说明它服从一个

    分布了。

    先试着把它平方一下看看

    所以我们关键要看

    分别是什么。事实上,你只需要注意到

    它左右都有一个

    ,而这个矩阵无论是左乘

    ,还是右乘,都能让矩阵变为0。所以我们事实上就证明了

    ,也就自然说明了对称幂等。

    现在,我们根据第五节的内容就可以得到

    分块就可以得到上面的结果。

    使用和上一节一样的分析思路,代入原假设的条件,看看非中心化参数是不是为0。有没有发现在

    的时候,确确实实

    服从一个中心

    分布,这也一定程度上说明了我们确实通过分离出

    的残差平方和实现了构造分布所需要的统计量。还有一个统计量,只需要根据

    ,就可以得到

    独立。所以这样的话,就可以得到下面的统计量

    这是针对

    的一个检验统计量。有兴趣的同学可以看看,当

    是一维的时候,它与我们上一节说的t检验是一致的。

    我们在这一节的推导中省略了较多的细节,如果发现推导出现困难,那就应该回去多看看之前的理论和思路了。

    违背基本假设的情况

    这是一个全新的部分,在这里我们会说明,在回归的三大基本假设不满足的情况下,会有什么可能的解决方案。为了防止大家有所遗忘,我这里再一次写一下所谓的Gauss-Markov条件。Definition 2: Gauss-Markov

    我们主要关注的就是违背G-M条件情况下,我们应该如何处理。

    异方差性

    数学上说就是

    。现实中这样的例子也有很多,比方说收入模型,贫穷如我的人整天就会想怎么才能吃饱,而富有的人就会在想双十一要买多少东西,这消费就不可能是一个量级。在异方差出现的时候,会有很多问题。比方说参数不再是最佳线性无偏估计(但依然无偏),显著性检验也失效了。所以回归的效果也很不理想。所以统计学家要想办法去侦测到它,并且努力去消除它。

    异方差性检验

    因为正常情况下,

    ,所以异方差性是可以通过残差看出来的。这就是残差图检验的由来。比方说我的残差长下面这个样子

    有没有看到随着观测的进行,它的方差越来越大了?所以这个时候就可以大概的判断出,它是存在异方差性的。但是这样的方法未免过于主观,而统计学家显然更喜欢用检验和p值的方法,所以就有了下面的秩相关检验。请注意,与前六节不同,我们这里提供的检验大部分都只是应用的用途,并不会提供相关的证明。Definition 3: Spearman test

    定义

    ,那么斯皮尔曼检验量为

    我们要强调的是这个是等级相关系数检验。在做检验之前需要先对模型做一次回归(虽然我们这里已经知道异方差性存在的情况下,回归没啥用了。但是如果你不做回归测试异方差性,你又怎么确定呢?)。得到

    。然后取残差的绝对值

    ,把

    都按照从高到低或者从低到高排序,最后标记二者的排位(就是第几大或者第几小),算出二者等级的对应差值计算出来就是

    。比方说一个数据的自变量值

    是第8大的,但是它的对应的残差绝对值

    是第3大的,那么对应的

    这个检验量在

    的时候是近似服从t分布的,因此如果检验量的值

    ,就可以认为没有异方差。

    异方差问题处理方法

    一元加权最小二乘估计(WLS)

    这是一种解决异方差性的方法。一般来说,如果我们什么都不管,那么实际上就是要最小化

    。要注意到的是这个和式的每一项的期望都是

    (因为异方差性假设存在,所以我们不再使用

    )。所以如果某一项方差越大,实际上这一项所占的比重就很大,那么为了最小化我们的离差平方和,就必须要让回归直线“尽量偏向”这个方差很大的数据点。实际生活中的情况也符合这样的预知。

    为了解决这个问题,我们把我们的平方和改一下,写成下面这个样子

    按照相同的方法进行回归,可得

    其中

    所以这个回归的关键就是如何选择我们的

    。直观上来看,因为每一项的期望是

    ,所以只需要让

    即可。是不是就这么简单的结束了?

    不好意思,没那么简单。理论可行,可是

    是啥你不知道啊。所以如果没有电脑,我们一般是通过残差图去“猜测”应该用什么权。比方说如果

    成正比,那么这个时候可以考虑拿

    去作为权函数。实际上我们也是一般用诸如

    这样的自变量的幂函数来构造权函数。

    当然了,如果你有电脑那就方便多了,直接考虑使用极大似然估计,找到让这个值最大的那个

    就好。

    多元加权最小二乘估计

    思路是完全类似的。

    我们设

    ,因为在一元的情况下,我们相当于每一个元素都加了一个权

    ,那么在这里,我们也想这么干,那矩阵的意义下就应该两边乘一个对角阵。因此我们设

    ,那么注意到这个时候,如果原来的方程是

    ,那么两边乘上矩阵

    就可以得到

    ,其中

    。那么这个时候,对应的估计值

    注意

    ,所以这自然就有办法可以让残差

    满足G-M条件了。

    当然了,多元本身也有一些其余的需要处理的地方,比如说我们的权函数。在一元中我们可以用自变量的幂函数构造。但是多元的情况,如果我们用每一个自变量的幂函数构造,那么对应的计算量可能就是

    级别的,所以一般都只使用其中一个自变量。所以我们用哪一个自变量呢?

    这也是有一个法则的,一般来说需要计算每一个自变量与变通残差(

    )的等级相关系数,取最大的那个构造即可。

    自相关性

    自相关性的意思就是

    。这在现实生活中也是很常见的。比如说金融危机一般都是要延后两三年才会有很显著的负面影响。又比如说回归中遗漏了关键变量。时间序列模型本质上也就是一种自相关的模型。

    在回归中,因为自相关相当于违背了G-M条件,所以会出现很多问题。比如参数估计值不再是BLUE了,MSE也会严重低估误差项的方差,这就会导致

    过高,所以F,t检验也就失效了。另外,最小二乘估计量也会对抽样的波动很敏感,意思是说

    虽然无偏,但是估计出来的值却可能严重歪曲真实情况。

    一样,如何检测自相关性?有一种方法是根据时间的顺序画出

    的残差关系图,这里我拿PPT上的图片来举例子。

    注意这里的残差是根据时间顺序画出来的。可以看出这相当于是说随着时间的推移,残差并不是散乱,而是有序,或者说以一个函数形式出现的。这就说明存在自相关性了。

    但是,使用图片总是不能够说服别人。所以我们需要一些更好的办法。

    自相关系数法

    我们先给出它的定义。Definition 4: Autocorrelation coefficient

    定义误差序列

    的自相关系数为

    这也是时间序列中一个很重要的统计量。和简单相关系数对比容易得到它的范围是

    因为误差是未知的,所以一般用残差

    代替。这样的到的

    因为和样本量有关,所以需要定义其余的量来处理它。

    DW检验

    这是一种检验自相关性的方法,但是它只能检验随机扰动项具有一阶自回归形式的序列相关问题。也就是说,它的误差满足下面的式子

    其中

    服从G-M条件。

    并且定义DW统计量为

    显然,这里序列相关性的原假设为

    。现在问题来了,DW值可以取到哪些呢?

    为了解决这个问题,我们只需要把它的分子展开一下。

    分子的第一项和第二项在

    比较大的时候是几乎相同的(所以一般来说DW检验要求

    ),而第三项与分母的比就是我们的

    。所以这个值其实大约为

    ,所以这样的话,我们大概可以推出它的范围为

    一般来说,我们会根据样本数

    和解释变量的数目

    ,查DW分布表来确定两个值

    再将

    分块,大家可以在网上查阅更多相关细节,这里我们略去。

    自相关问题的处理方法

    其实我们可以通过修改回归模型,增加自变量等方法解决相关问题。但是如果这二者都不行的话,就只能考虑下面的方法了。

    迭代法

    还是要以误差项存在一阶自相关来举例。并且我们假设模型为

    根据这个模型,让时间倒退一秒,就可以得到

    。所以为了消除自相关性,归根到底就是要让误差项回归到

    ,这就需要我们得到

    。所以我们来计算

    对应的变量做换元就能得到

    。这个时候可以看出误差项就满足G-M条件了。

    那么这样的方法可以看出如果真的误差项存在一阶自相关的话,那么很明显是有效的。但是实际情况并不总是如此,所以我们的方法是不停的迭代,直到我们的DW检验能够说明它没有自相关了为止,可以说是简单粗暴啊。

    差分法

    差分法的适用范围就更窄了,它是适用于原模型存在较高程度一阶自相关的情况才可使用。在迭代法的模型中我们设

    ,就可以得到一个差分法的模型

    对它做一个回归可以得到

    (注意从

    开始的原因是差分肯定只能从第二项开始才会有数据)。

    因为差分法更简单,且迭代法需要用样本估计自相关系数,而它的估计误差又会影响迭代法的效率,所以如果自相关系数很高的时候,一般优先考虑差分法。

    异常值与强影响点

    有的时候数据会有一些很诡异的点,这个时候也会导致对应的数据点产生较大的残差,同样是会让回归直线“尽量偏向”这些异常点,自然也会带来很大的麻烦。

    一般来说我们会分

    两个维度讨论异常值。

    关于因变量

    异常

    在数据分析中,刚开始总是要看有没有特别特别“高”的点。一般来说会认为超过

    的残差的话它就是异常值。但是问题在于,多元回归中

    ,其中

    为帽子矩阵

    的主对角线元素,这也就说明每一个数据点的误差是不相同的。那么单纯的因为它“特别高”就认为数据异常就不合适了。因为这很有可能是残差导致的,换句话说这个数据“特别高”不是因为它异常,而是因为它“就完全有可能这么高”。换句话说,因为误差是每一个数据点的固有性质,所以如果是因为残差特别大,导致某一个数据点像异常值,那么即使你剔除掉这个异常值,也不会对回归有任何帮助。

    那么应该如何去做呢?我们在之前介绍过一个学生化残差

    。看似通过把杠杆值的影响去除掉可以解决方差不等的问题,但是如果观测数据中真的存在异常值,学生化残差也没有什么卵用。这是因为这个时候,异常值的存在会使得回归线“偏向”它,进而使得回归的标准差

    实际上是偏大的。那么这样子的话,实际的学生化残差是偏小的,这就不能使用

    的原则来判断残差了。

    为了解决异常值的问题,我们需要别的办法。

    删除残差

    我们这么构造删除残差:针对第

    个观测值,我们计算它的残差时,用其余

    个观测值拟合回归方程,计算出第

    个观测值的删除拟合值

    ,那么这个值显然不会受到第

    个值是否是异常值的影响。所以我们定义删除残差为

    下面我们回到理论的模型下观察下这样的残差应该如何使用和检验。

    如果我们设原模型为

    ,那么对应的估计为

    ,并且残差为

    ,标准化残差为

    。现在我们删除第

    个观察值,让模型变为

    那么对应的估计即为

    。下面注意到

    (这一步我也不知道怎么来的,Prof和我们说不要求证明……)

    且有 (这可以通过矩阵分块看出来,注意设计矩阵按行分块就是每一个样本的数据,按列分块就是每一个自变量对应的数据)

    所以我们可以算出

    注意到最后一项中间有一个

    ,而剩下的部分是

    又正好与第三项重合。所以化简一下会有

    你应该还记得我们的残差是与

    有关系的,所以我们需要弄到

    的关系,这样才能构造出全新的残差表达式。那么注意到

    直观意义上,这相当于计算了“去掉了第

    个观测值之后的向量与去掉了第

    个预测值之差的2-范数”。那么如果我把

    改为

    改为

    ,就相当于增加了“第

    个观测值与第

    个通过未使用第

    个观测值的信息得到的预测值的差”。这可能有些绕,但是也许你通过下面的结果就可以帮助你理解。

    (这是为了弄出

    )

    注意到

    所以两个向量正交,平方和就是和的平方,可以得到

    简单计算容易得到

    所以最终可以得到残差平方和

    有了残差平方和,我们就可以考虑计算我们的删除学生化残差了。学生化残差是使用残差和对应的

    来构造的统计量(相关内容可以查看第2节一元或者第6节多元的情况)。所以删除学生化残差就自然是使用预测残差和对应的

    了。而因为

    有关,上面已经给出了表达式,所以不难得到

    下面自然是考虑预测残差的方差,进而构造分布。而预测残差我们上面也已经给出表达式,所以有

    因为我们是使用的部分数据(删除了第

    个观测值),所以自然是考虑使用

    作为

    的估计(因为虽然去掉了一个数据,但是注意到G-M条件是不变的,所以对应的误差的方差依然是

    )。这样就可以得到最终的结果

    总结一下这些漫长的证明,就是下面的结果Proposition 1:

    一般来说,认为

    的时候就是异常值点。

    关于自变量

    的异常值,强影响点

    这里主要涉及强影响点的概念。还是关于残差的方差式

    ,可以看出

    大的点残差小,因此如果观测值的杠杆值(

    )大,就会使得回归方程偏移产生影响。所以一般来说杠杆值大的点我们叫做强影响点,注意它不一定是

    的异常值。

    实际上,强影响点还是很需要被关注的,这是因为有可能它会暗示我们回归方程不再是线性的。同时也会使得回归方程“偏向”自身。所以不可避免的会产生一些影响。这就使得检测强影响点变得很有必要。

    不过另一方面,如果它不是

    的异常值,那么就不一定会说对回归产生影响。所以归根到底我们还是需要判断它是不是

    的异常值。所以总结一下就是两步:判断强影响点,判断是否是

    的异常值。

    强影响点的判定

    直觉上很明显,超过均值太多肯定就是不太正常的。根据这个思路,我们设

    ,那么这样的话注意到

    ,就可以得到

    。所以均值就是

    。实际情况下,如果某一个自变量对应的杠杆值

    ,就认为它是杠杆值。

    库克距离

    这也是一个较为常用的判定的公式

    实际情况是很复杂的,所以一般使用一个粗略的标准,认为

    就是异常值,

    就是非异常值。

    Box-Cox变换

    也叫方差稳定性变换。这是我们涉及的最后一个消除异方差的变换。

    因为要求

    ,所以这里我们要取

    。变换根据

    的不同而形式不同。

    这个变换几乎就是万能的了。比方说在

    的时候,其实数据就可以很好的消除异常值。比方说

    很大,但是在经过对数变换后,只要你不是高的很厉害,基本上都会让所有的

    保持差不多的高度。

    当然了,最终的目的自然是要

    。而实际情况下,我们也会取

    使得似然函数的值最大。

    注意到似然函数为

    其中

    为变换对应的Jacobian行列式。代入最小二乘回归的结果可以得到

    取对数即可。剩下的事情交给计算机吧。

    小结

    本节的内容量很大,我们主要是结束了多元线性回归的一些显著性检验的内容,并且相对简要的介绍了一下现实中常出现的基本假设不满足的情况会有什么常用的解决方案。注意到这里的很多内容我都没有贴出理论的证明,是因为它们一般都是用在计算机上的,重要性也没有一元,多元回归那些大,所以我们就只是把结论贴在那里,主要的操作还是交给计算机去做的。

    当然,只要涉及到理论和矩阵的东西,一般都是比较复杂的,这可能也是统计应该有的面目吧。

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

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

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

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

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

    展开全文
  • 当影响因变量的因素是多个时候,这种一个变量同时与多个变量的回归问题就是多元回归,分为:多元线性回归和多元非线性回归。这里直说多元线性回归。对比一元线性回归:1.1多元回归模型:1.2多元回归方程1.3估计的...

    当影响因变量的因素是多个时候,这种一个变量同时与多个变量的回归问题就是多元回归,分为:多元线性回归和多元非线性回归。这里直说多元线性回归。对比一元线性回归:

    1.1多元回归模型:

    1.2多元回归方程

    1.3估计的多元回归方程

    2.1**对参数的最小二乘法估计:** 和一元线性回归中提到的最小二乘法估计一样、这不过这里的求导变量多了点、原理是一样的、这里需要借助计算机求导、就不写了。

    3 回归方程的拟合优度:

    3.1

    多重判定系数:(Multiple coefficient of determination)

    注解:

    (1

    )对于多重判定系数有一点特别重要的需要说明:自变量个数的增加将影响到因变量中被估计的回归方程所解释的变量数量。当增加自变量时,会使预测误差变得较小,从而减小残差平方和SSE。自然就会是SSR变大。自然就会是R2变大。这就会引发一个问题。如果模型中增加一个自变量,即使这个自变量在统计上并不显著,R2的值也会变大。因此为了避免这个问题。提出了调整的多种判定系数(adjusted

    multiple coefficient of

    determination):

    R2a同时考虑了样本量(n)和模型中自变量的个数(k)的影响,这就使得R2a的值永远小于R2,而且R2a的值不会因为模型中自变量的个数增多而逐渐接近于1. (2

    )R2的平方根成为多重相关系数,也称为复相关系数,它度量了因变量同k个自变量的相关程度。 3.2 估计标准误差

    4. 显著性检验

    在此重点说明,在一元线性回归中,线性关系的检验(F检验)和回归系数的检验(t检验)是等价的。

    但是在多元回归中,线性关系的检验主要是检验因变量同多个自变量线性关系是否显著,在k个自变量中,只要有一个自变量与因变量的线性关系显著,F检验就能通过,但这不一定意味着每个自变量与因变量的关系都显著。回归系数检验则是对每个回归系数分别进行单独的检验,它主要用于检验每个自变量对因变量的影响是否都显著。如果某个自变量没有通过检验,就意味着这个自变量对因变量的影响不显著,也许就没有必要将这个自变量放进回归模型中。 4.1 线性关系的检验

    步骤: (1):提出假设

    (2):计算检验的统计量F.

    (3):作出统计决策。 4.2 线性关系的检验

    步骤: (1):提出假设

    (2):计算检验的统计量F.

    (3):作出统计决策。

    5.1 多重共线性

    多重共线性:当回归模型中两个或两个以上的变量彼此相关时,则称回归模型中存在多重共线性。 多重共线性的判别:

    (1)模型中中各对自变量之间显著相关 (2)当模型的线性关系检验(F检验)显著时,几乎所有的回归系数βi的t检验却不显著。 (3)回归系数的正负号与预期的相反。 (4)容忍度(tolerance) 与 方差扩大因子(variance inflation factor,

    VIF). 容忍度:某个变量的容忍度等于 1

    减去该自变量为因变量而其他k−1个自变量为预测变量时所得到的线性回归模型的判定系数。即1−R2i。

    容忍度越小,多重共线性越严重。通常认为 容忍度小于 0.1 时,存在严重的多重共线性。 方差扩大因子:容忍度的倒数。 因此,VIF越大,多重共线性越严重,一般认为VIF的值大于10时,存在严重的多重共线性。

    5.2 多重共线性的处理

    常见的两种办法: (1)将一个或多个相关的自变量从模型中剔除,使保留的自变量尽可能不相关。 (2)如果要在模型中保留所有的自变量,那么应该: (2.1)避免根据t统计量对单个参数β进行检验, (2.2)对因变量y值的推断(预测和估计)限定在自变量样本值的范围内。

    5.3选择变量避免共线性的几种方式,

    在建立回归模型时,我们总是希望用最少的变量来说明问题,选择自变量的原则通常是对统计量进行显著性检验,检验的根据是:将一个或一个以上的自变量引入回归模型中时,是否使残差平方和(SSE)显著减少,如果增加一个自变量使残差平方和(SSE)显著减少,则说明有必要将这个变量引入回归模型中,否则,没有必要将这个变量引入回归模型中。确定在模型中引入自变量xi是否使残差平方和(SSE)显著减少的方法,就是使用F统计量的值作为一个标准,以此来确定在模型中增加一个自变量,还是从模型中剔除一个自变量。 变量选择方式:

    5.3.1 向前选择;

    第一步:

    对k个自变量分别与因变量y的一元线性回归模型,共有k个,然后找到F统计量的值最大的模型及其自变量xi并将其首先引入模型。 第二步:

    在已经引入模型的xi的基础上,再分别拟合xi与模型外的k−1个自变量的线性回归模型,挑选出F值最大的含有两个自变量的模型,

    依次循环、直到增加自变量不能导致SSE显著增加为止, 5.3.2向后剔除

    第一步:先对所有的自变量进行线性回归模型。然后考察p

    第二步:考察p−1个再去掉一个自变量的模型,使模型的SSE值减小最少的自变量被挑选出来从模型中剔除,直到剔除一个自变量不会使SSE值显著减小为止,这时,模型中的所剩自变量自然都是显著的。 5.3.3逐步回归

    是上面两个的结合、考虑的比较全,以后就用这个就可以。

    具体的分析过程、咱们以spss的多元回归分析结果为例。

    展开全文
  • 横坐标是变量,纵坐标是Adjusted R2,可见除截距项以外,只选定Population和Illiteracy这两个变量,可以使线性模型有最大的Adjusted R2。全子集回归比逐步回归范围更广,模型优化效果更好,但是一旦变量数多了之后,...

    横坐标是变量,纵坐标是Adjusted R2,可见除截距项以外,只选定Population和Illiteracy这两个变量,可以使线性模型有最大的Adjusted R2。

    全子集回归比逐步回归范围更广,模型优化效果更好,但是一旦变量数多了之后,全子集回归迭代的次数就很多,就会很慢。

    事实上,变量的选择不是机械式地只看那几个统计指标,更主要的是根据数据的实际意义,从业务角度上来选择合适的变量。

    线性模型变量的选择在《统计学习》后面的第6章还会继续讲到,到时继续综合讨论。

    (3)交互项

    交互项《统计学习》中花了一定篇幅来描写,但在《R语言实战》是在方差分析章节中讨论。添加变量间的交互项有时可以改善线性关系,提高Adjusted R2。针对数据的实际意义,如果两个基本上是独立的,也很难产生交互、产生协同效应的变量,那就不必考虑交互项;只有从业务角度分析,有可能产生协同效应的变量间才考虑交互项。

    涉及到交互项有一个原则:如果交互项是显著的,那么即使变量不显著,也要放在回归模型中;若变量和交互项都不显著,则可以都不放。

    (4)交叉验证

    Andrew Ng的Machine Learning中就提到了,模型对旧数据拟合得好不一定就对新数据预测得好。因此一个数据集应当被分两训练集和测试集两部分(或者训练集、交叉验证集、测试集三部分),训练好的模型还要在新数据中测试性能。

    所谓交叉验证,即将一定比例的数据挑选出来作为训练样本,另外的样本作保留样本,先在训练样本上获取回归方程,然后在保留样本上做预测。由于保留样本不涉及模型参数的选择,该样本可获得比新数据更为精确的估计。

    在k 重交叉验证中,样本被分为k个子样本,轮流将k-1个子样本组合作为训练集,另外1个子样本作为保留集。这样会获得k 个预测方程,记录k 个保留样本的预测表现结果,然后求其平均值。

    bootstrap包中的crossval()函数可以实现k重交叉验证。

    展开全文
  • 多元线性回归数据不好的话出来的误差很大,而且不做-5%~5%敏感度浮动分析也看不出来谁的影响更大,除非你自己编程能一直自动的判定显著性并且会自动重新回归。 小弟也是工作需要,最近自学的这部分内容,不知道...
  • SPSS19.0实战之多元线性回归分析

    千次阅读 2020-12-24 14:09:03
    线性回归数据(全国各地区能源消耗量与产量)来源,可点击协会博客数据挖掘栏:国泰安数据服务中心的经济研究数据库。1.1 数据预处理数据预处理包括的内容非常广泛,包括数据清理和描述性数据汇总,数据集成和变换,...
  • Python 之多元线性回归分析 数据预处理 使用pandas进行数据预处理 本文使用的数据处理工具为pandas,其提供了对excel文件,csv文件的高效处理,操作简单。 ‘’’ def read_excel(path, save=False): # 读取excel ...
  • 关于多元线性回归分析——Python&SPSS

    千次阅读 2021-02-03 02:38:16
    原始数据在这里 1.观察数据 首先,用Pandas打开数据,并进行观察。... 以上这篇关于多元线性回归分析——Python&SPSS就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
  • 但现实问题中,我们往往会碰到多个变量间的线性关系的问题,这时就要用到多元线性回归,多元线性回归是一元回归的一种推广,其在实际应用中非常广泛,本文就用python代码来展示一下如何用多元线性回归来解决实际问题...
  • moore=1125 232 7160 85.9000000000000 8905 1.55630000000000 920 268 8804 86.5000000000000 7388 0.897600000000000 835 271 8108 85.2000000000000 5348 0....包括精度分析。 求帮忙!
  • 波士顿房地产业的多元线性回归分析 摘要:本文基于波士顿房价的公开数据集,寻找影响波士顿房价的因素,统计数据包括城镇人均犯罪率、占地面积超过2.5万平方英尺的住宅用地比例、城镇非零售业务地区的比例以及...
  • spss多元线性回归结果解读

    千次阅读 2020-12-29 01:06:25
    内容导航:Q1:请高手帮忙分析下SPSS的多元线性回归结果吧~急啊~~~你的回归方法是直接进入法拟合优度R方等于0.678,表示自变量可以解释因变量的67.8%变化,说明拟合优度还可以。方差检验表中F值对应的概率P值为0.000...
  • %本程序演示多元线性回归求解问题,2020.07clc, clearX1=[161819172016161519181817 18202116181919211917171821]';X2=[393839393848454848484648 45484855555658584949464449]';Y=[2424.524.5242524.5242424.524....
  • 掌握一元线性回归、多元线性回归模型的建模原理、估计及检验方法。 能运用相应的统计软件(SAS\SPSS\R)进行计算、分析。 实验内容 某大型牙膏制造企业为了更好地拓展产品市场,有效地管理库存,公司董事会要求销售...
  • 在本专栏的第六篇数学建模学习笔记(六)多元回归分析算法(matlab)...在多元线性回归分析之前,有必要先对数据是否具有线性做个直观判断。(否则,一眼看出来不是线性就没必要线性回归了)。散点图是比较方便的办法。
  • R多元线性回归分析

    2021-12-12 13:36:19
    执行多元线性回归分析以确定数据集中的哪些变量可以预测 MechaCar 原型的 mpg。 悬挂线圈的汇总统计。从制造批次中收集有关悬挂线圈的每平方英寸磅数 (PSI) 的汇总统计数据 悬架线圈的 T 检验。运行 t 检验以确定...
  • Matlab篇----常用的回归分析Matlab命令(regress篇) 语法 b =regress(y,X) [b,bint] =regress(y,X) [b,bint,r] =regress(y,X) [b,bint,r,rint] =regress(y,X) [b,bint,r,rint,stats] =regress(y,X) 实例: ...
  • 文章目录一、综述二、常见的回归分析三、对于相关性的理解四、一元线性回归模型五、对于回归系数的解释六、内生性七、四类线性模型回归系数的解释对于定性变量的处理——虚拟变量XXX八、下面来看一个实例九、扰动项...
  • 属于合成纤维的面料是()。库存现金清查的内容包括()。关于职业倦怠的说法,下列哪项是正确的()喷面漆一般采用空气喷涂、无空气喷涂、()、自动喷涂等喷涂法。属于合成纤维的面料是()。在未燃法中烟气的主要成分是()。...
  • 本期继续基于实际案例数据,介绍基础回归模型——多元线性回归,即回归模型中不再只有一个变量,而是两个及两个以上。本期的主要知识点:多元回归分析,回归系数的解释,模型的检验,以及模型的变换(对数模型)及其...
  • 1. 与简单线性回归区别(simple linear regression)多个自变量(x)2. 多元回归模型y=β0+β1x1+β2x2+ … +βpxp+ε其中:β0,β1,β2… βp是参数ε是误差值3. 多元回归方程E(y)=β0+β1x1+β2x2+ … +βpxp4....
  • 使用Excel数据分析工具进行多元回归分析与简单的回归估算分析方法基本相同。但是由于有些电脑在安装办公软件时并未加载数据分析工具,所以从加载开始说起(以Excel2010版为例,其余版本都可以在相应界面找到)。点击...
  • 利用MATLAB进行多元线性回归

    千次阅读 2021-05-08 01:06:01
    《利用MATLAB进行多元线性回归》由会员分享,可在线阅读,更多相关《利用MATLAB进行多元线性回归(15页珍藏版)》请在人人文库网上搜索。1、2.线性回归,b=regress(y,X) b,bint,r,rint,s=regress(y,X,alpha),输入: y因...
  • 多元线性回归,主要是研究一个因变量与多个自变量之间的相关关系,跟一元回归原理差不多,区别在于影响因素(自变量)更多些而已,例如:一元线性回归方程 为:毫无疑问,多元线性回归方程应该为:上图中的 x1, x2, xp...
  • 方法:使用多元线性回归进行房价预测 知识点:matplotlib绘图,相关系数,数据标准化处理 ##载入所需要的模块 from __future__ import print_function import numpy as np import pandas as pd ##matplotlib ...
  • matlab多元线性回归

    2020-12-21 17:10:28
    1.matlab多元回归示例如下:解决问题:油价预测方法:多元线性回归实现:matlab regress()函数技巧:通过增加X1^2,X2^2,或者X1*X2等构造的特征项,可以提高回归模型的拟合准确度;但计算代价增大。function result...
  • R=0.765RSquare=0.585AdjustedRSquare=0.439Std.ErroroftheEstimate=0.0557这是否表明变量X对Y的解释程度不高呢ANOVA(b)ModelSumofSquaresdfMeanSquareFSig.1Regression0.08870.01254......到底应该如何分析? 展开
  • 数学建模(NO.11多元线性回归分析

    千次阅读 2021-01-13 20:45:06
    多元线性回归分析一.应用二.三个关键词三.目的四.回归模型分类五.数据分类1.三种数据2.模型与数据对应六.数据收集网址七.一元线性回归1.概念2.对“线性”理解1.纠正线性2. 预处理3.什么时候取对数?3.回归系数的解释...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,082
精华内容 10,832
关键字:

多元线性分析