主题:算法求教 -- 我不知道
俺这个是数学问题,当年学的大部分都还给老师了,河里大牛多,偷个懒这里问问看。问题如下
由一组随时间产生的数据,比如
1:00pm 35
2:00pm 40
3:00pm 20
4:00pm 15
....
希望能计算出其中的线性关系,同时推算这组数据线性关系的相关度。
我隐隐约约记得一个名词好像是线性最小二乘法能干这个,哪未能指点一下。
另,我先google过了,但一看那些高数的符号就头晕,所以指点的时候麻烦说简单些。谢!
从数据上看,你这个不像是线性的,像个抛物线。
不过,无论是什么类型的,Excel都可以给你计算出线性关系的相关度。当然你还可以用更专业的软件。
贴子中是个示例。有可能数据不是线性的,这就是要计算线性相关度的原因,判断线性推测的准确性。
比如用sas。这种计算对于sas又是小菜了。
百度找到的。Excel里做线性回归。不知道能不能做到30000个数据。你自己试吧。Excel我也不是专家。
用MATLAB的话,有一个polyfit函数。
现成的线性回归挖掘算法,使用也很容易.
这么大的数组还求线性关系很少见。你简单的抽100个出来应该就能拟合到很好的结果了(当然前提这些数据确实是线性关系的的,你要是拿个非线性关系的的来做线性拟合另说)
y=a0+a1X
公式就是:
a0 = (∑Yi) / m - a1(∑Xi) / m
a1 = [∑Xi Yi - (∑Xi ∑Yi)/ m] / [∑Xi2 - (∑Xi)2 / m)]
线性相关度R是
R = [∑XiYi - m (∑Xi / m)(∑Yi / m)]/ SQR{[∑Xi2 - m (∑Xi / m)2][∑Yi2 - m (∑Yi / m)2]}
非常简单,计算规模和数据量也是线性相关的,随便找任何一种语言,c,fortran,matlab,origin应该都能做出来。如果excel能计算30000个数的加法也可能用来求那几个∑,总共就三个∑Xi,∑Yi,∑Xi Yi 然后手动带到计算器里面算就好了。
但是几乎每个软件都有线性回归包或函数。狗之可也。
软件都能做这个。先讲讲你能拿到的软件,剩下的就好给你回答了。
用了线性回归算法,找到了公式。但还没有找到线性相关性系数的算法,依然寻找中。。。。
30000个数据不是一个数组,是n个数组,对应n种情况。每种情况大概也就100多不到200的数据点。
到处都可以早得到,版本老点也无所谓,线性是最简单的,肯定支持。
开源统计软件,功能足够了,也不用四处找破解
安装软件,导入数据,写出CODE,哪一步都能让他抓狂。