0

我需要根据二维坐标系上给定的一组点样本来预测下一个点。

我正在使用最佳拟合直线法进行此类预测。

请让我知道是否有比最佳拟合直线更好的方法?

我的代码如下:

public class LineEquation
{
    public double m; //slope
    public double c;  //constant  in y=mx+c
}
public class Point
{
    public double x;
    public double y;
}

public class BestFitLine
{
    public Point[] points = new Point[7];

    public void InputPoints(Point[] points)
    {

        for (int i = 0; i < points.Length; i++)
        {
            points[i] = new Point();
        }

        points[0].x = 12;
        points[0].y = 13;

        points[1].x = 22;
        points[1].y = 23;


        points[2].x = 32;
        points[2].y = 33;


        points[3].x = 42;
        points[0].y = 23;


        points[4].x = 52;
        points[4].y = 33;


        points[5].x = 62;
        points[5].y = 63;

        points[6].x = 72;
        points[6].y = 63;



    }

    public LineEquation CalculateBestFitLine(Point[] points)
    {
        double constant = 0;
        double slope=0;
        for (int i = 0; i < points.Length - 1; i++)
        {
            for (int j = i + 1; j < points.Length; j++)
            {

                double m = (points[j].y - points[i].y) / (points[j].x - points[i].x);
                double c = points[j].y - (m * points[j].x);
                constant += c;
                slope += m;
            }
        }
        int lineCount =((points.Length-1)*points.Length)/2;

        slope = slope / lineCount;
        constant = constant / lineCount;
        LineEquation eq = new LineEquation();
        eq.c = constant;
        eq.m = slope;
        return eq;

    }}
4

2 回答 2

0

如果您的 x 坐标由日期组成,您可以依赖具有以下组件的广义加性模型: - 趋势 - 年度概况 - 每周概况 - 每日概况

GAM 模型在 R 中可用,因此我建议您使用 JRI 来将您的 java 代码与 R 接口。

干杯

于 2013-07-17T12:31:27.943 回答
0

我认为您可以考虑使用指数移动平均线之类的平滑算法来预测近期的数据点,

http://en.wikipedia.org/wiki/Exponential_smoothing

于 2013-07-17T12:25:10.120 回答