西西河

主题:算法求教 -- 我不知道

共:💬22 新:
全看分页树展 · 主题 跟帖
家园 【原创】你既然已把数据导入sql,那最小二乘法就太容易了

比如你有两个变量x和y,共有m对这样的数据,要建立的方程是 y=a+bx

需要获得a和b的估计值,以及一个相关系数r。

那么,根据最小二乘法,

b = [∑Xi Yi - (∑Xi ∑Yi)/ m] / [∑Xi^2 - (∑Xi)^2 / m)]

a = ∑Yi / m - b ∑Xi / m

r = [∑XiYi - m (∑Xi / m)(∑Yi / m)]/ SQR{[∑Xi^2 - m (∑Xi / m)^2][∑Yi^2 - m (∑Yi / m)^2]}

用sql计算公式中的几个部件,比用其他语言方便多了:

∑Xi就是select sum(x)

∑Yi就是select sum(y)

(∑Xi)^2就是 select sum(x*x)

(∑Yi)^2就是 select sum(y*y)

∑XiYi就是 select sum(x*y)

m就是select count(*)

你甚至可以在一个select 语句中就把所有的东西算完了。

关键词(Tags): #sql#最小二乘法
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河