计算线性回归、指数回归公式

最近计算线性回归和指数回归的公式。把它整理出来,这样你就可以帮助别人,避免走弯路。

发现在线线性回归数据相当详细,但指数回归数据稀缺且具有误导性。

在线计算工具:
线性回归: https://mathcracker.com/zh/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92#results
指数回归:https://mathcracker.com/zh/%E6%8C%87%E6%95%B0%E5%9B%9E%E5%BD%92%E8%AE%A1%E7%AE%97%E5%99%A8

example:

x: 2,3,4,5,6,8,10,12,14,16
y: 15,20,25,30,35,45,60,80,80,110
线性公式:
Y = −1.4286+6.4286X
指数公式:
Y = 14.1588e^(0.1343X)


oracle实现
##线性回归
select round(exp(regr_intercept(y, x)), 4) intercept,
       round(regr_slope(y, x), 4) slope
  from (select x, ln(y) y from test_data_linear) tmp;

##指数回归  
select round(exp(regr_intercept(y, x)), 4) intercept,
       round(regr_slope(y, x), 4) slope
  from (select x, ln(y) y from test_data_linear) tmp;  


mysql实现:
##线性回归
SELECT 
  ROUND(avgy - slope * avgx, 4) intercept,
  ROUND(slope, 4) slope 
FROM
  (SELECT 
    (sumXy - nAvgXy) / (sumPowerX - nPowerX) slope,
    avgx,
    avgy 
  FROM
    (SELECT 
      SUM(X* Y) sumXy,
      COUNT(1) * AVG(X) * AVG(Y) nAvgXy,
      SUM(POWER(X, 2)) sumPowerX,
      COUNT(1) * POWER(AVG(X), 2) nPowerX,
      AVG(X) avgx,
      AVG(Y) avgy 
    FROM
      test_data_linear tmp 
    WHERE X IS NOT NULL 
      AND Y IS NOT NULL)tmp1)tmp2;

        
##指数回归
SELECT 
  ROUND(EXP(avgy - slope * avgx), 4) intercept,
  ROUND(slope, 4) slope 
FROM
  (SELECT 
    (sumXy - nAvgXy) / (sumPowerX - nPowerX) slope,
    avgx,
    avgy 
  FROM
    (SELECT 
      SUM(X* LN(Y)) sumXy,
      COUNT(1) * AVG(X) * AVG(LN(Y)) nAvgXy,
      SUM(POWER(X, 2)) sumPowerX,
      COUNT(1) * POWER(AVG(X), 2) nPowerX,
      AVG(X) avgx,
      AVG(LN(Y)) avgy 
    FROM
     test_data_linear tmp
       WHERE X IS NOT NULL 
        AND Y IS NOT NULL)tmp1)tmp2;

线性回归公式:先求出b(斜率),再求出a(截距,y的平均数=a+b*x的平均数)

参考:https://zhidao.baidu.com/question/1821612913327566748.html?sort=11&rn=5&pn=0#wgt-answers
https://blog.csdn.net/liaomin416100569/article/details/84583784

指数回归公式:先对y求对数,以e或者10为底的对数。 将对数y、x,重新计算线性回归,得到截距以及斜率,最后得到指数回归方程式。

 参考:[5.13.1]–指数曲线回归_网易视频[0]

https://jingyan.baidu.com/article/dca1fa6f901cd0b1a44052db.html
如果a(a>0,且a≠1)的b次幂等于N,即a^b=N,那么数b叫做以a为底N的对数,记作:logaN=b,其中a叫做对数的底数,N叫做真数。

https://baike.baidu.com/item/%E6%8C%87%E6%95%B0%E5%B9%82/12913066
一般地,在数学上我们把n个相同的因数a相乘的积记做a^n [1]。这种求几个相同因数的积的运算叫做乘方,乘方的结果叫做幂。在a^n中,a叫做底数,n叫做指数。a^n读作“a的n次方”或“a的n次幂“。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年4月27日
下一篇 2022年4月27日

相关推荐