Correlation Coefficient (C#):
public double GetCorrelation(double[] num1, double[] num2)
{
double denominator = (num1.Length - 1) * GetStandardDeviation(num1) *
GetStandardDeviation(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 GetStandardDeviation(ArrayList num)
{
double SumOfSqrs = 0;
double avg = GetAvg(num);
for (int i=0; i<num.Count; i++)
{
SumOfSqrs += Math.Pow(((double)num[i] - avg), 2);
}
double n = (double)num.Count;
return Math.Sqrt(SumOfSqrs/(n-1));
}
public static double GetStandardDeviation(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.Length;
return Math.Sqrt( topSum / (n * (n-1)) );
}
public static double GetStandardDeviation(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.Length);
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.Length);
return avg;
}
public double GetAvg(ArrayList num)
{
double sum = 0.0;
for (int i=0; i<num.Count; i++)
{
sum += (double)num[i];
}
double avg = sum / System.Convert.ToDouble(num.Count);
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
"Nondisclosure007" 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!