using System;
using System.Collections.Generic;
namespace WindowsFormsApplication1
{
public class RegressionLine
{
public RegressionLine(Listdata)
{
this.Data = data;
this.CalcSlopeIntercept();
}
private List Data { get; set; }
public double Slope { get; private set; }
public double Intercept { get; private set; }
private void CalcSlopeIntercept()
{
double sumXY = 0;
double sumX = 0;
double sumY = 0;
double sumX2 = 0;
for (int i = 0; i < this.Data.Count; i++)
{
sumXY += Data[i].X * this.Data[i].Y;
sumX += Data[i].X;
sumY += this.Data[i].Y;
sumX2 += Math.Pow(Data[i].X, 2);
}
this.Slope = (this.Data.Count * sumXY - sumX * sumY) / (this.Data.Count * sumX2 - Math.Pow(sumX, 2));
this.Intercept = (sumX2 * sumY - sumXY * sumX) / (this.Data.Count * sumX2 - Math.Pow(sumX, 2));
}
public double GetExpectancyX(double y)
{
return (y - this.Intercept) / this.Slope;
}
public double GetExpectancyY(double x)
{
return this.Slope * x + this.Intercept;
}
}
}
2017年3月13日月曜日
回帰直線のメモ
登録:
コメント (Atom)