Привет... Нашел алгоритм реализации линейной регрессии, но не могу разобраться.. Помогите пожалуйста :)
| Код | type TDoubleArray = array of double;
procedure LinearRegression(ValueArray, ArgumentArray: TDoubleArray; SourceSeries, DestSeries: TChartSeries; var MainCoef, FreeCoef: double; SeriesColor: TColor; var Hint: string); var b0, b1, xsum, ysum, pxy, xsqua: double; y, x: array of double; i, N: integer; s: string; begin if ValueArray <> nil then N := Length(ValueArray) else N := SourceSeries.XValues.Count; pxy := 0; xsqua := 0; SetLength(x, N); SetLength(y, N); for i := 0 to N - 1 do begin if ValueArray <> nil then begin y[i] := ValueArray[i]; x[i] := ArgumentArray[i]; end else begin y[i] := SourceSeries.YValues.Value[i]; x[i] := SourceSeries.XValues.Value[i]; end; pxy := pxy + x[i] * y[i]; xsqua := xsqua + x[i] * x[i]; end; xsum := Sum(x); ysum := Sum(y); b1 := (xsum * ysum - N * pxy) / (xsum * xsum - N * xsqua); b0 := (ysum - b1 * xsum) / N; MainCoef := b1; FreeCoef := b0; if DestSeries <> nil then for i := 0 to N - 1 do if ValueArray <> nil then DestSeries.AddXY(ArgumentArray[i], b1 * ArgumentArray[i] + b0, '', SeriesColor) else DestSeries.AddXY(SourceSeries.XValues.Value[i], b1 * SourceSeries.XValues.Value[i] + b0, '', SeriesColor); if b0 < 0 then s := '' else s := '+ '; Hint := Format('%0.3f', [b1]) + '*X ' + s + Format('%0.3f', [b0]); x := nil; y := nil; end;
|
У меня следующие данные: год кол-во 1992 | 137 1993 | 144 1994 | 158 1995 | 143 1996 | 138 1997 | 178 Если я правильно понимаю, то ValueArray- кол-во, ArgumentArray-год... Не понятно, что такое SourceSeries,DestSeries: TChartSeries, и что туда присваивать... Заранее благодарен... |