-
2019-08-10 22:07:21
终于找到一篇全面而又简洁的讲多元线性回归模型检验方法的文章
PDF下载地址
链接:https://pan.baidu.com/s/1UbyZcMC1VRTmlCEaX4Vybg
提取码:g481具体内容
一、经济意义检验
经济意义检验主要检验模型参数估计量在经济意义。其表现为检验求得的参数估计值的符号与大小是否合理,是否与根据人们的经验和经济理论所拟定的期望值相符合。如果不符,则要查找原因和采取必要的修正措施,重新建立模型。二、统计检验
1.拟合优度检验(${R^2}$检验) 拟合优度检验是检验回归方程对样本观测值的拟合程度,即检验所有解释变量与被解释变量之间的相关程度。2.方程显著性检验(F检验)
方程显著性检验就是对模型中解释变量与被解释变
量之间的线性关系在总体上是否显著成立作出推断。即
检验被解释变量Y与所有解释变量戈l,石2,……,菇^之间
的线性关系是否显著,方程显著性检验所应用的方法是
数理统计学中假设检验。3.变量显著性检验(t检验)
R2检验和F检验都是将所有的解释变量作为一个整体来检验它们与被解释变量Y的相关程度以及回归效果,但对于多元回归模型,方程的总体显著性并不意味每个解释变量对被解释变量Y的影响都是显著的。如果某个解释变量并不显著,则应该从方程中把它剔除,重新建立更为简单的方程。所以必须对每个解释变量进行显著性检验。三、计量经济学检验
计量经济学检验是由计量经济学理论决定的,目的 在于检验模型的计量经济学性质。通常检验准则有随机 误差项的序列相关检验和异方差性检验,解释变量的多 重共线性检验等,其中最常用的是随机误差项的序列相 关检验。 在回归分析法中,假设随机误差项在不同的样本点 之间是不相关的,即si与8i(i≠_『)相互独立。但在实际 问题中,经常出现与此相违背的情况,占i与si(i≠.『)之 间存在相关性,称为序列相关。若存在序列相关,则此时 的回归模型无效,必须重新建立回归模型。 在序列相关中,最常见的是一阶自相关即占i与sf+l 相关,而对一阶自相关最常用的检验方法是DW检验法模型预测检验
预测检验主要检验模型参数估计量的稳定性以及相对样本容量变化时的灵敏度,确定所建立的模型是否可以用于样本观测值以外的范围,即模型的所谓超样本特性。具体检验方法为:①利用扩大了的样本重新估计模型参数,将新的估计值与原来的估计值进行比较,并检验二者之间差距的显著性。
②将所建立的模型用于样本以外某一时期的实际预测,并将该预测值与实际观测值进行比较,并检验二者之间差距的显著性。更多相关内容 -
关于多元线性回归分析——Python&SPSS
2020-12-20 09:49:41原始数据在这里 1.观察数据 首先,用Pandas打开数据,并进行观察。 import numpy import pandas as pd import matplotlib.pyplot as plt ...我们的问题是得到一个线性的关系,对应PE是样本输出,而AT/V/ -
02a 多元线性回归分析.rar_matlab 多元回归_多元回归_多元线性回归_多元线性回归MATLAB代码_线性回归
2022-07-15 18:46:33基于矩阵运算的多元线性回归分析,基于回归计算程序包的多元线性回归分析等MATLAB程序实现;各检验值齐全 -
多元线性回归模型检验方法.pdf
2019-08-10 22:06:12终于找到一篇全面而又简洁的讲多元线性回归模型检验方法的文章,涵盖了 主要的统计检验——F检验、t检验、DW检验 -
多元线性回归模型
2022-05-14 18:32:20多元回归模型是描述一个因变量与多个自变量之间的相关关系。如果这个关系是线性的,则可以采用线性多元回归模型来描述。反之,则用非线性多元回归模型。对于多元线性模型而言,因变量若为连续型变量,则采用普通的...多元回归模型(multivariate regression model)是描述一个因变量与多个自变量之间的相关关系。如果这个关系是线性的,则可以采用线性多元回归模型来描述。反之,则用非线性多元回归模型。对于多元线性模型而言,因变量若为连续型变量,则采用普通的线性模型;若因变量为离散型变量(类型变量或计数变量),则需采用广义多元线性模型。下面就线性模型展开说明讲解。
一、普通多元线性模型
我们选用一个例子来讲述普通多元线性回归模型。
e.g. 计量经济学涉及数学、统计学、经济学的知识,还要借助软件完成计算分析。因此对于很多同学来说,计量经济学是一门特别容易挂科的课程。大学教授Mr.Li想研究大学生计量经济学考试成绩与其影响因素之间的关系,根据初步分析,他认为学生的计量经济学考试成绩y与学生的微积分成绩x1,线性代数成绩x2,统计学成绩x3,大学计算机成绩x4,西方经济学成绩x5有相关关系。对此他抽取36名学生成绩进行分析。数据网盘提取码:d1d8
我们可以简单将模型写为:
其中
,模型可以视为一个普通正态线性模型。在正态假定下,如果
是满秩的(矩阵的满秩与可逆),则参数
的最小二乘估计为:
于是
的估计值为:
残差
,则随机误差方差
的最小二乘估计为:
对于多元线性模型而言,我们是需要找到最合适的模型参数
,使得残差平方和达到最小。
二、回归方程的显著性检验
从回归系数的最小二乘估计
可以看出,对任意给定的
对数据
,都可以求出
,从而给出回归方程
,但是这样给出的回归方程不一定有意义。
在使用回归方程作进一步的分析以前,首先应对回归方程是否有意义进行判断,什么叫回归方程有意义呢?我们知道,建立回归方程的目的是寻找y的均值随x变化的规律,即找出回归方程,如果
,那么不管
如何变化,
不随
的变化作线性变化,那么这时求得的线性回归方程就没有意义,称回归方程不显著。如果
,那么当
变化时,
随
的变化作线性变化,那么这时求得的回归方程就有意义,称回归方程是显著的。
综上,对回归方程是否有意义作判断就是要作如下的显著性检验:,拒绝
表示回归方程是显著的。
对回归方程有以下几种显著性的检验方法:F检验,t检验
2.1 F检验
F检验是对方程整体的显著性进行检验,即所有变量对被解释变量的显著性检验。
2.2 t检验
t检验是对单个变量的显著性检验,一般是看p值。如果p值小于0.05表示该自变量对因变量解释性很强。t检验值大于0.05则该变量显著,反之不显著。
t检验回归系数是否等于某一特定值,在回归方程中这一特定值为0,因此t值=回归系数/回归系数的标准误差,因此t值的正负应该与回归系数的正负一致,回归系数的标准误差越大,t值越小,回归系数的估计值越不可靠,越接近于0。另外,回归系数的绝对值越大,t值的绝对值越大。
我们查看一下所举的例子。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression as LM import statsmodels.api as sm data=pd.read_csv("eg2.1.csv") data.head() d={'x1':data['x1'],'x2':data['x2'],'x3':data['x3'],'x4':data['x4'],'x5':data['x5'],'y':data['y']} md=sm.formula.ols('y~x1+x2+x3+x4+x5',d).fit() print(md.summary())
输出结果为
由输出结果我们可以看到,模型的
值为
,明显小于
,因此我们认为方程式显著的。模型的拟合优度
,调整后的拟合优度
。
整体回归方程拟合优度检验,R方的结果越接近于1越好,但是R方会因增加变量而增大,所以引进了调整R方检验。
在进行多元线性回归时,常用到的是F检验和t检验,F检验是用来检验整体方程系数是否显著异于零,如果F检验的p值小于0.05,就说明,整体回归是显著的。然后再看各个系数的显著性,也就是t检验,计量经济学中常用的显著性水平为0.05,如果t值大于2或p值小于0.05就说明该变量前面的系数显著不为0,选的这个变量是有用的。
三、多重共线性
但是模型的相关系数为
,说明变量之间的相关性很高,即变量之间存在多重共线性。因此我们需要对变量进行调整,消除多重共线性。
3.1 多重共线性的影响
在进行线性回归分析时,自变量即解释变量很容易出现共线性问题。当出现共线性问题时,可能导致回归系数的符号与实际情况完全相反,本应该显著的自变量不显著,本不显著的自变量却呈现出显著性;共线性问题会导致数据研究出来严重偏差甚至完全相反的结论,因而需要解决此问题。
3.2 多重共线性产生的原因
多重共线性问题就是说一个解释变量的变化引起另一个解释变量地变化。如果各个自变量x之间有很强的线性关系,就无法固定其他变量了,就找不到x和y之间真实的关系了。通俗地讲共线性是指,自变量X(解释变量)影响因变量Y(被解释变量)的时候,多个X之间本身就存在很强的相关关系,即X之间有着比较强的替代性,因而导致共线性问题。
3.3 消除多重共线性
对于如何消除多重共线性,请查看下一章《解决多元线性回归的多重共线性问题》。
-
多元线性回归方法在空气质量指数AQI分析中的应用
2020-04-25 02:53:04其9个相关影响变量数据(包括风力,机动车保有量,火电厂、炼钢厂、炼焦厂平均各排口每小时各主要污染物的排放量),在MATALB中采用多元线性回归方法建立了模型、参数估计和模型检验,并在已得模型的基础上剔除不... -
spss-多元线性回归分析
2022-05-11 14:47:53多元线性回归方程是一个主要用来探讨一个因变量(Y)与多个自变量(X1,X2…Xn)之间函数线性关系的方法。 其表达式为: 应用条件: 原则上要求因变量是连续型变量,其预测值与实际观测值的差值(模型中的e)服从...简介
多元线性回归方程是一个主要用来探讨一个因变量(Y)与多个自变量(X1,X2…Xn)之间函数线性关系的方法。
其表达式为:
应用条件:
原则上要求因变量是连续型变量,其预测值与实际观测值的差值(模型中的e)服从正态分布,并且在不同的X取值上方差相同,另外,要求因变量的观测值相互独立(如年龄、饮酒年限、高血压与年龄的关系就不独立),不独立会导致多重共线性,影响参数估计。1.自变量与因变量之间具有线性关系
2.各例观测值Yi(i=1,2,…n)相互独立
3.残差e服从均数为0,方差为σ^2的正态分布,它等价于任意一组自变量X1,X2…Xm的值,因变量Y具有相同方差,并且服从正态分布。过程
打开spss,导入数据(数据来源于《医学统计学》)
分析-回归-线性
选择自变量Y
因变量:X1-X5
在统计、选项和保存处按照以下选项运行:
结果分析
有意义:
R趋近于1、R方>0.25 证实多元线性关系成立
F sig值<0.01 验证多元回归方程的有效性
回归模型的Pearson相关系数,可得各因子之间相关性不明显->可用多元线性回归方程分析
F界值表F(0.05)1,17)=3,59,a>0,05,F>3.59,拒绝H0 有统计学意义
P<0.05 有统计学意义 -
多元线性回归模型检验.pptx
2021-10-02 18:11:21多元线性回归模型检验.pptx -
多元线性回归分析
2021-10-21 09:24:41小鹿一、概念二、EXCEL进行多元线性回归三、sklearn3.1 不进行数据处理3.2 进行数据处理3.3 分析四、总结五、参考 一、概念 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是...小鹿
一、概念
- 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。
二、EXCEL进行多元线性回归
- 1.删掉表里的非数据项,以进行多元线性回归
- 2.选中要进行多元线性回归的区域,点击文件
- 3.选择更多里面的选项
- 4.进入加载项,点击转到
- 5.选择分析数据库
- 6.点击数据里的数据分析
- 7.选择回归
- 8.分别选中x和y值的区域,输出选项可以选新工作表组,这样就可以在新工作表里看到了,弄好之后点击确认就行了。
- 10、结果,intercept为截距,下面几行就是对应自变量的系数
三、代码方式实现多元线性回归
3.1 用sklearn包实现
3.1.1 不进行数据处理
- 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('..\\source\\house_prices.csv') df.info()#显示列名和数据类型类型 df.head(6)#显示前n行,n默认为5
- 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_)
- 结果
3.1.2 进行数据处理
- 1.前面两步的步骤是一样的,接下来是进行异常值检测
# 异常值处理 # ================ 异常值检验函数: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': """ 以某列为依据,传入数据与希望分段的 z 分数点,返回异常值索引与所在数据框 """ """ params data: 完整数据 column: 指定的检测列 z: Z分位数, 默认为2,根据 z分数-正态曲线表,可知取左右两端的 2%, 根据您 z 分数的正负设置。也可以任意更改,知道任意顶端百分比的数据集合 """ print(f'以 {column} 列为依据,使用 Z 分数法,z 分位数取 {z} 来检测异常值...') print('=' * 70) # 计算两个 Z 分数的数值点 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
- 2.得到异常集并进行丢弃
outlier, upper, lower = outlier_test(data=df, column='price', method='z')#获得异常数据 outlier.info(); outlier.sample(5) df.drop(index=outlier.index, inplace=True)#丢弃异常数据
- 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_)
- 结果
3.2 用线性回归模型的统计学库实现
- 3.2.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)
- 3.2.2进行预测
from statsmodels.formula.api import ols #使用虚拟变量 lm = ols('price ~ area + bedrooms + bathrooms + A + B', data=results).fit() lm.summary()
-
3.2.3 预测结果,结果会比用sklearn详细许多
-
3.2.4 提示可能出现多元共线性,检验一下,再次建模
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))
- 3.2.5 检验结果如下,可以看到bedroom和bathroom相关程度较高
- 3.2.6 去掉bedroom,再次建模
# 去掉bedroom再次建模 lm = ols(formula='price ~ area + bathrooms + A + B', data=results).fit() lm.summary()
- 3.2.7 得出结果
3.3 分析
当不进行数据处理时,用jupyter和使用excel进行数据分析的结果是一样的,但进行了数据清理之后回归方程与之前相差的挺大的,而进行了多元共线性检测以后,结果变得更为合理了。
四、总结
初步了解了多元线性回归的步骤,也清楚了异常数据对于回归方程的影响,在进行数据处理之前应该先进行数据预处理,同时也要考虑两个变量的关系。
五、参考
-
基于多元线性回归的分析
2018-07-02 15:35:26并通过皮尔森相关性检验、拟合优度检验、F检验、t检验和残差分析的方法对模型进行优化,得到了准确可靠的多元线性回归模型,此楔型具有拟合程度高、简易、直观等优势,为多元线性回归模型在需水量分析中的应用提供了... -
多元线性回归模型的检验
2019-05-10 11:18:471.总平方和、回归平方和、残差平方和 因变量体重是一个数值,这个数值一般来说不会太大,也不会太小,是在一个范围内的。我们可以简单认为,这个"范围”越大,人们的体重多样性越大(严格来说,范围大说明极差比较大... -
借助excel工具进行多元线性回归模型的建立及案例分析
2022-05-22 11:53:24那么此时需要建立多个变量的多元线性回归方程。下面以植被覆盖度的案例来进行分析。 案例:年尺度的综合因素对植被覆盖度的影响分析 注: 因变量为植被覆盖度 自变量为温度、降水量和积温 工具:excel (1) 将数据... -
【项目实战】Python实现多元线性回归模型(statsmodels OLS算法)项目实战
2022-05-10 20:16:56Python实现多元线性回归模型(statsmodels OLS算法)项目实战 -
多元线性回归模型的完整解释、假设检验、特征选择
2020-05-24 12:15:34多元线性回归:这是一种线性回归的形式,当有两个或多个预测因子时使用。 我们将看到多个输入变量如何共同影响输出变量,同时还将了解计算与简单LR模型的不同之处。我们还将使用Python构建一个回归模型。 最后,我们... -
【Matlab】多元线性回归
2022-05-25 06:26:50多元线性回归学习 -
多元线性回归检验
2020-07-13 10:43:33多元线性回归模型通常用来研究一个应变量依赖多个自变量的变化关系,如果二者的以来关系可以用线性形式来刻画,则可以建立多元线性模型来进行分析。 1.t检验 t检验是对单个变量系数的显著性检验,一般看p值;如果p... -
多元线性回归分析(Stata)
2022-01-14 10:12:47线性回归:因变量Y为连续性数值变量,例如GDP的增长率 0-1回归:因变量Y为0-1型变量,例如P2P公司研究借款人是否能按时还贷,那么Y可以设计为二值变量,Y=0时代表可以还贷,Y=1时代表不能还贷 定序回归:... -
建立多元线性回归模型,进行预测
2022-05-13 19:24:51//通过spark的MLib建立多元线性回归模型 //setFeaturesCol:通过别名指定哪些列是自变量列 //setLabelCol:指定因变量的列名 //setFitIntercept(true):表示计算截距项系数,截距项的系数可以不计算,但自变量的系数必须... -
python 多元线性回归_如何评价多元线性回归模型的优劣
2020-11-21 12:14:14多元线性回归模型是一种简单而且有效的数学模型,一直在各领域广泛使用。一个多元回归模型建好后,如何评价模型的优劣呢?1. F值检验因变量的总变异(数据与均值之差的平方和,记为SStotal)由回归平方和(因变量的变异... -
多元线性回归模型检验方法-附件资源
2021-03-05 15:17:21多元线性回归模型检验方法-附件资源 -
多元线性回归模型检验和预测
2020-11-29 00:50:43二、回归模型检验检验回归模型的好坏常用的是F检验和t检验。F检验验证的是偏回归系数是否不全为0(或全为0),t检验验证的是单个自变量是否对因变量的影响是显著的(或不显著)。F检验和t检验步骤:提出问题的原假设... -
数学建模(8)多元线性回归模型
2022-01-29 22:20:581.因变量的分类 回归分析 三个重要作用: -
基于遗传算法模糊多元线性回归分析的瓦斯涌出量预测模型
2020-07-17 05:46:36针对经典线性回归模型不能完全反映变量间的耦合关系而不适宜于有模糊数的瓦斯涌出量预测的问题,提出了一种基于遗传算法模糊多元线性回归分析的瓦斯涌出量预测模型。采用灰关联分析法和SPSS软件线性回归分析法确定... -
【零基础Eviews实例】00了解多元线性回归模型常见检验
2020-11-02 10:22:31以某次多元线性回归为例介绍多元线性回归模型常见的检验方法,其中Farming为被解释变量,其他的所有变量为解释变量。此处要求进行:多重共线性检验、随机误差项正态分布检验、异方差检验、模型结构稳定性检验。 0. ... -
多元线性回归模型预测房价
2021-10-24 11:46:03方差分析三、多元线性回归建模四、模型优化 一、导入包及数据 1. 导入包 import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt 2. 导入数据 df = pd.read_csv('house_... -
多元线性回归模型检验及stata软件应用PPT课件.pptx
2021-10-07 19:03:09多元线性回归模型检验及stata软件应用PPT课件.pptx