• 线性回归


    线性回归是一种用于建立自变量和因变量之间线性关系的统计模型。其步骤及代码如下所示:

    1.准备数据

    • 获取自变量(浓度)和因变量(吸光度)的数据,存储为两个列表

      concentrations = [0.1, 0.2, 0.3, 0.4, 0.5]
      absorbances = [0.5, 1.0, 1.5, 2.0, 2.5]
      
      • 1
      • 2

    2.计算均值

    • 分别计算自变量和因变量的均值

      mean_concentration = sum(concentrations) / len(concentrations)
      mean_absorbance = sum(absorbances) / len(absorbances)
      
      • 1
      • 2

    3.计算斜率和截距

    • 计算斜率 slope:使用公式 ∑ ( ( x − m e a n ( x ) ) ∗ ( y − m e a n ( y ) ) ) / ∑ ( ( x − m e a n ( x ) ) 2 ) \sum ((x - mean(x)) * (y - mean(y))) / \sum ((x - mean(x))^2) ((xmean(x))(ymean(y)))/((xmean(x))2)

    • 计算截距 intercept:使用公式 m e a n ( y ) − s l o p e ∗ m e a n ( x ) mean(y) - slope * mean(x) mean(y)slopemean(x)

      numerator = sum([(x - mean_concentration) * (y - mean_absorbance) for x, y in zip(concentrations, absorbances)])
      denominator = sum([(x - mean_concentration) ** 2 for x in concentrations])
      
      slope = numerator / denominator
      intercept = mean_absorbance - slope * mean_concentration
      
      • 1
      • 2
      • 3
      • 4
      • 5

    4.计算预测值

    • 使用得到的斜率和截距,对每个浓度值进行预测,得到对应的预测吸光度值

      predicted_absorbances = [slope * x + intercept for x in concentrations]
      
      • 1

    5.计算相关系数

    • 计算预测吸光度值的均值

    • 计算回归平方和 ssr:对每个预测吸光度值,计算其与预测吸光度均值之差的平方,并将所有平方差相加

    • 计算总平方和 sst:对每个实际吸光度值,计算其与实际吸光度均值之差的平方,并将所有平方差相加

    • 将 ssr 除以 sst,得到相关系数 r_value

      mean_predicted_absorbance = sum(predicted_absorbances) / len(predicted_absorbances)
      
      ssr = sum((pred_y - mean_predicted_absorbance) ** 2 for pred_y in predicted_absorbances)
      sst = sum((true_y - mean_absorbance) ** 2 for true_y in absorbances)
      
      r_value = ssr / sst
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    完整的代码如下:

    # 假设有浓度和吸光度的数据列表
    concentrations = [0.1, 0.2, 0.3, 0.4, 0.5]
    absorbances = [0.5, 1.0, 1.5, 2.0, 2.5]
    
    # 计算均值
    mean_concentration = sum(concentrations) / len(concentrations)
    mean_absorbance = sum(absorbances) / len(absorbances)
    
    # 计算斜率和截距
    numerator = sum([(x - mean_concentration) * (y - mean_absorbance) for x, y in zip(concentrations, absorbances)])
    denominator = sum([(x - mean_concentration) ** 2 for x in concentrations])
    
    slope = numerator / denominator
    intercept = mean_absorbance - slope * mean_concentration
    
    # 预测吸光度值
    predicted_absorbances = [slope * x + intercept for x in concentrations]
    
    # 计算相关系数 r_value
    mean_predicted_absorbance = sum(predicted_absorbances) / len(predicted_absorbances)
    
    ssr = sum((pred_y - mean_predicted_absorbance) ** 2 for pred_y in predicted_absorbances)
    sst = sum((true_y - mean_absorbance) ** 2 for true_y in absorbances)
    
    r_value = ssr / sst
    
    print("斜率: ", slope)
    print("截距: ", intercept)
    print("相关系数 r_value: ", r_value)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    通过以上代码,可以计算出线性回归模型的斜率、截距以及相关系数 r_value,从而对浓度和吸光度之间的线性关系进行评估。

  • 相关阅读:
    携职教育:2022年初级会计成绩查询倒计时,这几件事一定要注意
    咖啡技能知识培训|咖啡冲煮有哪几个基础要素
    LeetCode+ 66 - 70 高精度、二分专题
    开源项目丨Taier1.2版本发布,新增工作流、租户绑定简化等多项功能
    【星海出品】SDN neutron (四) 流分析
    Remix 2.0 正式发布,现代化全栈Web框架!
    1226:装箱问题 (贪心)
    【c++刷题Day2】专题3栈与队列&单调栈与单调队列
    如何避免朋友圈被隐藏折叠?三不要一要码住!
    第二章操作系统测试
  • 原文地址:https://blog.csdn.net/weixin_48158964/article/details/134437468