西西河

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

共:💬22 新:
全看树展主题 · 分页 下页
家园 算法求教

俺这个是数学问题,当年学的大部分都还给老师了,河里大牛多,偷个懒这里问问看。问题如下

由一组随时间产生的数据,比如

1:00pm 35

2:00pm 40

3:00pm 20

4:00pm 15

....

希望能计算出其中的线性关系,同时推算这组数据线性关系的相关度。

我隐隐约约记得一个名词好像是线性最小二乘法能干这个,哪未能指点一下。

另,我先google过了,但一看那些高数的符号就头晕,所以指点的时候麻烦说简单些。谢!

家园 用Excel先画个散点图就可以看出趋势来了

从数据上看,你这个不像是线性的,像个抛物线。

不过,无论是什么类型的,Excel都可以给你计算出线性关系的相关度。当然你还可以用更专业的软件。

家园 数据是大量的,大概3万多数据点

贴子中是个示例。有可能数据不是线性的,这就是要计算线性相关度的原因,判断线性推测的准确性。

家园 那要用专业的软件,Excel最多只能画3千个点

比如用sas。这种计算对于sas又是小菜了。

家园 要做一下线性回归。

百度找到的。Excel里做线性回归。不知道能不能做到30000个数据。你自己试吧。Excel我也不是专家。

用MATLAB的话,有一个polyfit函数。

点击插入里面的散点图,里面有一个圆滑的带点的图,点击那个以后会弹出一个空白图,单击右键后点选择数据,然后x,y分别选定,图就做出来了。之后点击图上的点,选定所有点后右击,有一个拟合,选择线性,并在方程那一栏打钩

家园 用sqlserver吧

现成的线性回归挖掘算法,使用也很容易.

家园 很少会做30000个数据的线性回归啊

这么大的数组还求线性关系很少见。你简单的抽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 然后手动带到计算器里面算就好了。

家园 看你用什么软件

但是几乎每个软件都有线性回归包或函数。狗之可也。

家园 复议。最主要看你用啥软件,每种稍微专业点的统计,数学

软件都能做这个。先讲讲你能拿到的软件,剩下的就好给你回答了。

家园 已经放到SQL里面了

用了线性回归算法,找到了公式。但还没有找到线性相关性系数的算法,依然寻找中。。。。

家园 线性相关度的公式还在研究中

30000个数据不是一个数组,是n个数组,对应n种情况。每种情况大概也就100多不到200的数据点。

家园 比较常用的,是SPSS

到处都可以早得到,版本老点也无所谓,线性是最简单的,肯定支持。

家园 需要算法就找本应用统计学的书,基本都有
家园 最方便的软件非Gnu R莫属啊

开源统计软件,功能足够了,也不用四处找破解

家园 你让问这个问题的人用R,不如让他撞豆腐更省事。

安装软件,导入数据,写出CODE,哪一步都能让他抓狂。

全看树展主题 · 分页 下页


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

Copyright © cchere 西西河