const
{$IFDEF PAIDVERS}
SDLVersionInfo = 'statis_r1210_full';
IsLightEd = false;
{$ELSE}
SDLVersionInfo = 'statis_r1210_lighted';
IsLightEd = true;
{$ENDIF}
Release = 1210;
type
ESDLStatisError = class(ESDLError); { exception type to indicate errors }
TSignifLevel = (Dot20, Dot15, Dot10, Dot05, Dot01);
TSignifLevelEx = (Dot001, Dot002, Dot005, Dot010, Dot020,
Dot050, Dot100, Dot200, Dot500);
TtTestVersion = (ttPaired, ttHomoScedastic, ttHeteroScedastic);
TRegModelType = (rmMLR, rmLDA, rmRR);
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TRandGen = class (TComponent)
private
FLowBorder : double;
FHighBorder : double;
FResolution : integer;
FDistVec : array of double;
procedure SetResolution (res: integer);
function GetProbability (Idx: integer): double;
function GetRandNum: double;
function GetLambda (ix: integer): double;
procedure SetProbability (Idx: integer; Value: double);
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
property Lambda[ix: integer]: double read GetLambda;
procedure Normalize;
function Standardize: boolean;
procedure NormalDistri (m, s: double);
property Probability[ix: integer]: double
read GetProbability write SetProbability;
property Random: double read GetRandNum;
function IndexOfLambda (Lambda: double): integer;
procedure tDistri (df: integer);
procedure Chi2Distri (df: integer);
procedure FDistri (df1, df2: integer);
procedure UniformDistri;
procedure WeibullDistri (beta, eta: double);
published
property HighBorder: double read FHighBorder write FHighBorder;
property LowBorder: double read FLowBorder write FLowBorder;
property Resolution: integer read FResolution write SetResolution;
end;
TOnModelApplyRequestEvent = procedure (Sender: TObject; PercentDone: integer;
Predictors: TDoubleArray; var Response, Thresh: TDoubleArray) of object;
TOnModelCreateRequestEvent = procedure (Sender: TObject; PercentDone: integer;
ObjectList: TIntArray; var Success: boolean) of object;
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TCrossValidator = class(TComponent)
private
FTestSize : integer;
FPress : TVector;
FIsRunning : boolean;
FTPCnt : TIntVector; // true positive count
FFPCnt : TIntVector; // false positive count
FTNCnt : TIntVector; // true negative count
FFNCnt : TIntVector; // false negative count
FXMat : TMatrix; // pointer to external descriptor matrix (X)
FYMat : TMatrix; // pointer to external response matrix (Y)
FOnModelApplyRequest : TOnModelApplyRequestEvent;
FOnModelCreateRequest : TOnModelCreateRequestEvent;
FOnCheckAbort : TOnCheckAbortEvent;
procedure SetTestSize (size: integer);
function GetAccuracy (ix: integer): double;
function GetRMSEP(ix: integer): double;
function GetMCC(ix: integer): double;
function GetF1Score (ix: integer): double;
function GetFNCnt (ix: integer): integer;
function GetFPCnt (ix: integer): integer;
function GetTNCnt (ix: integer): integer;
function GetTPCnt (ix: integer): integer;
function GetTPRate(ix: integer): double;
function GetFPRate(ix: integer): double;
function GetTNRate(ix: integer): double;
function GetFNRate(ix: integer): double;
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
property Accuracy [varix: integer]: double read GetAccuracy;
function Execute: boolean;
property F1Score [varix: integer]: double read GetF1Score;
property IsExecuting: boolean read FIsRunning;
property RMSEP[varix: integer]: double read GetRMSEP;
property TPCnt [varix: integer]: integer read GetTPCnt;
property TNCnt [varix: integer]: integer read GetTNCnt;
property FPCnt [varix: integer]: integer read GetFPCnt;
property FNCnt [varix: integer]: integer read GetFNCnt;
property TPRate [varix: integer]: double read GetTPRate;
property FPRate [varix: integer]: double read GetFPRate;
property TNRate [varix: integer]: double read GetTNRate;
property FNRate [varix: integer]: double read GetFNRate;
property MatthewsCorr [varix: integer]: double read GetMCC;
published
property XMat: TMatrix read FXMat write FXMat;
property YMat: TMatrix read FYMat write FYMat;
property SizeTestSet: integer read FTestSize write SetTestSize;
property OnModelApplyRequest: TOnModelApplyRequestEvent
read FOnModelApplyRequest write FOnModelApplyRequest;
property OnModelCreateRequest: TOnModelCreateRequestEvent
read FOnModelCreateRequest write FOnModelCreateRequest;
property OnCheckAbort: TOnCheckAbortEvent
read FOnCheckAbort write FOnCheckAbort;
end;
{$IFDEF PAIDVERS}
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TMLRModel = class(TComponent)
private
FXData : TMatrix; // independent variables
FYData : TVector; // target variable
FInVarNames : TStrArray; // input variable names
FOutVarName : string; // name of output variable
FWeights : TDoubleArray; // weights of model
FSiglev : TDoubleArray; // p value of coefficients
FTVal : TDoubleArray; // p value of coefficients
FFitR2 : double; // goodness of fit of model
FStatistic : double; // F-value of model
FForceZeroIcpt : boolean; // TRUE: force model through origin
Fdfreg, // ANOVA params of the regression model
Fdfres,
Fdftotal : integer;
FSSE, FSSR,
FSST, FMSE,
FMSR : double;
FDWstat : double; // Durbin-Watson statistic
FResiduals : TDoubleArray; // residuals
FStddevRes : double; // standard dev. of the residuals
FCooksD : TDoubleArray; // Cook's distance
FMLRTRange : TMatrix; // list of training data range
FRegModType : TRegModelType; // type of regression model
FLDAThresh : double; // LDA threshold
FLDAV1, FLDAV2 : double; // LDA values
FLambda : double; // lambda of ridge regression
FRRStdCoeffs : boolean; // TRUE: standardized coeffs in ridge reg
FROCCoords : TDouble2DArray; // ROC values for LDA models
FBestROC : integer; // optimum ROC value
FAUC : double; // AUC
FThreshMMC : double; // opt. threshold obtained via MMC
FThreshAcry : double; // opt. threshold via accuracy
FThreshInfo : double; // opt. threshold via informedness
function GetInVarName (varix: integer): TNameStr;
procedure SetInVarName (varix: integer; Name: TNameStr);
procedure GetMeanVarOfTarget (var Mean, Vari: double);
procedure GetMeanVarOfVar (ColNr: integer; var Mean, Vari: double);
procedure GetMinMaxOfTarget (var Mini, Maxi: double);
procedure GetMinMaxOfVar (ColNr: integer; var Mini, Maxi: double);
function GetWeight (varix: integer): double;
function GetROCFPRate (ix: integer): double;
function GetROCTPRate (ix: integer): double;
function GetROCThresh (ix: integer): double;
function GetCooksD (objix: integer): double;
function GetResiduals (objix: integer): double;
function GetSigLevel (varix: integer): double;
function GetTValue (varix: integer): double;
function GetROCLength: integer;
function GetBestROC: integer;
procedure SetLamda (Value: double);
procedure SetMeanVarOfTarget (Mean, Vari: double);
procedure SetMeanVarOfVar (ColNr: integer; Mean, Vari: double);
procedure SetMinMaxOfTarget (Mini, Maxi: double);
procedure SetMinMaxOfVar (ColNr: integer; Mini, Maxi: double);
procedure SetRegModType (RegModType: TRegModelType);
procedure XDataResize (Sender: TObject);
procedure YDataResize (Sender: TObject);
public
constructor Create (AOwner: TComponent);
destructor Destroy;
property AUC: double read FAUC;
property BestROC: integer read GetBestROC;
property CooksD [objix: integer]: double read GetCooksD;
property DWStat: double read FDWStat;
property FitR2: double read FFitR2;
property ForceZeroIcpt: boolean read FForceZeroIcpt write FForceZeroIcpt;
property FStat: double read FStatistic;
property InVarName[varix: integer]: TNameStr
read GetInvarName write SetInVarName;
property Lambda: double read FLambda write SetLamda;
property LDAThreshold: double read FLDAThresh write FLDAThresh;
property LDAV1: double read FLDAV1;
property LDAV2: double read FLDAV2;
property ModelType: TRegModelType read FRegModType write FRegModType;
property pValue[varix: integer]: double read GetSigLevel;
property RegCoeffs[varix: integer]: double read GetWeight;
property Residuals[objix: integer]: double read GetResiduals;
property ROCFPRate[ix: integer]: double read GetROCFPRate;
property ROCLength: integer read GetROCLength;
property ROCThresh[ix: integer]: double read GetROCThresh;
property ROCTPRate[ix: integer]: double read GetROCTPRate;
property StdDevRes: double read FStdDevRes;
property TgVarName: string read FOutVarName write FOutVarName;
property ThreshAcry: double read FThreshAcry;
property ThreshInfo: double read FThreshInfo;
property ThreshMMC: double read FThreshMMC;
property tStat[varix: integer]: double read GetTValue;
property XData: TMatrix read FXData write FXData;
property YData: TVector read FYData write FYData;
function ApplyModel (Sensor: TVector; var yHat: double): integer;
function CalculateModel: integer;
procedure GetAnovaPars (var dfreg, dfres, dftotal, SSE, SSR, SST,
MSE, MSR, FStat: double);
function LoadModel (FName: String): integer;
procedure StoreModel (FName: String);
published
end;
{$ENDIF}
TPLSSclMode = (scmCenter, scmStandardize);
{$IFDEF PAIDVERS}
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TPLSModel = class(TComponent)
private
FScoreX : TMatrix;
FScoreY : TMatrix;
FLoadX : TMatrix;
FLoadY : TMatrix;
FWgtX : TMatrix;
FOrthoLd : TMatrix;
FVarX : TVector;
FVarY : TVector;
FCvdRmsEP : TVector;
FCvdMCC : TVector;
FCvdFPRate : TVector;
FCvdTPRate : TVector;
FCfThresh : TVector;
FIsDAModel : boolean;
FXMat : TMatrix;
FYMat : TMatrix;
FNFact : integer;
FRegCoeffs : TMatrix;
FXNames : array of TDTNameStr; // names of predictors
FYNames : array of TDTNameStr; // names of response variables
FScalMod : TPLSSclMode;
FObjNames : array of TDTNameStr; // names of objects
FObjAtt : array of byte; // attributes of objects
FObjTag : array of integer; // numeric tag of objects
FOnPercentDone : TOnPercentDoneEvent;
FOnCheckCVDAbort: TOnCheckAbortEvent;
function GetPredName (ix: integer): string;
procedure SetPredName (ix: integer; value: string);
function GetRespoName (ix: integer): string;
procedure SetCFThresholds (YHat: TMatrix);
procedure SetRespoName (ix: integer; value: string);
function GetObjName (ix: integer): string;
procedure SetObjName (ix: integer; value: string);
function GetObjAtt (ix: integer): byte;
procedure SetObjAtt (ix: integer; value: byte);
function GetObjTag (ix: integer): integer;
procedure SetObjTag (ix: integer; value: integer);
procedure CVDModelApplyRequest(Sender: TObject; PercentDone: integer;
Predictors: TDoubleArray; var Response, Thresh: TDoubleArray);
procedure CVDModelCreateRequest(Sender: TObject; PercentDone: integer;
ObjectList: TIntArray; var Success: Boolean);
procedure CVDModelCheckAbort (Sender: TObject; var AbortProcess: boolean);
procedure SetNFactors (nfac: integer);
procedure PercDone (Sender: TObject; Percent: longint);
procedure FXMatResize (Sender: TObject);
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
property ScoreX: TMatrix read FScoreX;
property ScoreY: TMatrix read FScoreY;
function LoadModelCoefficients (FileName: string;
var Comment: string): integer;
property LoadX: TMatrix read FLoadX;
property LoadY: TMatrix read FLoadY;
property NamePredictor[ix: integer]: string
read GetPredName write SetPredName;
property NameResponse[ix: integer]: string
read GetRespoName write SetRespoName;
property OrthoLd: TMatrix read FOrthoLd;
property WgtX: TMatrix read FWgtX;
property VarX: TVector read FVarX;
property VarY: TVector read FVarY;
property ClassifThreshold: TVector read FCfThresh;
property RegCoeff: TMatrix read FRegCoeffs;
procedure SaveModelCoefficients (FileName, Comment: string);
procedure AppendModelParamsToFile (var OFile: TextFile; Comment: string);
property XMat: TMatrix read FXMat write FXMat;
property YMat: TMatrix read FYMat write FYMat;
property NameObj[ix: integer]: string read GetObjName write SetObjName;
property ObjAttrib[ix: integer]: byte read GetObjAtt write SetObjAtt;
property ObjTag[ix: integer]: integer read GetObjTag write SetObjTag;
procedure CalculateModel;
function MaxFactors: integer;
procedure Predict (XData: TDoubleArray; var YHat: TDoubleArray); overload;
procedure Predict (XData: TMatrix; var YHat: TMatrix); overload;
procedure SetObjAttribs (Attrib: byte);
procedure SetObjTags (Tag: integer);
property CvdRmsEP: TVector read FCvdRmsEP;
property CvdMCC: TVector read FCvdMCC;
property CvdFPRate: TVector read FCvdFPRate;
property CvdTPRate: TVector read FCvdTPRate;
function CrossValidateModel (SizeTestSet: integer): double;
published
property Factors: integer read FNFact write SetNFactors;
property IsDiscriminantModel: boolean read FIsDAModel write FIsDAModel;
property ScalingMode: TPLSSclMode read FScalMod write FScalMod;
property OnCheckCVDAbort: TOnCheckAbortEvent
read FOnCheckCVDAbort write FOnCheckCVDAbort;
property OnPercentDone: TOnPercentDoneEvent
read FOnPercentDone write FOnPercentDone;
end;
{$ENDIF}
{$IFDEF GE_LEV29}
[ComponentPlatformsAttribute(pidWin32 or pidWin64 or pidWin64x)]
{$ENDIF}
TCFEvaluator = class(TComponent)
private
FTrueVec : TDoubleArray; // true values
FEstVec : TDoubleArray; // estimated values
FIsSorted : boolean;
Ftp, Ffp,
Ftn, Ffn : int64; // counts of confusion matrix
FCFThresh : double; // threshold used for calc. the confusion matrix
FIsDicho : boolean;
FDichoV1 : double;
FDichoV2 : double;
function GetNData: integer;
function GetTrueData (ix: integer): double;
procedure SetTrueData (ix: integer; value: double);
function GetEstimData (ix: integer): double;
procedure SetEstimData (ix: integer; value: double);
procedure SetNData (value: integer);
function SortEstimated: integer;
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
function Accuracy: double;
function CalcConfusionMatrix (CFThresh: double): integer;
function OptimizeThresholds (var ROCCoords: TDouble2DArray;
var BestROC: integer; var AUC, ThreshMMC,
ThreshAccuracy, ThreshInformedness: double): integer;
function CopyTrueFromMatrix (Col: integer; SrcMat: TMatrix): integer;
function CopyEstFromMatrix (Col: integer; SrcMat: TMatrix): integer;
property DichoV1: double read FDichoV1;
property DichoV2: double read FDichoV2;
property EstimData [ix: integer]: double
read GetEstimData write SetEstimData;
function F1Score: double;
function FpRate: double;
function FnRate: double;
function GetActualDichoValues (var v1, v2: double): boolean;
function GetConfMatValues (var tp, fp, tn, fn: integer;
var Thresh: double): integer;
function Informedness: double;
function MatthewsCorr: double;
property NData: integer read GetNData write SetNData;
function NegPredVal: double;
function Precision: double;
function ThreatScore: double;
function UncertCoeff: double;
property Threshold: double read FCFThresh;
function TnRate: double;
function TpRate: double;
property TrueData [ix: integer]: double
read GetTrueData write SetTrueData;
published
end;
const
NUMERICSIGLEVEL : array[TSignifLevelEx] of double = (0.001, 0.002, 0.005,
0.010, 0.020, 0.050, 0.100, 0.200, 0.500);
NUMERICSIGNIFLEVEL : array[TSignifLevel] of double = (0.20, 0.15, 0.10,
0.05, 0.01);
function AdjustedRandIx
(ContTab : TInt2DArray) { contingency table }
: double; { adjusted Rand index }
function AkaikeInfCrit
(nobs, { number of observations }
nvars : integer; { number of variables }
SSE: double) { sum of squared residuals }
: double;
function BinomCoeff
(n : integer; { total number of elements }
k : integer) { number of drawn elements }
: longint; { binomial coefficient }
function Anova1F
(Data : TVector; { collection of data to be analyzed }
TmLevel : TIntVector; { level of treatment of each data point }
var SSTm,
SSErr,
SSTotal : double; { sum of squares }
var DFTm,
DFErr,
DFTotal : integer; { degrees of freedom }
var FSTat : double) { F value }
: double; { p-value }
function BartlettTest
(Data : TDouble2DArray; { two dimensional dataset }
NSampleData : TIntArray; { number of data points for each sample }
var Chi2 : double) { the corresponding chi-square value }
: double; { p-value }
function BinomDistriDensity
(SampleSize : integer; { sample size drawn from infinite population }
FractionA : double; { fraction of items marked "A" }
k : integer) { k drawn items marked "A" (out of SampleSize) }
: double; { density of the binomial distribution }
function BinomDistriIntegral
(SampleSize : integer; { sample size drawn from infinite population }
FractionA : double; { fraction of items marked "A" }
k : integer) { k drawn items marked "A" (out of SampleSize) }
: double; { integral of the binomial distribution }
function BinomDistriQuantile
(SampleSize : integer; { sample size drawn from infinite population }
FractionA : double; { fraction of items marked "A" }
p : double; { probability }
var ActualProb : double){ actual probability assoc. with returned quantile }
: integer; { quantile of binomial distribution }
function BinomSignTest
(Data : TBoolArray; { binary data to be tested }
p1 : double) { expected probability of TRUE values }
: double; { probability of H0 }
function CalcAndTestKurtosis
(Data : TDoubleArray; { data to be tested }
OneSided : boolean; { one sided / two sided tests }
var m4, { fourth moment }
Gamma, { gamma = kurtosis }
zStatistic : double) { normally distributed statistic for test }
: double; { probability }
function CalcAndTestSkewness
(Data : TDoubleArray; { data to be tested }
OneSided : boolean; { one sided / two sided tests }
var m3, { third moment }
Gamma, { gamma = skewness }
zStatistic : double) { normally distributed statistic for test }
: double; { probability }
function CalcFishQ
(m1,m2, { mean values, class 1 & 2 }
s1,s2 : double) { standard deviations }
: double; { Fisher ratio }
function CFAccuracy
(tp, fp, { true and false positive counts }
tn, fn : integer) { true and false negative counts }
: double; { classifier accuracy }
function CFF1Score
(tp, fp, { true and false positive counts }
tn, fn : integer) { true and false negative counts }
: double; { classifier F1 score }
function CFInformedness
(tp, fp, { true and false positive counts }
tn, fn : integer) { true and false negative counts }
: double; { Informedness }
function CFMatthewsCorr
(tp, fp, { true and false positive counts }
tn, fn : integer) { true and false negative counts }
: double; { Matthews correlation }
function Chi2DistriDensity
(chi2 : double; { chi square quantile }
df : integer) { degrees of freedom }
: double; { density of chi square distribution }
function chi2DistriIntegral
(chi2 : double; { chi square quantile }
df : integer) { degrees of freedom }
: double; { probability }
function chi2DistriQuantile
(p : double; { probability }
df : integer) { degrees of freedom }
: double; { quantile of chi2-distribution }
function Chi2OfContTab
(ContTab : TInt2DArray; { contingency table }
var chisq, { calculated chi-square }
p : double) { corresponding probability }
: integer; { error code }
function Chi2OfContTabYates
(ContTab : TInt2DArray; { 2x2 contingency table }
var chisq, { calculated chi-square }
p : double) { corresponding probability }
: integer; { error code }
function CorrTest
(Data1, Data2 : TDoubleArray; { data to be tested }
RefCorr : double; { reference correlation }
var rxy : double; { corr. coeff. }
var pvalue : double) { p value }
: integer; { error code }
function ConfidenceInterval
(alpha : double; { level of significance }
StdDev : double; { standard deviation }
NumData : integer) { sample size }
: double; { confidence interval }
function DeanDixonCriticalValues
(NData : integer; { number of data }
SigLevel : TSignifLevelEx) { level of significance }
: double; { critical value }
function DeanDixonTest
(Data : TVector; { data to be tested }
SigLevel : TSignifLevelEx; { level of significance }
var Statistic : double) { test statistic }
: integer; overload; { index of outlier }
function DeanDixonTest
(Data : TDoubleArray; { data to be tested }
SigLevel : TSignifLevelEx; { level of significance }
var Statistic : double) { test statistic }
: integer; overload; { index of outlier }
function DurbinWatsonCrit5pct
(NData, { number of data points }
NParam : integer; { number of variables involved }
var dLower,
dUpper : double) { critical values at the 5% significance level }
: boolean; { TRUE if crit. values are valid }
function DurbinWatson
(Residuals : TDoubleArray) { data to be tested }
: double; { Durbin-Watson statistic }
function Erf
(x : double) { parameters }
: double; { function result }
function ErfApprox
(x : double) { parameters }
: double; { function result }
function EstimateProbDensity
(const SampleData : TVector; { sample data }
var Probability : TVector; { resulting prob. density }
LowBorder, { lower border of estimation }
HighBorder, { upper border of estimation }
Smoothing : double; { width of the Gaussian kernel }
WindowWidth : double; { width of local density estimation }
Resolution : integer; { resolution of the prob. density }
var MinDensIx, { minium density }
MaxDensIx : integer; { maximum density }
Feedback : TOnPercentDoneEvent) { feedback routine }
: integer;
function ExtractClassifPerformance
(clix : integer; { class index }
ConfMat : TIntMatrix; { multi-class confusion matrix }
var tp, fp, { true/false positive count }
tn, fn : integer) { true/false negative count }
: integer; overload;
function ExtractClassifPerformance
(clix : integer; { class index }
ConfMat : TInt2DArray; { multi-class confusion matrix }
var tp, fp, { true/false positive count }
tn, fn : integer) { true/false negative count }
: integer; overload;
function FDistriDensity
(F : double; { F quantile }
df1, df2 : integer) { degrees of freedom }
: double; { density of F distribution }
function FDistriIntegral
(F : double; { F quantile }
df1 : integer; { degrees of freedom }
df2 : integer) { degrees of freedom }
: double; { probability }
function FDistriQuantile
(p : double; { probability }
df1 : integer; { degrees of freedom }
df2 : integer) { degrees of freedom }
: double; { quantile }
function FisherExactTest
(FreqTab : TInt2DArray; { 2x2 frequency table }
var ProbLow, { cumulative prob. of lower tail }
ProbHigh, { cumulative prob. of upper tail }
Prob2Tail : double) { cumulative prob. of two-tailed test }
: integer; { error code }
function FisherTransform
(x : double) { argument }
: double; { Fisher's transform }
function FisherTransformInv
(x : double) { argument }
: double; { inverse Fisher transform }
function FriedmanTest
(Data : TMatrix; { data to be tested }
var Chi2Stat : double) { chi2 value }
: double; { p value }
function GiniCoeff
(Data : TDoubleArray) { data array }
: double; { Gini coefficient }
function GrubbsCriticalValues
(NData : integer; { number of data points }
alpha : double; { level of significance }
twosided : boolean) { TRUE: two-sided test }
: double; { critical value for 2-sided Grubbs test }
function GrubbsTest
(Data : TVector; { data to be tested }
SigLevel : double; { level of significance }
var Statistic : double; { test statistic }
var Outlier : integer) { index of outlier }
: integer; overload; { error code }
function GrubbsTest
(Data : TDoubleArray; { data to be tested }
SigLevel : double; { level of significance }
var Statistic : double; { test statistic }
var Outlier : integer) { index of outlier }
: integer; overload; { error code }
function HyperGeoDistriDensity
(p : double; { probability of interesting cases }
npop : integer; { total number of cases }
nsample : integer; { no. of samples drawn }
k : integer) { no. of interesting cases to be expected }
: double; { probab. to observe exactly k interesting cases }
function IncompleteBeta
(x : double; { quantile }
a, b : double) { parameters }
: double; { function result }
function IncompleteGamma
(x, a : double): { parameters }
double; { function result }
function KolmogSmir1SampleTestStat
(SampleSize : integer; { size of sample to be tested }
alpha : TSignifLevel) { level of significance }
: double; { critical KS value }
function KSPValue
(NumData : integer; { sample size }
KSD : double) { Kolmogorov-Smirnov test statistic }
: double; { p-value corresponding to KSD }
function KSQuantile
(NumData : integer; { sample size }
alpha : TSignifLevel) { level of significance }
: double; { critical value }
function Lambda
(ContTab : TInt2DArray; { contingency table }
var LambdaRow, { lambda, rows contain the dependent variable }
LambdaCol : double) { lambda, columns contain the dependent variable }
: integer; { error number }
function LeveneTest
(Data : TVector; { collection of data to be analyzed }
TmLevel : TIntVector; { level of treatment of each data point }
var FStat : double) { F value }
: double; { p value }
function LillieforsPValue
(NumData : integer; { sample size }
KSD : double) { Lilliefors test statistic }
: double; { p-value corresponding to KSD }
function LillieforsQuantile
(NumData : integer; { sample size }
alpha : double) { level of significance }
: double; { critical value }
function LnBeta
(z,w : double) { arguments of beta function }
: double; { Beta(z,w) }
function LnBinomCoeff
(n : integer; { total number of elements }
k : integer) { number of drawn elements }
: double; { logarithm of binomial coefficient }
function LnGamma
(x : double) { argument of gamma function }
: double; { ln(gamma(x)) }
function LoadPLSModelComment
(FileName : string; { filename of PLS model }
var Comment : string) { comment }
: integer; { error code }
function MedianTest
(DataGrp1, { data of sample 1 }
DataGrp2 : TDoubleArray; { data of sample 2 }
var Chi2, { chi-square value }
pChi2, { corresponding probability }
Chi2Yates, { chi-square value, corrected after Yates }
pChi2Yates, { corresponding probability, corrected after Yates }
pExact : double) { Fisher's exact probability }
: integer; { error code }
function nDistriDensity
(u : double) { critical value }
: double; { density of normal distribution }
function nDistriIntegral
(u : double) { argument }
: double; {integral of norm.dens.funct.}
function nDistriQuantile
(p : double) { probability }
: double; { normal distribution }
function PearsonCorrCoeff
(Data1, Data2 : TDoubleArray; { data to be correlated }
var CorrCoeff : double) { correlation coefficient }
: integer; { error code }
function PercentileOfArray
(Data : TDoubleArray; { 1D data array }
prob : double; { probability }
FirstIx, LastIx : integer;{ first and last index of region to be checked }
var Percentile : double) { calculated percentile }
: integer; { error code }
function Perform1SampleChi2Test
(Data : TDoubleArray; { data points of the two samples }
RefStdDev : double; { reference standard dev. }
OneSided : boolean; { TRUE: one sided probability }
var Mean, { means of the two samples }
StdDev, { standard deviations of the two samples }
Chi2Statistic : double; { chi2-statistic }
var df : integer) { degrees of freedom }
: double; overload; { probability }
function Perform1SampleTTest
(Data : TDoubleArray; { data points of the sample }
RefMean : double; { reference mean }
OneSided : boolean; { TRUE: one sided probability }
var Mean, { mean of the sample }
StdDev, { standard deviation of the sample }
tStatistic : double; { t-statistic }
var df : integer) { degrees of freedom }
: double; overload; { probability }
function Perform2SampleTTest
(Data1, Data2 : TVector; { data points of the two samples }
TestType : TtTestVersion; { kind of t-test to be performed }
OneSided : boolean) { TRUE: one sided probability }
: double; overload; { probability }
function Perform2SampleTTest
(Data1, Data2 : TVector; { data points of the two samples }
TestType : TtTestVersion; { kind of t-test to be performed }
OneSided : boolean; { TRUE: one sided probability }
var Mean1, Mean2, { means of the two samples }
Stdv1, Stdv2, { standard deviations of the two samples }
MeanDiff, { mean of difference of sample pairs }
StdDiff, { standard deviation of difference of sample pairs }
tStatistic : double; { t-statistic }
var df : integer) { degrees of freedom }
: double; overload; { probability }
function Perform2SampleTTest
(Data1, Data2 : TDoubleArray; { data points of the two samples }
TestType : TtTestVersion; { kind of t-test to be performed }
OneSided : boolean; { TRUE: one sided probability }
var Mean1, Mean2, { means of the two samples }
Stdv1, Stdv2, { standard deviations of the two samples }
MeanDiff, { mean of difference of sample pairs }
StdDiff, { standard deviation of difference of sample pairs }
tStatistic : double; { t-statistic }
var df : integer) { degrees of freedom }
: double; overload; { probability }
function PerformChi2DistComp
(CountObserved, { array of observed counts }
CountExpected : TIntArray; { array of expected counts }
var Chi2 : double; { chi-square value }
var p : double; { corresponding p value }
var df : integer; { degrees of freedom }
var nObs, nExp : integer) { number of observations in the count arrays }
: integer; { error code }
function PerformFTest
(Data1, Data2 : TDoubleArray; { data points of the two samples }
OneSided : boolean; { TRUE: one sided probability }
var Mean1, Mean2, { means of the two samples }
Stdv1, Stdv2, { standard deviations of the two samples }
FStatistic : double; { t-statistic }
var df1, df2 : integer) { degrees of freedom }
: double; { probability }
function PerformKSNormalityTest
(Data : TVector; { sample observations }
IsSorted : boolean) { TRUE: vector is already sorted in asc. order }
: double; overload; { KS statistic }
function PerformKSNormalityTest
(Data : TDoubleArray; { sample observations }
IsSorted : boolean) { TRUE: vector is already sorted in asc. order }
: double; overload; { KS statistic }
function PerformLillieforsTest
(Data : TVector; { sample observations }
IsSorted : boolean) { TRUE: vector is already sorted in asc. order }
: double; overload; { Lilliefors statistic }
function PerformLillieforsTest
(Data : TDoubleArray; { sample observations }
IsSorted : boolean) { TRUE: vector is already sorted in asc. order }
: double; overload; { Lilliefors statistic }
function PerformMannWhitneyUTest
(Data1, Data2 : TVector; { data points of the two samples }
OneSided : boolean; { TRUE: one sided probability }
var UStatistic : double) { U-statistic }
: double; overload; { probability }
function PerformMannWhitneyUTest
(Data1, Data2 : TDoubleArray; { data points of the two samples }
OneSided : boolean; { TRUE: one sided probability }
var UStatistic : double) { U-statistic }
: double; overload; { probability }
function PerformSiegelTukeyTest
(Data1, Data2 : TDoubleArray; { data points of the two samples }
var UStatistic : double) { U-statistic }
: double; { probability }
function Prob2x2Contingency
(FreqTab : TInt2DArray; { 2x2 frequency table }
var Prob : double) { probability }
: integer; { error code }
function ExactRunsTest
(gs1, gs2 : integer; { group sizes }
observed : integer) { number of observed runs }
: double; { propability to find the observed number of runs }
function RunsTest
(Data : TBitFld; { binary data }
var p : double) { associated level of significance }
: boolean; overload; { TRUE: sequence is non-random }
function RunsTest
(Data : TBoolArray; { binary data }
var p : double) { associated level of significance }
: boolean; overload; { TRUE: sequence is non-random }
function RunsTestSerial
(Data : TVector; { data to be tested for serial randomness }
var p : double) { associated level of significance }
: boolean; overload; { TRUE: sequence is non-random }
function RunsTestSerial
(Data : TDoubleArray; { data to be tested for serial randomness }
var p : double) { associated level of significance }
: boolean; overload; { TRUE: sequence is non-random }
function tDistriDensity
(t : double; { t value }
df : integer) { degrees of freedom }
: double; { density of t distribution }
function tDistriIntegral
(t : double; { t value }
df : integer) { degrees of freedom }
: double; { probability }
function tDistriQuantile
(p : double; { probability }
df : integer) { degrees of freedom }
: double; { quantile of t-distribution }
function UDistriDensity
(U : integer; { U statistic }
M, N : integer) { number of data of each distribution }
: double; { density of the U distribution }
function UDistriIntegral
(U : integer; { U statistic }
M, N : integer) { number of data of each distribution }
: double; { probability }
function UDistriQuantile
(m, n : integer; { number of data of each distribution }
prob : double) { probability }
: integer; { quantile of U-distribution }
function WeibullDensity
(x : double; { argument }
beta : double; { parameters of Weibull distribution }
eta : double)
: double; { density }
function WilcoxonSignedRankTest
(Data1, Data2 : TDoubleArray; { data points of the two samples }
alpha : double; { level of significance }
OneSided : boolean; { TRUE: one sided test }
var mdiff, { median of differences }
WStat, { Wilcoxon statistic }
WCritLow, { lower critical limit }
WCritHigh : double) { upper critical limit }
: integer; { error code }
function WilcoxonSRQuantile
(NData : integer; { number of data points }
alpha : double; { level of significance }
twosided : boolean) { TRUE: two-sided test }
: integer; { critical value for Wilcoxon signed rank test }
function ShapiroWilkTest
(Data : TVector; { data vector }
NCens : integer; { number of right censored data }
var pW : double; { p-value of WStat }
var WStat : double) { W statistics }
: integer; overload; { error number }
function ShapiroWilkTest
(Data : TDoubleArray; { data vector }
NCens : integer; { number of right censored data }
var pW : double; { p-value of WStat }
var WStat : double) { W statistics }
: integer; overload; { error number }
function ShapiroWilkIntegral
(WStat : double; { W statistic of the Shapiro-Wilk test }
NDat, { number of data }
NCens : integer) { number of censored data }
: double; { integral }
function TheilSenEstimator
(DataX, { data to be used - x axis }
DataY : TDoubleArray; { data to be used - y axis }
var slope : double; { slope }
var Intercept : double; { intercept }
var slopeLL : double; { lower limit of slope }
var slopeUL : double; { upper limit of slope }
var iceptLL : double; { lower limit of intercept }
var iceptUL : double) { upper limit of intercept }
: integer; { error number }
|