摄影师个人网站怎么做,wordpress插件video playe,郑州的网络科技有限公司,wordpress百科网回归分析#xff08;regression analysis)是量化两种或两种以上因素/变量间相互依赖关系的统计分析方法。回归分析根据因素的数量#xff0c;分为一元回归和多元回归分析#xff1b;按因素之间依赖关系的复杂程度#xff0c;可分为线性回归分析和非线性回归分析。我们通过…回归分析regression analysis)是量化两种或两种以上因素/变量间相互依赖关系的统计分析方法。回归分析根据因素的数量分为一元回归和多元回归分析按因素之间依赖关系的复杂程度可分为线性回归分析和非线性回归分析。我们通过一下两个例子介绍如何使用python完成回归分析。
在python中有多个软件包可以用于回归分析在这里我们选择 sklearn软件包中的LinearRegression训练算法之所以选择该算法是因为它支持多元回归还可以用于非线性回归分析多项式回归。
1.线性回归分析
某调查公司采集了多人健康数据试图建立体重与身高和每天运动时长的量化关系。
人员体重身高运动时长1521.6522631.6823711.7514821.7815901.92261081.817851.7828721.7519631.621
代码如下
import numpy as np
from sklearn.linear_model import LinearRegression
#构造样本数据之因变量体重
ynp.array([52,63,71,82,90,108,85,72,63])
#构造样本数据之因变量身高和运动时长
Xnp.array([[1.65,2],[1.68,2],[1.75,1],[1.78,1],[1.92,2],[1.8,1],[1.78,2],[1.75,1],[1.62,1]])
#创建回归模型
modelLinearRegression().fit(X,y)
#查看模型第一个是截距后面是自变量的系数身高变量和运动时长变量
model.intercept_,model.coef_
#(-173.9154414624661, array([150.83625049, -9.33963438]))公式为。拟合值及其残差如下表所示。
人员体重身高运动时长拟合值残差1521.65256.2695-4.26952631.68260.79442.20563711.75180.6925-9.69254821.78185.2174-3.21745901.92296.9936-6.993661081.8188.23419.7667851.78275.87749.12268721.75180.6925-8.69259631.62161.08461.9154
如果残差均值接近0且服务正态分布也就是说残差是白噪声则模型通过质量评价。以下为模型评价代码。
#可决系数自变量对因变量变化的影响程度越接近1越好但无经验阈值
r2 model.score(X, y)
r2
#计算残差残差是白噪声均值为0的正态分布系列说明拟合公式已经提取完全部有用信息
resy-model.predict(X)
#绘制QQ图
from statsmodels.graphics.api import qqplot
%matplotlib inline
axqqplot(res,lines)
#或使用Ljung-Box检验p值0.05可认定为白噪声
from statsmodels.stats.diagnostic import acorr_ljungbox
acorr_ljungbox(res)
上述模型的可决系数, Ljung-Box检验 p值0.880971。模型通过评价。其残差QQ图如下求按对角线分布残差质量不是很高说明该模型因素间不是质量很高的线性回归关系。 2.非线性回归分析
我们对上例进行多项式回归分析试图用多项式单项式的线性组合来拟合其非线性关系。所谓单项式就是数字与字母的乘积如。
代码如下
#引入高阶单项式构造函数
from sklearn.preprocessing import PolynomialFeatures
#构造2阶单项式
new_XPolynomialFeatures(degree2).fit_transform(X)
构造出的新的单项式为
人员常数项111.6522.72253.34211.6822.82243.364311.7513.06251.751411.7813.16841.781511.9223.68643.844611.813.241.81711.7823.16843.564811.7513.06251.751911.6212.62441.621 然后以上述数据为自变量与y建立线性回归关系就构造出现二元二次多项式回归公式。代码如下。
modelLinearRegression().fit(new_X,y)
model.intercept_,model.coef_
#(-706.4617834336859,array([ 0. , 739.84211301, 2.80313388, -157.23758678,-20.80508628, 8.40940164]))
r2 model.score(new_X, y)
公式为
可决系数与线性回归没有太多差异说明二阶多项式拟合能力一般。我们可以再尝试更高阶的多项式。比如将阶数提高到3后其可决系数值高达0.97取得了良好的拟合效果。
需要说明的是
1回归分析要注意自变量之间的多重共线性即变量之间高度相关这说明有些变量是冗余变量需要剔除以免影响模型的泛化水平
2模型不是阶数越高越好而是可决系数和残差比较满意的前提下阶数越低、变量越少越好模型越简单越好也就是我们平时所说的“奥卡姆剃刀法则”。