主要内容
回归分析概述
一元线性回归分析
多元线性回归
逻辑回归
其他回归分析

二、一元线性回归分析

(一)一元线性回归方法
在这里插入图片描述
在这里插入图片描述
随机误差反映了除x和y之间的线性关系之外的随机因素对y的影响。
在这里插入图片描述
分析预测房子的大小(平方英尺)和房价(美元)之间的对应关系。

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['font.size']=13
y=[6450,7450,8450,9450,11450,15450,18450]
x=[150,200,250,300,350,400,600]
plt.scatter(x,y)
plt.xlabel('面积(平方英尺)')
plt.ylabel('售价(美元)')
plt.show()

在这里插入图片描述
(二)一元线性回归模型的参数估计
一元线性回归模型中参数估计方法有最小二乘法、矩方法和极大似然方法。

最小二乘法(Least Squre Estimation, LSE)又称最小平方法,它通过最小化误差的平方和寻找数据的最佳函数匹配。
在这里插入图片描述
根据微积分求极值原理,通过求偏导并置为0得到:
在这里插入图片描述
求解方程组得到:

在这里插入图片描述
在这里插入图片描述
将求得的参数代入方程,即可得到最佳拟合曲线。

(三)一元线性回归模型的误差方差估计
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(四)一元回归模型的主要统计检验

回归分析要通过样本所估计的参数来代替总体的真实参数,或者说用样本回归线代替总体回归线。尽管从统计性质上已知,如果有足够多的重复抽样,参数的估计值的期望就等于总体的参数真值,但在一次抽样中,估计值不一定就等于该真值。那么在一次抽样中,参数的估计值与真值的差异有多大,是否显著,就需要进一步进行统计检验。

在一元回归的统计检验主要包括拟合优度检验,变量显著性检验和残差标准差检验。

  1. 拟合优度检验
    拟合优度检验是用卡方统计量进行统计显著性检验的重要内容之一。它是依据总体分布状况,计算出分类变量中各类别的期望频数,与分布的观察频数进行对比,判断期望频数与观察频数是否有显著差异,从而达到从分类变量进行分析的目的。它是对样本回归直线与样本观测值之间拟合程度的检验。
  2. 变量的显著性检验(t检验)
    显著性检验就是事先对总体(随机变量)的参数或总体分布形式做出一个假设,然后利用样本信息来判断这个假设(备择假设)是否合理,即判断总体的真实情况与原假设是否有显著性差异。显著性检验是针对我们对总体所做的假设进行检验,其原理就是“小概率事件实际不可能性原理”来接受或否定假设。

(五)一元线性回归的Python实现

对鸢尾花数据集中的’petal-length’和’petal-width’两列数据进行回归分析。

(1)导入包和数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.linear_model import LinearRegression
%matplotlib inline
iris = load_iris()  # 导入数据集iris
data = pd.DataFrame(iris.data)
data.columns = ['sepal-length','sepal-width','petal-length','petal-width']
data.head()  # 显示前5行

在这里插入图片描述
(2)对数据集中的’petal-length’和’petal-width’两列数据进行回归分析

# 使用sklearn完成一元线性回归
x = data['petal-length'].values
y = data['petal-width'].values
x = x.reshape(len(x),1)
y = y.reshape(len(y),1)
clf = LinearRegression()
clf.fit(x,y)
pre = clf.predict(x)
plt.scatter(x,y,s=50)
plt.plot(x,pre,'r-',linewidth=2)
plt.xlabel('petal-length')
plt.ylabel('petal-width')
for idx, m in enumerate(x):
    plt.plot([m,m],[y[idx],pre[idx]],'g-')
plt.show()

在这里插入图片描述
(3)显示回归线的参数

print(u"系数", clf.coef_)
print(u"截距", clf.intercept_)
print(np.mean(y-pre)**2)

# 系数 [[0.41575542]]
# 截距 [-0.36307552]
# 1.013248007150544e-32

(4)对花萼长度为3.9的花,预测其花萼宽度。

print(clf.predict([[3.9]]))

# [[1.2583706]]
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐