一元线性回归求解及其模型检验的Python实现

本文提供了一段Python代码,用于计算一元线性回归的解,并进行模型的拟合优度、F检验和t检验。通过线性回归方程的计算、残差平方和以及相关统计量,评估模型的拟合效果和参数显著性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# coding=utf-8
from math import sqrt

""" *********************"""
"""一元线性回归求解及其模型检验"""
""" *********************"""
"""
linear_regresssion:求解解决和斜率
goodnessOfFit:拟合优度计算
fTest:线性关系的显著性检验
tTest:回归参数的显著性检验
Author:mikebnu
Data:2022-08-05
version: 1.0
"""

"""
    输入:x,自变量;y,因变量,列表
    输出:a,b
    功能:计算一元线性回归方程的a和b
    Y = a + bX
"""
def linear_regresssion(x, y):
    size  = len(x)               #数据点数量
    x_avearge = sum(x) / size # x的平均值
    y_average = sum(y) / size # y的平均值
    x_y_average = 0              #xy的平均值
    x_x_average = 0              #x平方的平均值
    s_xy = 0
    s_x = 0
    for i in  range(size):
        s_xy += x[i] * y[i]
        s_x += x[i]**2
    x_y_average = s_xy / size
    x_x_average = s_x /size
    b = (x_avearge * y_average - x_y_average) / (x_avearge **2 - x_x_average)
    #返回值a,b
    return [ y_average - b * x_avearge, b]

"""
    计算ESS和RSS
    ESS = ∑(y期望值- y均值 )**2
    RSS = ∑(y观测值-y期望值 )**2
    TSS = ESS + RSS
     输入:x,自变量, y因变量,a截距, b斜率
    输出:[ESS, RSS]
""
一元线性回归是一种简单的统计模型,用于分析两个变量之间的线性关系。在Python实现一元线性回归实验需要一些基础的软件环境工具包支持。 ### Python 实现一元线性回归所需的实验仪器或环境 1. **Python 环境** 首先你需要安装好 Python 解释器。推荐版本为 Python 3.x(如 3.8 或以上),因为许多现代库已经停止对 Python 2 的支持。 2. **Jupyter Notebook/Lab** Jupyter Notebook 提供了一个交互式的开发环境,非常适合进行数据分析、可视化以及模型训练等任务。你可以直接看到运行结果并方便地调整代码。 3. **NumPy 库** NumPy 是一个强大的科学计算库,可以用来处理数组矩阵运算,在构建线性回归算法时会经常用到向量化操作来提高效率。 4. **Pandas 库** Pandas 可以帮助我们更便捷地读取数据文件 (CSV, Excel) 并进行预处理工作比如缺失值填充、异常点检测等等。 5. **Matplotlib Seaborn 库** 这些绘图库可以帮助我们将数据分布及拟合直线可视化出来,便于理解模型的效果如何。 6. **Scikit-Learn 库** Scikit-learn 是机器学习领域非常流行的开源框架之一,其中包含了多种内置的一元线性回归函数可以直接调用简化我们的编写过程。 下面是一个简单示例步骤: ```python import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt # 创建虚拟数据集 X = np.array([[i] for i in range(10)]) # 自变量 x 轴数值列表 [0..9] y = X * 2 + np.random.randn(len(X)) # 因变量 y=2x+ε 其中有噪声项 ε model = LinearRegression() # 初始化线性回归模型实例 model.fit(X, y) # 训练该模型 fit 函数自动完成求解 w,b 参数估计 plt.scatter(X,y,color='blue') # 绘制原始散点图 plt.plot(X,model.predict(X),color='red',linewidth=2) # 拟合后的红线显示预测结果 plt.show() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值