示例#1
0
static void odell_feiveson_compute (gretl_matrix *W,
				    double *Z,
				    int v)
{
    double Xi, Zri, Zrj;
    double wii, wij;
    int p = W->rows;
    int i, j, r;

    for (i=0; i<p; i++) {
	gretl_rand_chisq(&Xi, 0, 0, v - i);
	wii = Xi;
	for (r=0; r<i; r++) {
	    Zri = Z[ijton(r, i, p)];
	    wii += Zri * Zri;
	}
	gretl_matrix_set(W, i, i, wii);
	for (j=i+1; j<p; j++) {
	    wij = Z[ijton(i, j, p)] * sqrt(Xi);
	    for (r=0; r<i; r++) {
		Zri = Z[ijton(r, i, p)];
		Zrj = Z[ijton(r, j, p)];
		wij += Zri * Zrj;
	    }
	    gretl_matrix_set(W, i, j, wij);
	    gretl_matrix_set(W, j, i, wij);
	}
    }
}
示例#2
0
static int qr_make_vcv (MODEL *pmod, gretl_matrix *v, int flag)
{
    int k = pmod->ncoeff;
    int m = k * (k + 1) / 2;
    double x;
    int i, j, idx;

    pmod->vcv = malloc(m * sizeof *pmod->vcv);
    if (pmod->vcv == NULL) {
	return E_ALLOC;
    }

    if (flag == VCV_XPX) {
	gretl_model_set_int(pmod, "vcv_xpx", 1);
    }

    for (i=0; i<k; i++) {
	for (j=0; j<=i; j++) {
	    idx = ijton(i, j, k);
	    x = gretl_matrix_get(v, i, j);
	    if (flag == VCV_SIMPLE) {
		x *= pmod->sigma * pmod->sigma;
	    }
	    pmod->vcv[idx] = x;
	    if (i == j) {
		pmod->sderr[i] = sqrt(x);
		if (flag == VCV_XPX) {
		    pmod->sderr[i] *= pmod->sigma;
		}
	    }
	}
    }

    return 0;
}
示例#3
0
static int get_x12a_vcv (const char *fname, MODEL *pmod, int nc)
{
    FILE *fp;
    char line[1024], valstr[24];
    double x;
    int i, j, k, nt = (nc * nc + nc) / 2;
    int err = 0;

    fp = gretl_fopen(fname, "r");
    if (fp == NULL) return 1;

    pmod->vcv = malloc(nt * sizeof *pmod->vcv);
    if (pmod->vcv == NULL) {
	fclose(fp);
	return 1;
    }

    for (i=0; i<nt; i++) {
	pmod->vcv[i] = NADBL;
    }

    gretl_push_c_numeric_locale();

    j = 1;
    while (fgets(line, sizeof line, fp)) {
	if (!strncmp(line, "Nonseas", 7)) {
	    char *p = line + strcspn(line, "+-");

	    for (i=1; i<nc; i++) {
		sscanf(p, "%22s", valstr);
		p += 22;
		if (i >= j) {
		    x = atof(valstr);
		    k = ijton(i, j, nc);
		    pmod->vcv[k] = x;
		}
	    }
	    j++;
	}
    }

    gretl_pop_c_numeric_locale();

    fclose(fp);

    return err;
}
示例#4
0
static void
audioprint_matrix (const VMatrix *vmat, const DATASET *dset,
                   PRN *prn)
{
    int i, j, k;
    int n = vmat->t2 - vmat->t1 + 1;
    int lo = vmat->dim;

    if (vmat->ci == CORR) {
        char date1[OBSLEN], date2[OBSLEN];

        ntodate(date1, vmat->t1, dset);
        ntodate(date2, vmat->t2, dset);

        pprintf(prn, "Correlation coefficients, using the observations "
                "%s to %s.\n", date1, date2);
        pprintf(prn, " The 5%% critical value (two-tailed) is %.3f.\n",
                rhocrit95(n));
    } else {
        pputs(prn, "Coefficient covariance matrix.\n");
    }

    for (i=1; i<=lo; i++) {
        for (j=i; j<=lo; j++) {
            k = ijton(i-1, j-1, lo);
            if (i == j) {
                if (vmat->ci == CORR) {
                    continue;
                }
                pprintf(prn, "%s, ", vmat->names[i-1]);
            } else {
                pprintf(prn, "%s and %s, ", vmat->names[i-1],
                        vmat->names[j-1]);
            }
            if (vmat->ci == CORR) {
                pprintf(prn, "%.3f.\n", vmat->vec[k]);
            } else {
                pprintf(prn, "%.4g.\n", vmat->vec[k]);
            }
        }
    }
}
示例#5
0
文件: pca.c 项目: maupatras/gretl
int pca_from_cmatrix (VMatrix *cmat, DATASET *dset, 
		      gretlopt opt, PRN *prn)
{
    gretl_matrix *C;
    gretl_matrix *evals = NULL;
    gretlopt saveopt = opt;
    int k = cmat->dim;
    int nsave = 0;
    int i, j, idx;
    double x;
    int err = 0;

    if (opt & OPT_D) { 
	saveopt = pca_flag_dialog();
	if (saveopt == OPT_NONE) {
	    /* canceled */
	    return 0; 
	}
    } else if (opt & OPT_O) {
	nsave = get_optval_int(PCA, OPT_O, &err);
	if (err) {
	    return err;
	}
    }

    C = gretl_matrix_alloc(k, k);

    if (C == NULL) {
	return E_ALLOC;
    }

    for (i=0; i<k; i++) {
	for (j=0; j<k; j++) {
	    idx = ijton(i, j, k);
	    x = cmat->vec[idx];
	    gretl_matrix_set(C, i, j, x);
	}
    }

#if PCA_DEBUG
    gretl_matrix_print(C, "original C, in pca");
#endif

    evals = gretl_symm_matrix_eigenvals_descending(C, 1, &err);

#if PCA_DEBUG
    gretl_matrix_print(C, "revised C (eigenvecs)");
#endif

    if (!err && !(opt & OPT_Q) && prn != NULL) {
	pca_print(cmat, evals, C, prn);
    }

    if (!err && saveopt) {
	err = pca_save_components(cmat, evals, C, dset, nsave,
				  saveopt);
    }

    gretl_matrix_free(evals);
    gretl_matrix_free(C);

    return err;
}