1

我试图在几个数据集中找到一个趋势。趋势涉及找到最佳拟合线,但如果我认为该过程对于任何其他模型都不会太不同(可能更耗时)。

有3种可能的场景:

  1. 所有数据都符合单一趋势且可变性低的所有良好数据
  2. 所有或大部分数据表现出巨大可变性并且必须丢弃整个数据集的所有不良数据。
  3. 部分好数据,其中一些数据可能很好,而其余数据需要丢弃。

如果具有极端可变性的数据的净百分比太高,则必须丢弃整个数据集。这意味着基本上只有这种类型的数据,并且不良数据的百分比各不相同:

0% 坏 = 案例 1
100% 坏 = 案例 2

我只寻找低可变性的连续部分;即我不在乎是否有一些符合趋势的个别点

我正在寻找的是一种对数据集进行分段并搜索指定趋势的智能方法。由于问题的性质,我不是在寻找最适合整体趋势的部分。我知道具有“更清洁”数据的小节最终将具有与整体(包含异常值)略有不同的趋势线属性。这正是我想要的,因为这部分数据最能反映实际趋势。

我精通 C++,但由于我试图使代码开源和跨平台,所以我坚持 ISO C++ 标准。这意味着没有 .NET,但如果您有 .NET 示例,如果您还可以帮助我将其转换为 ISO C++,我将不胜感激。我也有 JAVA、一些汇编和 fortran 的知识。

数据集本身并不庞大,但大约有 1.5 亿个,因此蛮力可能不是最好的方法。

提前致谢


我知道我有一些事情悬而未决,所以让我澄清一下:

  • 每个数据集可以并且可能会有不同的趋势;即我不是在所有数据集中寻找相同的趋势。
  • 程序用户将定义他们想要的合身程度
  • 程序用户将定义子集在考虑趋势拟合之前必须有多连续
  • 如果程序被扩展以允许任何类型的拟合(不仅仅是线性),用户将定义要拟合的模型——这不是一个优先事项,如果上述查询得到解决,那么我相信这个扩展会相对琐碎
  • The outliers come about as a result of the nature of the experiment and the data acquisition technique whereby data from "bad" sections must still be collected even though these areas are known to give outliers. The discarding of these outliers DOES NOT imply that the data is being manipulated to fit any trend (statistics disclaimer, hehe).
4

2 回答 2

4

The RANSAC algorithm is one approach to what you're looking for if I understand you right. http://en.wikipedia.org/wiki/RANSAC

于 2009-04-05T12:37:16.073 回答
1

You might use the term "outlier" in your searches. An outlier is a particular point of data that represents either a special condition not captured in the experiment design, or a statistical fluke (a point grabbed from the exstreams of the distribution in a data set too small to expect that too happen).

Outlier elimination carries some risk of biasing the result by your expectation.

于 2009-04-05T13:54:44.420 回答