static int qr_make_cluster_vcv (MODEL *pmod, int ci, const DATASET *dset, gretl_matrix *XX, gretlopt opt) { gretl_matrix *cvals = NULL; gretl_matrix *V = NULL; const char *cname; int cvar, n_c = 0; int err = 0; if (pmod->ci != OLS && pmod->ci != IVREG) { /* relax this? */ return E_NOTIMP; } cname = get_optval_string(ci, OPT_C); if (cname == NULL) { return E_PARSE; } cvar = current_series_index(dset, cname); if (cvar < 1 || cvar >= dset->v) { err = E_UNKVAR; } if (!err) { cvals = cluster_var_values(dset->Z[cvar], pmod, &err); if (!err) { n_c = gretl_vector_get_length(cvals); if (n_c < 2) { err = E_DATA; } } } #if CDEBUG fprintf(stderr, "qr_make_cluster_vcv: err = %d\n", err); fprintf(stderr, "cluster var = %s (%d)\n", cname, cvar); gretl_matrix_print(cvals, "cvals"); #endif if (!err) { V = cluster_vcv_calc(pmod, cvar, cvals, XX, dset, &err); } if (!err) { err = gretl_model_write_vcv(pmod, V); } if (!err) { gretl_model_set_vcv_info(pmod, VCV_CLUSTER, cvar); gretl_model_set_int(pmod, "n_clusters", n_c); } gretl_matrix_free(V); gretl_matrix_free(cvals); return err; }
int list_summary_driver (const int *list, const DATASET *dset, gretlopt opt, PRN *prn) { int wtvar = 0; int err = 0; if (opt & OPT_W) { const char *wname = get_optval_string(SUMMARY, OPT_W); if (wname == NULL) { err = E_DATA; } else { wtvar = current_series_index(dset, wname); if (wtvar < 0) { err = E_UNKVAR; } } } if (!err) { err = list_summary(list, wtvar, dset, opt, prn); } return err; }
static int get_chow_dummy (const char *s, const DATASET *dset, int *err) { int v = current_series_index(dset, s); if (v < 0) { *err = E_UNKVAR; } else if (!gretl_isdummy(dset->t1, dset->t2, dset->Z[v])) { *err = E_DATA; } return v; }
static gint32 get_stata_t0 (const DATASET *dset, char *timevar, int *add_time) { gint32 t0 = 0; char obs[OBSLEN]; *timevar = '\0'; ntodate(obs, dset->t1, dset); if (dset->pd == 1 && dset->sd0 > 999) { /* we just want the year */ t0 = atoi(obs); strcpy(timevar, "year"); *add_time = TIME_AUTO; } else if ((dset->pd == 4 || dset->pd == 12) && dset->sd0 > 999) { /* quarters or months since the start of 1960 */ int y, p; char c; sscanf(obs, "%d%c%d", &y, &c, &p); t0 = dset->pd * (y - 1960) + p - 1; strcpy(timevar, dset->pd == 4 ? "quarter" : "month"); *add_time = TIME_AUTO; } else if (calendar_data(dset)) { strcpy(timevar, "date"); *add_time = TIME_CAL; } else { t0 = atoi(obs); strcpy(timevar, "generic_t"); *add_time = TIME_AUTO; } if (*timevar != '\0') { /* don't collide with regular series */ if (current_series_index(dset, timevar) > 0) { strncat(timevar, "_t", 2); } } return t0; }
static void look_up_word (const char *s, parser *p) { int fsym, err = 0; fsym = p->sym = function_lookup_with_alias(s); if (p->sym == 0 || p->ch != '(') { p->idnum = const_lookup(s); if (p->idnum > 0) { p->sym = CON; } else { p->idnum = dummy_lookup(s); if (p->idnum > 0) { p->sym = DUM; } else { GretlType vtype = 0; char *bstr; if ((p->idnum = current_series_index(p->dset, s)) >= 0) { p->sym = UVEC; p->idstr = gretl_strdup(s); } else if (!strcmp(s, "time")) { p->sym = DUM; p->idnum = DUM_TREND; } else if ((p->uval = user_var_get_value_and_type(s, &vtype)) != NULL) { if (vtype == GRETL_TYPE_DOUBLE) { p->sym = UNUM; } else if (vtype == GRETL_TYPE_MATRIX) { p->sym = UMAT; } else if (vtype == GRETL_TYPE_BUNDLE) { p->sym = BUNDLE; } else if (vtype == GRETL_TYPE_STRING) { p->sym = USTR; } else if (vtype == GRETL_TYPE_LIST) { p->sym = ULIST; } else if (vtype == GRETL_TYPE_STRING) { p->sym = USTR; } p->idstr = gretl_strdup(s); } else if ((bstr = get_built_in_string_by_name(s))) { /* FIXME should use $-accessors? */ p->sym = STR; p->idstr = gretl_strdup(bstr); } else if (gretl_get_object_by_name(s)) { p->sym = UOBJ; p->idstr = gretl_strdup(s); } else if (get_user_function_by_name(s)) { p->sym = UFUN; p->idstr = gretl_strdup(s); } else if (p->targ == LIST && varname_match_any(p->dset, s)) { p->sym = WLIST; p->idstr = gretl_strdup(s); } else if (!strcmp(s, "t")) { /* if "t" has not been otherwise defined, treat it as an alias for "obs" */ p->sym = DVAR; p->idnum = R_INDEX; } else if (maybe_get_R_function(s)) { /* note: all "native" types take precedence over this */ p->sym = RFUN; p->idstr = gretl_strdup(s + 2); } else if (parsing_query) { p->sym = UNDEF; p->idstr = gretl_strdup(s); } else { err = E_UNKVAR; } } } } if (err) { if (fsym) { function_noargs_error(s, p); } else { undefined_symbol_error(s, p); } } }