Correlation Coefficient (C#):
public double GetCorrelation( double[] num1, double[] num2)
{
double denominator = (num1.Length - 1) * GetStandardDevi ation(num1) *
GetStandardDevi ation(num2);
double sumxy = 0;
for (int i=0; i<num1.Length; i++)
{
sumxy += num1[i] * num2[i];
}
double numerator = sumxy - num1.Length * GetAvg(num1) * GetAvg(num2);
return numerator / denominator;
}
public static double GetStandardDevi ation(ArrayList num)
{
double SumOfSqrs = 0;
double avg = GetAvg(num);
for (int i=0; i<num.Count; i++)
{
SumOfSqrs += Math.Pow(((doub le)num[i] - avg), 2);
}
double n = (double)num.Cou nt;
return Math.Sqrt(SumOf Sqrs/(n-1));
}
public static double GetStandardDevi ation(double[] num)
{
double Sum = 0.0, SumOfSqrs = 0.0;
for (int i=0; i<num.Length; i++)
{
Sum += num[i];
SumOfSqrs += Math.Pow(num[i], 2);
}
double topSum = (num.Length * SumOfSqrs) - (Math.Pow(Sum, 2));
double n = (double)num.Len gth;
return Math.Sqrt( topSum / (n * (n-1)) );
}
public static double GetStandardDevi ation(double[,] num, int col)
{
double Sum = 0.0, SumOfSqrs = 0.0;
int len = num.GetLength(0 );
for (int i=0; i<len; i++)
{
Sum += num[i,col];
SumOfSqrs += Math.Pow(num[i,col], 2);
}
double topSum = (len * SumOfSqrs) - (Math.Pow(Sum, 2));
double n = System.Convert. ToDouble(len);
return Math.Sqrt( topSum / (n * (n-1)) );
}
public double GetAvg(double[] num)
{
double sum = 0.0;
for (int i=0; i<num.Length; i++)
{
sum += num[i];
}
double avg = sum / System.Convert. ToDouble(num.Le ngth);
return avg;
}
public double GetAvg(int[] num)
{
double sum = 0.0;
for (int i=0; i<num.Length; i++)
{
sum += num[i];
}
double avg = sum / System.Convert. ToDouble(num.Le ngth);
return avg;
}
public double GetAvg(ArrayLis t num)
{
double sum = 0.0;
for (int i=0; i<num.Count; i++)
{
sum += (double)num[i];
}
double avg = sum / System.Convert. ToDouble(num.Co unt);
return avg;
}
-- Have fun!
--Peter
"Inside every large program, there is a small program trying to get out."
http://www.eggheadcafe.com http://petesbloggerama.blogspot.com http://www.blogmetafinder.com
"Nondisclosure0 07" wrote:
Hello. If this is the wrong group for this, please let me know.
I'll
post it somewhere else.
I've been doing data imports into MS Excel (ver 2007) and using the
CORREL function. What I was wondering was is there anything like
this
in Visual Basic or C#? Or even a DLL? I've got VS2008 and I really
don't want to code the CORREL function by hand if I can just pass off
2 or more array's to a function that already exists.
I've googled and went through the MSDN library and didn't find
anything. Maybe I'm searching wrong, I don't know. Any help would
be
greatly appreciated.
TIA!