app和网站开发,h5商城网站怎么建立,58和百度哪个推广效果好,在网站上有中英切换怎么做参考资料#xff1a;python统计分析【托马斯】 当我想用一个或多个其他的变量预测一个变量的时候#xff0c;我们可以用线性回归的方法。 例如#xff0c;当我们寻找给定数据集的最佳拟合线的时候#xff0c;我们是在寻找让下式的残差平方和最小的参数(k,d)#xff1a; 其…参考资料python统计分析【托马斯】 当我想用一个或多个其他的变量预测一个变量的时候我们可以用线性回归的方法。 例如当我们寻找给定数据集的最佳拟合线的时候我们是在寻找让下式的残差平方和最小的参数(k,d) 其中k是线的斜率d是截距。残差是观测值和预测值之间的差异。 由于线性回归方程是用最小化残差平方和的方法来解决的线性回归又是也成为普通最小二乘法OLS回归。 这里注意与相关性相反x和y之间的这种关系不再是对称的它假设x值是精确的所有的变异性都在于残差。
1、决定系数 我们约定是数据集中的观测值为模型计算得到的于相对应的预测值为所有的平均值。那么
是模型平方和或回归平方和或可解释平方和。
是残差平方和或误差平方和。
是总平方和它等于样本方差乘以n-1。
决定系数一般表示为 由于
所以 用文字表达决定系数就是模型的可解释平方和与总平方和的比值。 对于简单线性回归即直线拟合决定系数就是相关系数的平方。如果我们的自变量和因变量之间存在非线性关系那么简单的相关性和决定系数会对结果造成误导。
2、带置信区间的直线 对于单变量分布基于标准差的置信区间表示我们期望包含95%的数据的区间用于数据而基于平均数标准误的置信区间表示95%概率下包含真正均值的区间用于参数。如下 3、曲线拟合 为了了解如何使用不同的模型来评估给定的数据集让我们来看一个简单的例子拟合一个有噪声的、略微二次项弯曲的曲线。让我们从numpy中实现的算法开始然后用线性、二次方、三次方曲线来拟合数据。 代码如下
# 导入库
import numpy as np
import matplotlib.pyplot as plt# 生成一个有噪声、略微二次项弯曲的数据集
xnp.arange(100)
y1503*x0.3x**25*np.random.randn(len(x))# 线性拟合、二次方拟合、三次方拟合
# 创建设计矩阵
M1np.vstack((np.ones_like(x),x)).T
M2np.vstack((np.ones_like(x),x,x**2)).T
M3np.vstack((np.ones_like(x),x,x**2,x**3)).T# 解方程
p1np.linalg.lstsq(M1,y)
p2np.linalg.lstsq(M2,y)
p3np.linalg.lstsq(M3,y)np.set_printoptions(precision3)
print(the coefficients from the linear fit:{0}.format(p1[0]))
print(the coefficients from the quadratic fit:{0}.format(p2[0]))
print(the coefficients from the cubic fit:{0}.format(p3[0])) # 计算x对应的预测值
p1_y-1466.335101.978*x
p2_y150.3942.994*xx**2
p3_y1503.04*x0.9987*x**27.842*(10**(-6))*x**3# 作图
plt.rcParams[font.sans-serif]SimHei # 设置中文显示
plt.rcParams[axes.unicode_minus]False # 设置负号显示
plt.scatter(x,y,cblack,s0.1,label数据)
plt.plot(x,p1_y,b:,label线性拟合)
plt.plot(x,p2_y,r--,label二次方拟合)
plt.plot(x,p3_y,g-.,label三次方拟合)
plt.xlabel(x)
plt.ylabel(y)
plt.legend()
显示图片如下 如果我们想找到哪个才是拟合的“最好的”我们可以使用statsmodels提供的工作来再次拟合模型。使用statsmodels我们不仅可以得到最佳拟合参数还能得到关于模型的许多价值的额外信息。python代码如下
import statsmodels.api as sm
import statsmodels.formula.api as smfRes1sm.OLS(y,M1).fit()
Res2sm.OLS(y,M2).fit()
Res3sm.OLS(y,M3).fit()# 以Res1为例输出结果
print(Res1.summary2())
print(the AIC-value is {0:4.1f} for the linear fit ,\n{1:4.1f} for the quadratic fit ,and \n {2:4.1f} for the cubic fit.format(Res1.aic,Res2.aic,Res3.aic))在这里我们需要知道AIC值Akaike信息准则可用于评估模型的质量AIC值越低模型越好。我们看到二次模型的AIC值最小因此是最好的模型它提供了与三次方模型相同的拟合质量但使用较少的参数来得到该质量。 下面我们再用公式语言执行相同的拟合但不需要手动生成设计矩阵以及如何提取模型参数、标准误和置信区间。值得注意的是使用pandas数据框允许Python添加单独参数的信息。
import pandas as pd
import statsmodels.formula.api as smf# 将数据转化为pandas的dataframe格式
dfpd.DataFrame({x:x,y:y})# 拟合模型并展示结果
Res1Fsmf.ols(y~x,df).fit()
Res2Fsmf.ols(y~xI(x**2),df).fit()
Res3Fsmf.ols(y~xI(x**2)I(x**3),df).fit()# 作为示例显示二次方拟合的参数
print(Res2F.params)
print(Res2F.bse)
print(Res2F.conf_int())