엑셀 TREND 함수를 C#으로 구현하는 로직입니다.
회기분석을 EXCEL을 사용해서 썼을텐데 그걸 로직화 시키느라 고생좀 했습니다.
아래의 소스를 가져다 쓰시면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | public double Trend(double[] known_y, double[] known_x, double new_x) { double m, b; LeastSquaresFitLinear(known_y, known_x, out m, out b); List<double> new_y = new List<double>(); double y = (m * new_x) + b; new_y.Add(y); return new_y.ToArray()[0]; } public void LeastSquaresFitLinear(double[] known_y, double[] known_x, out double M, out double B) { if (known_y.Length != known_x.Length) { throw new ArgumentException("arrays are unequal lengths"); } int numPoints = known_y.Length; double x1, y1, xy, x2, J; x1 = y1 = xy = x2 = 0.0; for (int i = 0; i < numPoints; i++) { x1 = x1 + known_x[i]; y1 = y1 + known_y[i]; xy = xy + known_x[i] * known_y[i]; x2 = x2 + known_x[i] * known_x[i]; } M = B = 0; J = ((double)numPoints * x2) - (x1 * x1); if (J != 0.0) { M = (((double)numPoints * xy) - (x1 * y1)) / J; B = ((y1 * x2) - (x1 * xy)) / J; } } | cs |
'프로그래밍 > Etc.' 카테고리의 다른 글
반응형 UI에서 IE 8 호완성 문제 (1) | 2017.10.17 |
---|---|
NotePad 빈칸을 Tab으로 변환하기 (0) | 2017.03.28 |
Menu 쿼리 만들기. (0) | 2017.03.24 |
Excel Growth 함수 c# 구현 (0) | 2016.03.08 |
iis 상에서 piwik 설정 (설치형 로그분석기) (0) | 2016.02.15 |