PDA

View Full Version : سوال: تابع رگرسیون در دلفی



arvindesign
جمعه 13 آذر 1394, 23:57 عصر
سلام من میخوام تابع رگرسیون رو داخل دلفی بنویسم قبلا یک پست گذاشتم متاسفانه تایید نشد امیدوارم این تایید بشه
Unit stat; interface
{$IFOPT N+}
Type Real=double;
{$ENDIF}
Type StatObject=Object
Procedure Clear;
Procedure Insert(x,y:real);
Function Cnt:Word;
Function SX:Real;
Function SX2:Real;
Function MX:Real;
Function SDX:Real;
Function SDXN:Real;
Function SY:Real;
Function SY2:Real;
Function MY:Real;
Function SDY:Real;
Function SDYN:Real;
Function LRA:Real;
Function LRB:Real;
Function COR:Real;
Private
sumx,sumy:real;
sumx2,sumy2:Real;
SumXY:Real;
n:word;
End;
Implementation
Procedure StatObject.Clear;
Begin
sumx:=0;
sumy:=0;
sumx2:=0;
sumy2:=0;
SumXY:=0;
n:=0;
End;
Procedure StatObject.insert(x,y:real);
Begin
sumx:=sumx+x;
sumy:=sumy+y;
sumx2:=sumx2+sqr(x);
sumy2:=sumy2+sqr(y);
SumXY:=sumXY+x*y;
inc(n);
End;
Function StatObject.Cnt; Begin cnt:=n; End;
Function StatObject.SX; Begin SX:=SumX; End;
Function StatObject.SX2; Begin SX2:=SumX2; End;
Function StatObject.SY; Begin SY:=SumY; End;
Function StatObject.SY2; Begin SY2:=SumY2; End;
Function StatObject.MX;
Begin
MX:=SumX/n
End;
Function StatObject.MY;
Begin
MY:=SumY/n
End;
Function StatObject.SDX;
Begin
SDX:=(SumX2-Sqr(sumx))/(n-1)
End;
Function StatObject.SDXN;
Begin
SDXN:=(SumX2-Sqr(sumx))/n
End;
Function StatObject.SDY;
Begin
SDY:=(SumY2-Sqr(sumy))/(n-1)
End;
Function StatObject.SDYN;
Begin
SDYN:=(Sumy2-Sqr(sumy))/n
End;
Function StatObject.Cor;
Begin
Cor:=(n*SumXY-Sumx*sumy)/Sqrt(((n*SumX2-sumx*sumx))*(n*sumy2-sumy*sumy))
End;
Function StatObject.LRA;
Begin
lra:=MY-LRB*MX;
End;
Function StatObject.LRB;
Begin
lrb:=(n*Sumxy-sumx*sumy)/(n*sumx2-sumx*sumx)
End;
end.
این کد تابع رگرسیون تو دلفی مشکل من اینکه الان باید x و y رو از درون دیبیگرید بخونه ک کدش مشابهشو با سرچ کردن پیدا کردم که کد جمع کنندس
function SUMSomething: Float;var
i: Integer;
Sum: Currency;
begin
Sum := 0;
for i := 1 to DBGrid1.SelectedRows.Count do
begin
Table1.GotoBookMark
(Pointer(DBGrid1.SelectedRows.Items[i-1])) ;
{
The TDBGrid component keeps all the
selections as Bookmarks in a
TStringList, and all the Bookmarks
must be converted to a Pointer
(what they really are) before using it.




}
Sum := Sum +
Table1.FieldByName('AField').AsFloat;
end;
Result := Sum;
end;
سوالم اینه چطور اینارو باهم ادغام کنم وقتی کلیک کردم روی دکمم دیتا ها رو بخونه از دیتا بیس عملیات رگرسیون رو انجام بده و مقدار رو بهم برگردونه