最近要计算线性回归、指数回归的公式。就整理下吧,以便帮助他人,少走弯路。
发现网上线性回归的资料还算详细,但是指数回归资料很少,还会误导人。
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。
在线计算工具:
线性回归: 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
例子:
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,重新计算线性回归,得到截距以及斜率,最后得到指数回归方程式。
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次幂“。