using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Science.Statistics.BasicStatistics { public class Regression { public Regression() { } private double r, ax, sdx, ay, sdy, err; public Regression(DataForScatterDiagram data) { data.FindStandardDeviationAndAverage(); Correlation cor = new Correlation(data); r = cor.Value; ax = data.XStandardDeviationAndAverage.Average; sdx = data.XStandardDeviationAndAverage.StandardDeviation; ay = data.YStandardDeviationAndAverage.Average; sdy = data.YStandardDeviationAndAverage.StandardDeviation; err = Math.Sqrt(1.0 - r * r) * sdy; FindRegressionLine(); } public Regression(double xAverage, double xStandardDeviation, double yAverage, double yStandardDeviation, double correlation) { ax = xAverage; sdx = xStandardDeviation; ay = yAverage; sdy = yStandardDeviation; r = correlation; err = Math.Sqrt(1.0 - r * r) * sdy; FindRegressionLine(); } private Function.ToLastType l; public Function.ToLastType RegressionLine { get { return l; } } public double RootMeanSquareErrorOfY { get { return err; } } private void FindRegressionLine() { a = r * sdy / sdx; b = ay - a * ax; l = new Function.ToLastType(f); } public double PredictedYFromX(double x) { return l(x); } private double a, b; private double f(double x) { return a * x + b; } } }