怎么做插值

时间:2010-07-30 12:30:30

标签: c# .net-3.5

我的分析数据非常少,因此我希望通过插值生成更多数据用于分析。

我的数据集包含23个独立属性和1个依赖属性.....如何进行插值?

编辑:

我的主要问题是数据短缺,我要增加数据集的大小,n属性是分类的,例如属性A可能是低,高,meduim,所以插值是否是正确的方法? ??

5 个答案:

答案 0 :(得分:1)

这是一个数学问题,但问题中的信息太少而无法正确回答。根据您的实际数据的分布,您可能会尝试找到它遵循的功能。您也可以尝试使用人工神经网络插入数据,但这很复杂。问题在于找到你需要的插值来分析你已经拥有的数据,这就失败了。这个问题可能还有更多,但没有解释。数据的性质是什么?你能把它放在n维空间吗?你期望从分析中获得什么?

答案 1 :(得分:0)

粗略地说,要插入一个数组:

double[] data = LoadData();
double requestedIndex = /* set to the index you want - e.g. 1.25 to interpolate between values at data[1] and data[2] */;

int previousIndex = (int)requestedIndex; // in example, would be 1
int nextIndex = previousIndex + 1; // in example, would be 2

double factor = requestedIndex - (double)previousIndex; // in example, would be 0.25

// in example, this would give 75% of data[1] plus 25% of data[2]
double result = (data[previousIndex] * (1.0 - factor)) + (data[nextIndex] * factor);

这真的是伪代码;它不执行范围检查,假设您的数据在具有索引器的对象或数组中,等等。

希望这有助于您入门 - 如有任何问题,请发表评论。

答案 2 :(得分:0)

答案 3 :(得分:0)

我可以建议使用Cubic Spline插值 http://www.coastrd.com/basic-cubic-spline-interpolation

除非您有特殊需求,否则很容易实现并很好地计算样条曲线。

答案 4 :(得分:0)

查看Elements of statistical learning中提供的回归方法;其中大多数可以在R中进行测试。有很多模型可供使用:线性回归,局部模型等。