如何使用Python实现线性回归分析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1828个文字,预计阅读时间需要8分钟。
前言:线性回归是利用数学系统统计中回归分析的方法,确定两种或两种以上变量间相互依赖关系的定量分析方法。在线性回归分析中,仅包括一个自变量和一个因变量,探究两者之间的关系。
前言
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,在线性回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
- 输入与输出
1.一元线性回归
1.1 python实现拟合回归
拟合线性模型主要通过statsmodels包中OLS类的fit()方法完成,下表列举了对拟合线性模型常用的其他函数。
- 相关方法和属性
对上证综指和深证综指1990-2022年期间的的收益率构造一元线性回归函数:
- python实现
注意:statsmodel模块当中有两个实现线性回归的库方法:ols和OLS,其中OLS用于python方差通胀因子计算,默认情况下不添加截距。需要再添加截距项。 二者可以通过以下方式导入:
import statsmodels.formula.api as smf import statsmodels.api as sm-
输出结果
-
结果分析 通过summary()可以看到拟合模型的最终结果:
最终得到的回归模型如下: $$sh_i = 0.019443 + 0.736213*{sz}_i + \varepsilon_i$$
1.2 回归诊断
1.2.1 线性性
检验随机干扰项和拟合值之间的关系,绘制的图应该是围绕0随机分布的状态
import matplotlib.pyplot as plt # 导入需要的第三方库 from pylab import mpl # 设置默认字体 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 解决保存图像出现负号时导致的显示异常问题 mpl.rcParams['axes.unicode_minus'] = False plt.scatter(model.fittedvalues, model.resid) plt.xlabel("拟合值") plt.ylabel("残差值")结果显示数据点基本在0周围,既满足线性假定。
1.2.2 正态性
通过绘制Q-Q图来观察样本点是否落在一条直线上,如果是则表明服从正态分布,反之则不是。
import scipy.stats as stats sm.qqplot(model.resid_pearson, stats.norm, line='45')可以看到首尾段严重脱离直线,说明样本不符合正态性假定
1.2.3 同方差性
满足同方差性的数据的各点分布应该呈现出一条水平的、宽度一致的条带形状。
plt.scatter(model.fittedvalues, model.resid_pearson**0.5) plt.xlabel("拟合值") plt.ylabel("标准化残差的平方根")可以数据看出基本是符合同方差假定的。
==意味着深证综指的回报率每增加1%,上证综指的回报率就平均增加0.736个百分点==
2.多元线性回归
多元线性回归除了要满足一元线性回归所有的假设外还要满足自变量之间不存在多重共线性这里通过探究房子年龄、是否有电梯、楼层高度、房间平方对房价`的影响
python拟合实现
- python 实现
- 结果分析 通过summary()可以看到拟合模型的最终结果:
2.2 检验多重共线性
- 相关性分析
- 再回归
配套电梯与其他解释变量之间的相关系数较高,可能存在多重共线性,去掉后重新进行回归,得到结果如下:
最终得到的回归模型如下: $$房价 = -6.699045+ 1.760482平方 + 2.777285房龄+ \varepsilon$$
本文共计1828个文字,预计阅读时间需要8分钟。
前言:线性回归是利用数学系统统计中回归分析的方法,确定两种或两种以上变量间相互依赖关系的定量分析方法。在线性回归分析中,仅包括一个自变量和一个因变量,探究两者之间的关系。
前言
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,在线性回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
- 输入与输出
1.一元线性回归
1.1 python实现拟合回归
拟合线性模型主要通过statsmodels包中OLS类的fit()方法完成,下表列举了对拟合线性模型常用的其他函数。
- 相关方法和属性
对上证综指和深证综指1990-2022年期间的的收益率构造一元线性回归函数:
- python实现
注意:statsmodel模块当中有两个实现线性回归的库方法:ols和OLS,其中OLS用于python方差通胀因子计算,默认情况下不添加截距。需要再添加截距项。 二者可以通过以下方式导入:
import statsmodels.formula.api as smf import statsmodels.api as sm-
输出结果
-
结果分析 通过summary()可以看到拟合模型的最终结果:
最终得到的回归模型如下: $$sh_i = 0.019443 + 0.736213*{sz}_i + \varepsilon_i$$
1.2 回归诊断
1.2.1 线性性
检验随机干扰项和拟合值之间的关系,绘制的图应该是围绕0随机分布的状态
import matplotlib.pyplot as plt # 导入需要的第三方库 from pylab import mpl # 设置默认字体 mpl.rcParams['font.sans-serif'] = ['SimHei'] # 解决保存图像出现负号时导致的显示异常问题 mpl.rcParams['axes.unicode_minus'] = False plt.scatter(model.fittedvalues, model.resid) plt.xlabel("拟合值") plt.ylabel("残差值")结果显示数据点基本在0周围,既满足线性假定。
1.2.2 正态性
通过绘制Q-Q图来观察样本点是否落在一条直线上,如果是则表明服从正态分布,反之则不是。
import scipy.stats as stats sm.qqplot(model.resid_pearson, stats.norm, line='45')可以看到首尾段严重脱离直线,说明样本不符合正态性假定
1.2.3 同方差性
满足同方差性的数据的各点分布应该呈现出一条水平的、宽度一致的条带形状。
plt.scatter(model.fittedvalues, model.resid_pearson**0.5) plt.xlabel("拟合值") plt.ylabel("标准化残差的平方根")可以数据看出基本是符合同方差假定的。
==意味着深证综指的回报率每增加1%,上证综指的回报率就平均增加0.736个百分点==
2.多元线性回归
多元线性回归除了要满足一元线性回归所有的假设外还要满足自变量之间不存在多重共线性这里通过探究房子年龄、是否有电梯、楼层高度、房间平方对房价`的影响
python拟合实现
- python 实现
- 结果分析 通过summary()可以看到拟合模型的最终结果:
2.2 检验多重共线性
- 相关性分析
- 再回归
配套电梯与其他解释变量之间的相关系数较高,可能存在多重共线性,去掉后重新进行回归,得到结果如下:
最终得到的回归模型如下: $$房价 = -6.699045+ 1.760482平方 + 2.777285房龄+ \varepsilon$$

