[Quantproject-developers] QuantProject/b1_ADT/Statistics BasicFunctions.cs, 1.9, 1.10
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2008-02-27 22:26:47
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Statistics In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv18084/b1_ADT/Statistics Modified Files: BasicFunctions.cs Log Message: static public double PearsonCorrelationCoefficient( double firstMultiplier , float[] firstDataVariable , double secondMultiplier , float[] secondDataVariable ) has been added Index: BasicFunctions.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b1_ADT/Statistics/BasicFunctions.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** BasicFunctions.cs 24 Jun 2007 21:25:54 -0000 1.9 --- BasicFunctions.cs 27 Feb 2008 22:26:44 -0000 1.10 *************** *** 274,277 **** --- 274,331 ---- } + #region PearsonCorrelationCoefficient with multipliers + static private void checkMultiplierIsNonZero( double multiplier ) + { + if ( multiplier == 0 ) + throw new Exception( "A multiplier cannot be zero!" ); + } + static private void pearsonCorrelationCoefficient_checkParameters( + double firstArrayMultiplier , float[] firstDataVariable, + double secondArrayMultiplier , float[] secondDataVariable ) + { + BasicFunctions.checkLengthOfDataVariables(firstDataVariable, secondDataVariable); + checkMultiplierIsNonZero( firstArrayMultiplier ); + checkMultiplierIsNonZero( secondArrayMultiplier ); + } + /// <summary> + /// Computes the Pearson's Correlation Coefficient for two weighted arrays + /// </summary> + /// <param name="firstMultiplier">multiplies each value of the + /// first data set</param> + /// <param name="firstDataVariable">first data set</param> + /// <param name="secondMultiplier">multiplies each value of the second + /// data set</param> + /// <param name="secondDataVariable">second data set</param> + /// <returns></returns> + static public double PearsonCorrelationCoefficient( + double firstMultiplier , float[] firstDataVariable, + double secondMultiplier , float[] secondDataVariable ) + { + pearsonCorrelationCoefficient_checkParameters( + firstMultiplier , firstDataVariable, + secondMultiplier , secondDataVariable ); + int n = firstDataVariable.Length; + double sumOfProduct = 0.0, sumOfFirst = 0.0, sumOfSecond = 0.0, + sumOfSquaredFirst = 0.0, sumOfSquaredSecond = 0.0; + double currentValueFromFirstDataSet , currentValueFromSecondDataSet; + for(int i = 0; i < n; i++) + { + currentValueFromFirstDataSet = firstMultiplier * firstDataVariable[i]; + currentValueFromSecondDataSet = secondMultiplier * secondDataVariable[i]; + sumOfFirst += currentValueFromFirstDataSet; + sumOfSecond += currentValueFromSecondDataSet; + sumOfProduct += currentValueFromFirstDataSet * currentValueFromSecondDataSet; + sumOfSquaredFirst += + currentValueFromFirstDataSet * currentValueFromFirstDataSet; + sumOfSquaredSecond += + currentValueFromSecondDataSet * currentValueFromSecondDataSet; + } + return (n*sumOfProduct - sumOfFirst*sumOfSecond)/ + Math.Sqrt( (n*sumOfSquaredFirst - sumOfFirst*sumOfFirst)* + (n*sumOfSquaredSecond - sumOfSecond*sumOfSecond) ); + } + #endregion PearsonCorrelationCoefficient with multipliers + + static public double SimpleAverageOfProduct( double[] firstDataVariable, double[] secondDataVariable ) |