/* Simple program to compute Covariance on (x,y) data */ /* Assumes a two-column data file with N rows of data */ /* */ /* Written by Carey Williamson, November 2017 */ /* */ /* Usage: cc -o covariance covariance.c */ /* ./covariance < datafile */ #include #include int main() { float xval, yval; float sumx, sumy, sumxy; float meanx, meany, meanxy; int i, n; /* Read in data values and sum them up */ sumx = 0; sumy = 0; sumxy = 0; n = 0; while( scanf("%f %f\n", &xval, &yval) == 2 ) { sumx += xval; sumy += yval; sumxy += xval*yval; n++; } /* Compute the means of each */ meanx = sumx/n; meany = sumy/n; meanxy = sumxy/n; /* Report the results */ printf("Number of values: %d\n", n); printf("E[X] = %8.6f, E[Y] = %8.6f, E[XY] = %8.6f\n", meanx, meany, meanxy); printf("Cov[XY] = E[XY] - E[X]E[Y] = %8.6f\n", meanxy - meanx * meany); }