Page 1 of 1

Statistical observators used to test for normality.

Posted: Fri Sep 22, 2006 5:04 pm
by KBleivik
#include <math.h>
#include <iostream.h>
long double mean (const long double *x, const int n)
{
int i; long double m;
m = x[0];
for (i=1; i<n; i++) m += x;
return (m/(long double )n);
}

long double var (const long double *x, const int n)
{
long double sum,m;
int i;
m = mean(x,n);
sum = x[0] - m;
sum *= sum;
for (i=1; i<n; i++) sum += (x-m)*(x-m);
return (sum/(long double )(n-1));
}


long double meandev (const long double *x, const int n)
{
long double sum,m;
int i;
m = mean(x,n);
sum = fabs(x[0]-m);
for (i=1; i<n; i++) sum += fabs(x-m);
return (sum/(long double )n);
}


long double sd (const long double *x, const int n)
{
long double v;
v = var(x,n);
return (sqrt(v));
}

long double skew (const long double *x, const int n)
{
long double s,m,sum; int i;
s = sd(x,n);
m = mean(x,n);
s = s*s*s;
sum = pow((x[0]-m),3.0);
for (i=1; i<n; i++) sum += pow((x-m),3.0);
return (sum/(s*(long double )n));
}

long double kurt (const long double *x, const int n)
{
long double s,m,sum; int i;
s = sd(x,n);
m = mean(x,n);
s = s*s*s*s;
sum = pow((x[0]-m),4.0);
for (i=1; i<n; i++) sum += pow((x-m),4.0);
return (sum/(s*(long double )n)-3.0);
}

void main()
{
long double a[10] = {1.0, 7.8, 10.5, 5.0, 13.0, 20.0, 22.3, 17.5, 12.3,7.0};
cout << "\n The mean: " << mean(a,10) << endl;
cout << "\n The variance: " << var(a,10) << endl;
cout << "\n Absolute deviation: " << meandev(a,10) << endl;
cout << "\n The standarddeviation: " << sd(a,10) << endl;
cout << "\n Skewness: " << skew(a,10) << endl;
cout << "\n Excess kurtosis: " << kurt(a,10) << endl;
}