数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 4774|回复: 4

线性回归曲线计算方法

[复制链接]
发表于 2022-9-8 17:27 | 显示全部楼层 |阅读模式
        想到了一种计算线性回归方程的方法,不是学数学的,请教一下大家这种方法已经有了?有没有具体的名字?
        具体是一系列的点中,假设有n个点,取两个相邻的点a(x1,y1)和b(x2,y2),得到两个点中间的点c((x1+x2)/2,(y1+y2)/2),每两个点都可以计算一个中间的点,n点计算一次有(n-1)个点,将这(n-1)个点按照同样的方法再计算,得到(n-2)个点,一直计算下去,直到只有两个点,既可以得到一条回归直线。
计算示例图:

与正常的线性回归曲线对比:蓝色的是正常的,绿色的是我想的这种方法计算出来的线性回归曲线。
       

用代码进行递归计算就能很快的计算出来,但是前提是先把坐标点进行排序,排序规则为先看x轴,从左到右,相同时再看y轴,从下到上。
  1. import numpy as np

  2. x1 = [5,7,8,7,2,17,2,9,4,11,12,9,6]
  3. y1 = [99,86,87,88,111,86,103,87,94,78,77,85,86]
  4. arr=[]
  5. for yy in range(len(x1)):
  6.     rr=[x1[yy],y1[yy]]
  7.     arr.append(rr)
  8. arr.sort()
  9. def line(arra):
  10.     if len(arra) > 2:
  11.         arr2=np.array(arra)
  12.         tmptmp=[]
  13.         for x in range(len(arr2)-1):
  14.             tmp1=np.array(arr2[x])
  15.             tmp2=np.array(arr2[x+1])
  16.             h1=(tmp1[0]+tmp2[0])/2
  17.             h2=(tmp1[1]+tmp2[1])/2
  18.             tmp3=[h1,h2]
  19.             tmptmp.append(tmp3)
  20.         line(tmptmp)
  21.     else:
  22.         print(arra)
  23. line(arr)
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2022-9-8 21:23 | 显示全部楼层
一般是基于最小二乘法或偏最小二乘法的回归,你这样的回归有什么数学理论基础支持(是否合理或有特定的动机需求)?如自己任意制定一套规则,那可以有无数条回归直线。

点评

易清洁术,就去你那里共同研讨数学,谢谢邀请!注意保重,四川地质危险确实存在~~~注意保重  发表于 2022-9-10 15:54
山上的泥古兄,现在无法动身去你们四川自贡!疫情缘故  发表于 2022-9-10 15:53
回复 支持 反对

使用道具 举报

发表于 2022-9-8 22:27 | 显示全部楼层
你这,跟经典方法比较过没有呢?
有没有差异,如果有,孰优孰劣?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-6-28 06:35 , Processed in 0.085027 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表