static int transcribe_duration_results (MODEL *pmod, duration_info *dinfo, const DATASET *dset, int fncount, int grcount, int use_bfgs, int censvar, gretlopt opt) { int np = dinfo->npar; int j, v, err = 0; pmod->ci = DURATION; if (dinfo->dist == DUR_EXPON) { pmod->opt |= OPT_E; } else if (dinfo->dist == DUR_LOGLOG) { pmod->opt |= OPT_L; } else if (dinfo->dist == DUR_LOGNORM) { pmod->opt |= OPT_Z; } else { pmod->opt |= OPT_W; /* Weibull */ } if (censvar > 0) { gretl_model_set_int(pmod, "cens_var", censvar); } if (use_bfgs) { gretl_model_set_int(pmod, "fncount", fncount); gretl_model_set_int(pmod, "grcount", grcount); } else { gretl_model_set_int(pmod, "iters", fncount); } if (!err) { err = gretl_model_allocate_param_names(pmod, np); if (!err) { for (j=0; j<dinfo->k; j++) { v = pmod->list[j+2]; gretl_model_set_param_name(pmod, j, dset->varname[v]); } if (dinfo->dist != DUR_EXPON) { gretl_model_set_param_name(pmod, np-1, "sigma"); } } } if (dinfo->dist == DUR_EXPON) { pmod->sigma = 1.0; } else { pmod->sigma = dinfo->theta[np-1]; } err = gretl_model_write_coeffs(pmod, dinfo->theta, np); if (!err) { err = duration_model_add_vcv(pmod, dinfo, dset, opt); } if (!err) { duration_set_predictions(pmod, dinfo, dset, opt); pmod->lnL = dinfo->ll; mle_criteria(pmod, 0); /* mask invalid statistics */ pmod->fstt = pmod->chisq = NADBL; pmod->rsq = pmod->adjrsq = NADBL; pmod->ess = NADBL; /* but add overall LR test if possible */ if (np > 1 + (dinfo->dist != DUR_EXPON)) { duration_overall_LR_test(pmod, dinfo, use_bfgs); } } return err; }
void write_arma_model_stats (MODEL *pmod, arma_info *ainfo, const DATASET *dset) { double mean_error; int do_criteria = 1; int t; pmod->ci = ARMA; ainfo_data_to_model(ainfo, pmod); free(pmod->list); pmod->list = gretl_list_copy(ainfo->alist); if (!arma_least_squares(ainfo)) { arma_depvar_stats(pmod, ainfo, dset); } mean_error = pmod->ess = 0.0; for (t=pmod->t1; t<=pmod->t2; t++) { if (!na(ainfo->y[t]) && !na(pmod->uhat[t])) { #if USE_ARIMA_INTEGRATE == 0 if (arma_is_arima(ainfo) && arima_ydiff(ainfo)) { pmod->yhat[t] = Z[ainfo->yno][t] - pmod->uhat[t]; } #else pmod->yhat[t] = ainfo->y[t] - pmod->uhat[t]; #endif pmod->ess += pmod->uhat[t] * pmod->uhat[t]; mean_error += pmod->uhat[t]; } } #if USE_ARIMA_INTEGRATE if (arma_is_arima(ainfo) && arima_ydiff(ainfo)) { arima_integrate(pmod->yhat, dset->Z[ainfo->yno], pmod->t1, pmod->t2, ainfo->d, ainfo->D, ainfo->pd); } #endif mean_error /= pmod->nobs; if (arma_least_squares(ainfo) && pmod->ifc && mean_error < 1.0e-15) { mean_error = 0.0; } gretl_model_set_double(pmod, "mean_error", mean_error); if (na(pmod->sigma)) { /* in x12a or native exact cases this is already done */ pmod->sigma = sqrt(pmod->ess / pmod->nobs); } pmod->rsq = pmod->adjrsq = pmod->fstt = pmod->chisq = NADBL; pmod->tss = NADBL; if (arma_least_squares(ainfo)) { /* not applicable */ do_criteria = 0; } else if (arma_by_x12a(ainfo) && !na(pmod->criterion[C_AIC])) { /* already given by x12a */ do_criteria = 0; } if (do_criteria) { mle_criteria(pmod, 1); } if (!pmod->errcode && pmod->ncoeff == 0) { handle_null_model(pmod, ainfo); } if (!pmod->errcode) { gretl_model_add_arma_varnames(pmod, dset, ainfo->yno, ainfo->p, ainfo->q, ainfo->pmask, ainfo->qmask, ainfo->P, ainfo->Q, ainfo->nexo); } }