- Timestamp:
- 02/05/15 16:09:10 (10 years ago)
- Location:
- trunk/sources/HeuristicLab.Analysis/3.3/Statistics/Fitting
- Files:
-
- 1 added
- 4 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Analysis/3.3/Statistics/Fitting/ExpFitting.cs
r11913 r11914 25 25 namespace HeuristicLab.Analysis.Statistics { 26 26 public class ExpFitting : IFitting { 27 private void LogFunc(double[] c, double[] x, ref double func, object obj) {27 private void ExpFunc(double[] c, double[] x, ref double func, object obj) { 28 28 func = Math.Exp(-c[0] * Math.Pow(x[0], 2)); 29 29 } … … 34 34 } 35 35 36 public void Calculate(double[] dataPoints, out double p0 , out double p1) {36 public void Calculate(double[] dataPoints, out double p0) { 37 37 var stdX = GetDefaultXValues(dataPoints.Count()); 38 Calculate(dataPoints, stdX, out p0 , out p1);38 Calculate(dataPoints, stdX, out p0); 39 39 } 40 40 41 public void Calculate(double[] y, double[] x, out double p0 , out double p1) {41 public void Calculate(double[] y, double[] x, out double p0) { 42 42 if (y.Count() != x.Count()) { 43 43 throw new ArgumentException("The lenght of x and y needs do be equal. "); … … 60 60 alglib.lsfitcreatef(xx, y, c, diffstep, out state); 61 61 alglib.lsfitsetcond(state, epsf, epsx, maxits); 62 alglib.lsfitfit(state, LogFunc, null, null);62 alglib.lsfitfit(state, ExpFunc, null, null); 63 63 alglib.lsfitresults(state, out info, out c, out rep); 64 64 65 65 p0 = c[0]; 66 p1 = c[0];67 66 } 68 67 69 public DataRow CalculateFittedLine(double[] dataPoints , string rowName) {70 DataRow newRow = new DataRow( rowName);71 double c0 , c1;72 Calculate(dataPoints, out c0 , out c1);68 public DataRow CalculateFittedLine(double[] dataPoints) { 69 DataRow newRow = new DataRow(); 70 double c0; 71 Calculate(dataPoints, out c0); 73 72 var stdX = GetDefaultXValues(dataPoints.Count()); 74 73 … … 80 79 } 81 80 82 public DataRow CalculateFittedLine(double[] y, double[] x , string rowName) {83 DataRow newRow = new DataRow( rowName);84 double c0 , c1;85 Calculate(y, x, out c0 , out c1);81 public DataRow CalculateFittedLine(double[] y, double[] x) { 82 DataRow newRow = new DataRow(); 83 double c0; 84 Calculate(y, x, out c0); 86 85 87 86 for (int i = 0; i < x.Count(); i++) { -
trunk/sources/HeuristicLab.Analysis/3.3/Statistics/Fitting/IFitting.cs
r11913 r11914 22 22 namespace HeuristicLab.Analysis.Statistics { 23 23 public interface IFitting { 24 void Calculate(double[] dataPoints, out double p0, out double p1); 25 void Calculate(double[] y, double[] x, out double p0, out double p1); 26 27 DataRow CalculateFittedLine(double[] dataPoints, string rowName); 28 DataRow CalculateFittedLine(double[] y, double[] x, string rowName); 24 DataRow CalculateFittedLine(double[] dataPoints); 25 DataRow CalculateFittedLine(double[] y, double[] x); 29 26 } 30 27 } -
trunk/sources/HeuristicLab.Analysis/3.3/Statistics/Fitting/LinearLeastSquaresFitting.cs
r11913 r11914 25 25 namespace HeuristicLab.Analysis.Statistics { 26 26 public class LinearLeastSquaresFitting : IFitting { 27 public void Calculate(double[] dataPoints, out double p0, out double p1) {27 public void Calculate(double[] dataPoints, out double slope, out double intercept) { 28 28 var stdX = Enumerable.Range(0, dataPoints.Count()).Select(x => (double)x).ToArray(); 29 Calculate(dataPoints, stdX, out p0, out p1);29 Calculate(dataPoints, stdX, out slope, out intercept); 30 30 } 31 31 32 public void Calculate(double[] y, double[] x, out double p0, out double p1) {32 public void Calculate(double[] y, double[] x, out double slope, out double intercept) { 33 33 if (y.Count() != x.Count()) { 34 34 throw new ArgumentException("The lenght of x and y needs do be equal. "); … … 48 48 } 49 49 50 p0= (sxy - (n * avgx * avgy)) / (sxx - (n * avgx * avgx));51 p1 = avgy - p0* avgx;50 slope = (sxy - (n * avgx * avgy)) / (sxx - (n * avgx * avgx)); 51 intercept = avgy - slope * avgx; 52 52 } 53 53 54 public double CalculateError(double[] dataPoints, double p0, double p1) {54 public double CalculateError(double[] dataPoints, double slope, double intercept) { 55 55 double r; 56 56 double avgy = dataPoints.Average(); … … 59 59 60 60 for (int i = 0; i < dataPoints.Count(); i++) { 61 double y = p0 * i + p1;61 double y = slope * i + intercept; 62 62 sstot += Math.Pow(dataPoints[i] - avgy, 2); 63 63 sserr += Math.Pow(dataPoints[i] - y, 2); … … 68 68 } 69 69 70 public DataRow CalculateFittedLine(double[] y, double[] x , string rowName) {71 double k, d;72 Calculate(y, x, out k, out d);70 public DataRow CalculateFittedLine(double[] y, double[] x) { 71 double slope, intercept; 72 Calculate(y, x, out slope, out intercept); 73 73 74 DataRow newRow = new DataRow( rowName);74 DataRow newRow = new DataRow(); 75 75 for (int i = 0; i < x.Count(); i++) { 76 newRow.Values.Add( k * x[i] + d);76 newRow.Values.Add(slope * x[i] + intercept); 77 77 } 78 78 return newRow; 79 79 } 80 80 81 public DataRow CalculateFittedLine(double[] dataPoints , string rowName) {82 DataRow newRow = new DataRow( rowName);83 double c0, c1;84 Calculate(dataPoints, out c0, out c1);81 public DataRow CalculateFittedLine(double[] dataPoints) { 82 DataRow newRow = new DataRow(); 83 double slope, intercept; 84 Calculate(dataPoints, out slope, out intercept); 85 85 var stdX = Enumerable.Range(0, dataPoints.Count()).Select(x => (double)x).ToArray(); 86 86 87 87 for (int i = 0; i < stdX.Count(); i++) { 88 newRow.Values.Add( c0 * stdX[i] + c1);88 newRow.Values.Add(slope * stdX[i] + intercept); 89 89 } 90 90 -
trunk/sources/HeuristicLab.Analysis/3.3/Statistics/Fitting/LogFitting.cs
r11913 r11914 67 67 } 68 68 69 public DataRow CalculateFittedLine(double[] dataPoints , string rowName) {70 DataRow newRow = new DataRow( rowName);69 public DataRow CalculateFittedLine(double[] dataPoints) { 70 DataRow newRow = new DataRow(); 71 71 double c0, c1; 72 72 Calculate(dataPoints, out c0, out c1); … … 80 80 } 81 81 82 public DataRow CalculateFittedLine(double[] y, double[] x , string rowName) {83 DataRow newRow = new DataRow( rowName);82 public DataRow CalculateFittedLine(double[] y, double[] x) { 83 DataRow newRow = new DataRow(); 84 84 double c0, c1; 85 85 Calculate(y, x, out c0, out c1);
Note: See TracChangeset
for help on using the changeset viewer.