/* nag_partial_corr (g02byc) Example Program. * * Copyright 2000 Numerical Algorithms Group. * * Mark 6, 2000. */ #include #include #include #include #define X(I, J) x[((I) -1)*m + ((J) -1)] #define R(I, J) r[((I) -1)*m + ((J) -1)] int main(void) { Integer exit_status = 0, j, k, m, n, nx, ny, *sz = 0; NagError fail; double *r = 0, *std = 0, sw, *v = 0, *x = 0, *xbar = 0; INIT_FAIL(fail); printf("nag_partial_corr (g02byc) Example Program Results\n"); /* Skip heading in data file */ scanf("%*[^\n]"); scanf("%ld %ld", &n, &m); if (!(r = NAG_ALLOC(m*m, double)) || !(std = NAG_ALLOC(m, double)) || !(v = NAG_ALLOC(m*m, double)) || !(x = NAG_ALLOC(n*m, double)) || !(xbar = NAG_ALLOC(m, double)) || !(sz = NAG_ALLOC(m, Integer))) { printf("Allocation failure\n"); exit_status = -1; goto END; } for (j = 1; j <= n; ++j) for (k = 1; k <= m; ++k) scanf("%lf", &X(j, k)); /* Calculate correlation matrix */ /* nag_corr_cov (g02bxc). * Product-moment correlation, unweighted/weighted * correlation and covariance matrix, allows variables to be * disregarded */ nag_corr_cov(n, m, x, m, 0, 0, &sw, xbar, std, r, m, v, m, &fail); if (fail.code == NE_NOERROR) { /* Print the correlation matrix */ printf("\nCorrelation Matrix\n\n"); for (j = 1; j <= m; j++) { for (k = 1; k <= m; k++) if (j > k) printf("%11s", ""); else printf("%7.4f%4s", R(j, k), ""); printf("\n"); } scanf("%ld %ld", &ny, &nx); for (j = 1; j <= m; ++j) scanf("%ld", &sz[j - 1]); /* Calculate partial correlation matrix */ /* nag_partial_corr (g02byc). * Computes partial correlation/variance-covariance matrix * from correlation/variance-covariance matrix computed by * nag_corr_cov (g02bxc) */ nag_partial_corr(m, ny, nx, sz, v, m, r, m, &fail); if (fail.code != NE_NOERROR) { printf("Error from nag_partial_corr (g02byc).\n%s\n", fail.message); exit_status = 1; goto END; } /* Print partial correlation matrix */ printf("\n"); printf("\nPartial Correlation Matrix\n\n"); for (j = 1; j <= ny; j++) { for (k = 1; k <= ny; k++) { if (j > k) printf("%11s", ""); else if (j == k) printf("%7.4f%4s", 1.0, ""); else printf("%7.4f%4s", R(j, k), ""); } printf("\n"); } } else { printf("Error from nag_corr_cov (g02bxc).\n%s\n", fail.message); exit_status = 1; goto END; } END: NAG_FREE(r); NAG_FREE(std); NAG_FREE(v); NAG_FREE(x); NAG_FREE(xbar); NAG_FREE(sz); return exit_status; }