222
222
* max_obs_label_length:
223
* @pdinfo: dataset information.
223
* @dset: dataset information.
225
225
* Returns: the length of the longest observation label
226
226
* within the current sample range.
229
int max_obs_label_length (const DATAINFO *pdinfo)
229
int max_obs_label_length (const DATASET *dset)
232
232
int t, n, nmax = 0;
234
if (pdinfo->S != NULL) {
234
if (dset->S != NULL) {
235
235
/* we have specific observation strings */
236
for (t=pdinfo->t1; t<=pdinfo->t2; t++) {
237
get_obs_string(s, t, pdinfo);
236
for (t=dset->t1; t<=dset->t2; t++) {
237
get_obs_string(s, t, dset);
238
238
n = g_utf8_strlen(s, -1);
246
} else if (dated_daily_data(pdinfo)) {
247
get_obs_string(s, pdinfo->t2, pdinfo);
246
} else if (dated_daily_data(dset)) {
247
get_obs_string(s, dset->t2, dset);
248
248
nmax = strlen(s);
249
} else if (dataset_is_time_series(pdinfo)) {
250
switch (pdinfo->pd) {
249
} else if (dataset_is_time_series(dset)) {
251
251
case 1: /* annual: YYYY */
252
252
case 10: /* decennial: YYYY */
265
get_obs_string(s, pdinfo->t2, pdinfo);
265
get_obs_string(s, dset->t2, dset);
266
266
nmax = strlen(s);
269
int T = pdinfo->t2 - pdinfo->t1 + 1;
269
int T = dset->t2 - dset->t1 + 1;
270
270
int incr = (T < 120)? 1 : (T / 100.0);
272
for (t=pdinfo->t1; t<=pdinfo->t2; t+=incr) {
273
get_obs_string(s, t, pdinfo);
272
for (t=dset->t1; t<=dset->t2; t+=incr) {
273
get_obs_string(s, t, dset);
630
* @pdinfo: data information struct
629
* @dset: data information struct
631
630
* @fulln: full length of data series, if dataset is
632
631
* subsampled, or 0 if not applicable/known.
633
632
* @prn: gretl printing struct.
635
634
* Prints the current sample information to @prn.
638
void print_smpl (const DATAINFO *pdinfo, int fulln, PRN *prn)
637
void print_smpl (const DATASET *dset, int fulln, PRN *prn)
640
if (!gretl_messages_on() || pdinfo->v == 0 || gretl_looping_quietly()) {
639
if (!gretl_messages_on() || dset->v == 0 || gretl_looping_quietly()) {
644
if (fulln && !dataset_is_panel(pdinfo)) {
643
if (fulln && !dataset_is_panel(dset)) {
645
644
pprintf(prn, _("Full data set: %d observations\n"), fulln);
646
if (sample_size(pdinfo) < pdinfo->n) {
647
print_sample_obs(pdinfo, prn);
645
if (sample_size(dset) < dset->n) {
646
print_sample_obs(dset, prn);
649
648
pprintf(prn, _("Current sample: %d observations\n"),
656
655
pprintf(prn, _("Full data set: %d observations\n"), fulln);
658
657
pprintf(prn, "%s: %s - %s (n = %d)\n", _("Full data range"),
659
pdinfo->stobs, pdinfo->endobs, pdinfo->n);
658
dset->stobs, dset->endobs, dset->n);
662
if (pdinfo->t1 > 0 || pdinfo->t2 < pdinfo->n - 1 ||
663
(fulln && dataset_is_panel(pdinfo))) {
664
print_sample_obs(pdinfo, prn);
661
if (dset->t1 > 0 || dset->t2 < dset->n - 1 ||
662
(fulln && dataset_is_panel(dset))) {
663
print_sample_obs(dset, prn);
667
666
pputc(prn, '\n');
670
static void print_var_smpl (int v, const double **Z,
671
const DATAINFO *pdinfo,
669
static void print_var_smpl (int v, const DATASET *dset, PRN *prn)
676
if (pdinfo->t1 > 0 || pdinfo->t2 < pdinfo->n - 1) {
673
if (dset->t1 > 0 || dset->t2 < dset->n - 1) {
677
674
char d1[OBSLEN], d2[OBSLEN];
678
ntodate(d1, pdinfo->t1, pdinfo);
679
ntodate(d2, pdinfo->t2, pdinfo);
675
ntodate(d1, dset->t1, dset);
676
ntodate(d2, dset->t2, dset);
681
678
pprintf(prn, "%s: %s - %s", _("Current sample"), d1, d2);
683
680
pprintf(prn, "%s: %s - %s", _("Full data range"),
684
pdinfo->stobs, pdinfo->endobs);
681
dset->stobs, dset->endobs);
687
for (t=pdinfo->t1; t<=pdinfo->t2; t++) {
684
for (t=dset->t1; t<=dset->t2; t++) {
685
if (!na(dset->Z[v][t])) {
728
725
or %#.*g, with precision 'digits'
731
static int max_number_length (int v, const double **Z,
732
const DATAINFO *pdinfo,
728
static int max_number_length (int v, const DATASET *dset,
733
729
char fmt, int digits)
735
731
double a, x, amax = 0.0, amin = 1.0e300;
736
732
int t, n, maxsgn = 0, minsgn = 0;
738
for (t=pdinfo->t1; t<=pdinfo->t2; t++) {
734
for (t=dset->t1; t<=dset->t2; t++) {
783
static int series_column_width (int v, const double **Z,
784
const DATAINFO *pdinfo,
779
static int series_column_width (int v, const DATASET *dset,
785
780
char fmt, int digits)
787
int namelen = strlen(pdinfo->varname[v]);
788
int numlen = max_number_length(v, Z, pdinfo, fmt, digits);
782
int namelen = strlen(dset->varname[v]);
783
int numlen = max_number_length(v, dset, fmt, digits);
790
785
return (namelen > numlen)? namelen : numlen;
1021
1016
* @pmod: pointer to model.
1022
* @pdinfo: data information struct.
1017
* @dset: data information struct.
1023
1018
* @prn: gretl printing struct.
1025
1020
* Print to @prn the variance-covariance matrix for the parameter
1028
1023
* Returns: 0 on successful completion, error code on error.
1031
int outcovmx (MODEL *pmod, const DATAINFO *pdinfo, PRN *prn)
1026
int outcovmx (MODEL *pmod, const DATASET *dset, PRN *prn)
1036
vmat = gretl_model_get_vcv(pmod, pdinfo);
1031
vmat = gretl_model_get_vcv(pmod, dset);
1038
1033
if (vmat == NULL) {
1169
ntodate(obs1, fr->model_t1, pdinfo);
1164
ntodate(obs1, fr->model_t1, dset);
1170
1165
pprintf(prn, _("Recursive %d-step ahead forecasts"), fr->k);
1171
1166
pputs(prn, "\n\n");
1172
1167
pprintf(prn, _("The forecast for time t is based on (a) coefficients obtained by\n"
1177
1172
"are in fact lagged values."));
1178
1173
pputs(prn, "\n\n");
1180
ntodate(obs1, fr->t1, pdinfo);
1181
ntodate(obs2, fr->t2, pdinfo);
1175
ntodate(obs1, fr->t1, dset);
1176
ntodate(obs2, fr->t2, dset);
1182
1177
pprintf(prn, _("Model estimation range: %s - %s"), obs1, obs2);
1183
1178
pputc(prn, '\n');
1205
1200
/* prints a heading with the names of the variables in @list */
1207
1202
static void varheading (const int *list, int leader, int wid,
1208
const DATAINFO *pdinfo, char delim,
1203
const DATASET *dset, char delim,
1214
1209
pprintf(prn, "obs%c", delim);
1215
1210
for (i=1; i<=list[0]; i++) {
1217
pputs(prn, pdinfo->varname[vi]);
1212
pputs(prn, dset->varname[vi]);
1218
1213
if (i < list[0]) {
1219
pputc(prn, pdinfo->delim);
1214
pputc(prn, dset->delim);
1222
1217
pputc(prn, '\n');
1224
1219
pputs(prn, "{obs\\cell ");
1225
1220
for (i=1; i<=list[0]; i++) {
1227
pprintf(prn, "%s\\cell ", pdinfo->varname[vi]);
1222
pprintf(prn, "%s\\cell ", dset->varname[vi]);
1229
1224
pputs(prn, "}\n");
1232
1227
bufspace(leader, prn);
1233
1228
for (i=1; i<=list[0]; i++) {
1235
pprintf(prn, "%*s", wid, pdinfo->varname[vi]);
1230
pprintf(prn, "%*s", wid, dset->varname[vi]);
1237
1232
pputs(prn, "\n\n");
1278
1273
/* prints series z from current sample t1 to t2 */
1280
static void print_series_by_var (const double *z, const DATAINFO *pdinfo,
1275
static void print_series_by_var (const double *z, const DATASET *dset,
1283
1278
char format[12];
1560
1555
static int oprintlen = 8;
1562
void obs_marker_init (const DATAINFO *pdinfo)
1557
void obs_marker_init (const DATASET *dset)
1564
1559
int t, datestrs = 0;
1566
if (pdinfo->markers) {
1567
for (t=0; t<pdinfo->n; t++) {
1568
if (strlen(pdinfo->S[t]) == 10 &&
1569
isdigit(pdinfo->S[t][0]) &&
1570
strchr(pdinfo->S[t], '/')) {
1561
if (dset->markers) {
1562
for (t=0; t<dset->n; t++) {
1563
if (strlen(dset->S[t]) == 10 &&
1564
isdigit(dset->S[t][0]) &&
1565
strchr(dset->S[t], '/')) {
1585
1580
* print_obs_marker:
1586
1581
* @t: observation number.
1587
* @pdinfo: data information struct.
1582
* @dset: data information struct.
1588
1583
* @prn: gretl printing struct.
1590
1585
* Print a string (label, date or obs number) representing the given @t.
1593
void print_obs_marker (int t, const DATAINFO *pdinfo, PRN *prn)
1588
void print_obs_marker (int t, const DATASET *dset, PRN *prn)
1595
1590
char tmp[OBSLEN] = {0};
1597
if (pdinfo->markers) {
1598
strncat(tmp, pdinfo->S[t], oprintlen);
1592
if (dset->markers) {
1593
strncat(tmp, dset->S[t], oprintlen);
1599
1594
pprintf(prn, "%*s ", oprintlen, tmp);
1601
ntodate(tmp, t, pdinfo);
1596
ntodate(tmp, t, dset);
1602
1597
pprintf(prn, "%8s ", tmp);
1608
* @pdinfo: data information struct.
1603
* @dset: data information struct.
1609
1604
* @prn: gretl printing struct
1611
1606
* Prints a list of the names of the variables currently defined.
1614
void varlist (const DATAINFO *pdinfo, PRN *prn)
1609
void varlist (const DATASET *dset, PRN *prn)
1616
1611
int level = gretl_function_depth();
1617
1612
int len, maxlen = 0;
1619
1614
int i, j, n = 0;
1621
if (pdinfo->v == 0) {
1622
1617
pprintf(prn, _("No series are defined\n"));
1626
for (i=0; i<pdinfo->v; i++) {
1627
if (STACK_LEVEL(pdinfo, i) == level) {
1628
len = strlen(pdinfo->varname[i]);
1621
for (i=0; i<dset->v; i++) {
1622
if (STACK_LEVEL(dset, i) == level) {
1623
len = strlen(dset->varname[i]);
1629
1624
if (len > maxlen) {
1642
1637
pprintf(prn, _("Listing %d variables:\n"), n);
1645
for (i=0; i<pdinfo->v; i++) {
1646
if (level > 0 && STACK_LEVEL(pdinfo, i) != level) {
1640
for (i=0; i<dset->v; i++) {
1641
if (level > 0 && STACK_LEVEL(dset, i) != level) {
1649
pprintf(prn, "%3d) %-*s", i, maxlen + 2, pdinfo->varname[i]);
1644
pprintf(prn, "%3d) %-*s", i, maxlen + 2, dset->varname[i]);
1650
1645
if (j % nv == 0) {
1651
1646
pputc(prn, '\n');
1664
1659
* maybe_list_vars:
1665
* @pdinfo: data information struct.
1660
* @dset: data information struct.
1666
1661
* @prn: gretl printing struct
1668
1663
* Prints a list of the names of the variables currently defined,
1669
1664
* unless gretl messaging is turned off.
1672
void maybe_list_vars (const DATAINFO *pdinfo, PRN *prn)
1667
void maybe_list_vars (const DATASET *dset, PRN *prn)
1674
1669
if (gretl_messages_on() && !gretl_looping_quietly()) {
1675
varlist(pdinfo, prn);
1679
1674
static void print_varlist (const char *name, const int *list,
1680
const DATAINFO *pdinfo, PRN *prn)
1675
const DATASET *dset, PRN *prn)
1682
1677
int i, v, len = 0;
1690
1685
if (v == LISTSEP) {
1691
1686
len += pputs(prn, "; ");
1692
} else if (v >= 0 && v < pdinfo->v) {
1693
len += pprintf(prn, "%s ", pdinfo->varname[v]);
1687
} else if (v >= 0 && v < dset->v) {
1688
len += pprintf(prn, "%s ", dset->varname[v]);
1695
1690
len += pprintf(prn, "%d ", v);
1719
1714
} else if ((m = get_matrix_by_name(name)) != NULL) {
1720
1715
gretl_matrix_print_to_prn(m, name, prn);
1721
1716
} else if ((list = get_list_by_name(name)) != NULL) {
1722
print_varlist(name, list, pdinfo, prn);
1717
print_varlist(name, list, dset, prn);
1723
1718
} else if ((b = get_gretl_bundle_by_name(name)) != NULL) {
1724
1719
gretl_bundle_print(b, prn);
1725
1720
} else if ((p = get_string_by_name(name)) != NULL) {
1763
1758
buffer, pre-allocate a relatively big chunk of memory
1766
static int check_prn_size (const int *list, const DATAINFO *pdinfo,
1761
static int check_prn_size (const int *list, const DATASET *dset,
1769
int nx = list[0] * (pdinfo->t2 - pdinfo->t1 + 1);
1764
int nx = list[0] * (dset->t2 - dset->t1 + 1);
1772
1767
if (nx > 1000) {
1779
static int *get_pmax_array (const int *list, const double **Z,
1780
const DATAINFO *pdinfo)
1774
static int *get_pmax_array (const int *list, const DATASET *dset)
1782
1776
int *pmax = malloc(list[0] * sizeof *pmax);
1783
int i, vi, T = sample_size(pdinfo);
1777
int i, vi, T = sample_size(dset);
1785
1779
if (pmax == NULL) {
1791
1785
for (i=1; i<=list[0]; i++) {
1793
pmax[i-1] = get_signif(Z[vi] + pdinfo->t1, T);
1787
pmax[i-1] = get_signif(dset->Z[vi] + dset->t1, T);
1799
int column_width_from_list (const int *list, const DATAINFO *pdinfo)
1793
int column_width_from_list (const int *list, const DATASET *dset)
1801
1795
int i, n, vi, w = 13;
1803
1797
for (i=1; i<=list[0]; i++) {
1805
if (vi > 0 && vi < pdinfo->v) {
1806
n = strlen(pdinfo->varname[vi]);
1799
if (vi > 0 && vi < dset->v) {
1800
n = strlen(dset->varname[vi]);
1818
1812
/* print the series referenced in 'list' by observation */
1820
static int print_by_obs (int *list, const double **Z,
1821
const DATAINFO *pdinfo,
1814
static int print_by_obs (int *list,
1815
const DATASET *dset,
1822
1816
gretlopt opt, int screenvar,
1835
pmax = get_pmax_array(list, Z, pdinfo);
1829
pmax = get_pmax_array(list, dset);
1836
1830
if (pmax == NULL) {
1837
1831
return E_ALLOC;
1840
1834
if (opt & OPT_N) {
1841
obslen = obslen_from_t(pdinfo->t2);
1835
obslen = obslen_from_t(dset->t2);
1843
obslen = max_obs_label_length(pdinfo);
1837
obslen = max_obs_label_length(dset);
1846
colwidth = column_width_from_list(list, pdinfo);
1840
colwidth = column_width_from_list(list, dset);
1848
1842
nrem = list[0];
1861
varheading(blist, obslen, colwidth, pdinfo, 0, prn);
1855
varheading(blist, obslen, colwidth, dset, 0, prn);
1863
for (t=pdinfo->t1; t<=pdinfo->t2; t++) {
1857
for (t=dset->t1; t<=dset->t2; t++) {
1864
1858
int thislen = obslen;
1866
if (screenvar && Z[screenvar][t] == 0.0) {
1860
if (screenvar && dset->Z[screenvar][t] == 0.0) {
1867
1861
/* screened out by boolean */
1871
1865
if (opt & OPT_N) {
1872
1866
sprintf(obslabel, "%d", t + 1);
1873
} else if (dataset_has_markers(pdinfo)) {
1874
strcpy(obslabel, pdinfo->S[t]);
1867
} else if (dataset_has_markers(dset)) {
1868
strcpy(obslabel, dset->S[t]);
1875
1869
thislen = get_utf_width(obslabel, obslen);
1877
ntodate(obslabel, t, pdinfo);
1871
ntodate(obslabel, t, dset);
1880
1874
pprintf(prn, "%*s", thislen, obslabel);
1882
1876
for (i=1, j=j0; i<=blist[0]; i++, j++) {
1877
x = dset->Z[blist[i]][t];
1885
1879
bufspace(colwidth, prn);
1903
static int print_by_var (const int *list, const double **Z,
1904
const DATAINFO *pdinfo, PRN *prn)
1897
static int print_by_var (const int *list, const DATASET *dset,
1910
1904
for (i=1; i<=list[0]; i++) {
1912
if (vi > pdinfo->v) {
1915
1909
if (list[0] > 1) {
1916
pprintf(prn, "%s:\n", pdinfo->varname[vi]);
1910
pprintf(prn, "%s:\n", dset->varname[vi]);
1918
print_var_smpl(vi, Z, pdinfo, prn);
1912
print_var_smpl(vi, dset, prn);
1919
1913
pputc(prn, '\n');
1920
print_series_by_var(Z[vi], pdinfo, prn);
1914
print_series_by_var(dset->Z[vi], dset, prn);
1921
1915
pputc(prn, '\n');
1929
1923
* @list: list of variables to print.
1930
1924
* @mstr: optional string holding names of non-series objects to print.
1932
* @pdinfo: data information struct.
1925
* @dset: dataset struct.
1933
1926
* @opt: if OPT_O, print the data by observation (series in columns);
1934
1927
* if OPT_N, use simple obs numbers, not dates.
1935
1928
* @prn: gretl printing struct.
1994
1987
if (gretl_print_has_buffer(prn)) {
1995
err = check_prn_size(plist, pdinfo, prn);
1988
err = check_prn_size(plist, dset, prn);
2001
1994
if (opt & OPT_O) {
2002
err = print_by_obs(plist, Z, pdinfo, opt, screenvar, prn);
1995
err = print_by_obs(plist, dset, opt, screenvar, prn);
2004
err = print_by_var(plist, Z, pdinfo, prn);
1997
err = print_by_var(plist, dset, prn);
2009
2002
if (!err && mstr != NULL) {
2010
print_listed_objects(mstr, pdinfo, prn);
2003
print_listed_objects(mstr, dset, prn);
2018
int print_series_with_format (const int *list, const double **Z,
2019
const DATAINFO *pdinfo,
2020
char fmt, int digits, PRN *prn)
2011
int print_series_with_format (const int *list,
2012
const DATASET *dset,
2013
char fmt, int digits,
2022
2016
int i, j, j0, v, t, k, nrem = 0;
2023
2017
int *colwidths, blist[BMAX+1];
2049
2043
for (i=1; i<=list[0]; i++) {
2050
colwidths[i] = series_column_width(list[i], Z, pdinfo, fmt, digits);
2044
colwidths[i] = series_column_width(list[i], dset, fmt, digits);
2051
2045
colwidths[i] += 3;
2052
2046
if (colwidths[i] > buflen) {
2053
2047
buflen = colwidths[i];
2063
2057
if (gretl_print_has_buffer(prn)) {
2064
err = check_prn_size(list, pdinfo, prn);
2058
err = check_prn_size(list, dset, prn);
2091
2085
bufspace(obslen, prn);
2092
2086
for (i=1, j=j0; i<=blist[0]; i++, j++) {
2094
pprintf(prn, "%*s", colwidths[j], pdinfo->varname[v]);
2088
pprintf(prn, "%*s", colwidths[j], dset->varname[v]);
2096
2090
pputs(prn, "\n\n");
2098
2092
/* print block observations */
2099
for (t=pdinfo->t1; t<=pdinfo->t2; t++) {
2100
get_obs_string(obslabel, t, pdinfo);
2093
for (t=dset->t1; t<=dset->t2; t++) {
2094
get_obs_string(obslabel, t, dset);
2101
2095
pprintf(prn, "%*s", obslen, obslabel);
2102
2096
for (i=1, j=j0; i<=blist[0]; i++, j++) {
2106
2100
bufspace(colwidths[j], prn);
2155
2149
* print_data_in_columns:
2156
2150
* @list: list of variables to print.
2157
2151
* @obsvec: list of observation numbers (or %NULL)
2159
* @pdinfo: data information struct.
2152
* @dset: dataset struct.
2160
2153
* @prn: gretl printing struct.
2162
2155
* Print the data for the variables in @list. If @obsvec is not %NULL,
2173
2166
int print_data_in_columns (const int *list, const int *obsvec,
2174
const double **Z, const DATAINFO *pdinfo,
2167
const DATASET *dset, PRN *prn)
2177
2169
int delimited = prn_delimited(prn);
2178
2170
int rtf = rtf_format(prn);
2200
2192
/* ...with no bad variable numbers */
2201
2193
for (i=1; i<=list[0]; i++) {
2202
if (list[i] < 0 || list[i] >= pdinfo->v) {
2194
if (list[i] < 0 || list[i] >= dset->v) {
2207
2199
/* and T must be in bounds */
2208
if (T > pdinfo->n - pdinfo->t1) {
2200
if (T > dset->n - dset->t1) {
2212
pmax = get_pmax_array(list, Z, pdinfo);
2204
pmax = get_pmax_array(list, dset);
2213
2205
if (pmax == NULL) {
2214
2206
return E_ALLOC;
2218
2210
if (csv_format(prn)) {
2221
delim = pdinfo->delim;
2213
delim = dset->delim;
2222
2214
if (get_local_decpoint() == ',' && delim == ',') {
2225
2217
} else if (rtf) {
2226
2218
ncols = list[0] + 1;
2228
colwidth = column_width_from_list(list, pdinfo);
2229
obslen = max_obs_label_length(pdinfo);
2220
colwidth = column_width_from_list(list, dset);
2221
obslen = max_obs_label_length(dset);
2234
2226
rtf_print_row_spec(ncols, RTF_HEADER, prn);
2237
varheading(list, obslen, colwidth, pdinfo, delim, prn);
2229
varheading(list, obslen, colwidth, dset, delim, prn);
2240
2232
rtf_print_row_spec(ncols, RTF_TRAILER, prn);
2245
2237
if (obsvec != NULL) {
2246
2238
t = obsvec[s+1];
2250
if (t >= pdinfo->n) {
2254
2246
rtf_print_row_spec(ncols, RTF_HEADER, prn);
2255
2247
pputc(prn, '{');
2257
get_obs_string(obs_string, t, pdinfo);
2249
get_obs_string(obs_string, t, dset);
2258
2250
if (delimited) {
2259
2251
pprintf(prn, "%s%c", obs_string, delim);
2260
2252
} else if (rtf) {
2382
2374
#define SIGMA_MIN 1.0e-18
2384
int text_print_fit_resid (const FITRESID *fr, const DATAINFO *pdinfo,
2376
int text_print_fit_resid (const FITRESID *fr, const DATASET *dset,
2387
2379
int kstep = fr->method == FC_KSTEP;
2389
2381
double yt, yf, et;
2392
fit_resid_head(fr, pdinfo, prn);
2384
fit_resid_head(fr, dset, prn);
2394
obs_marker_init(pdinfo);
2386
obs_marker_init(dset);
2396
2388
for (t=fr->t1; t<=fr->t2; t++) {
2397
print_obs_marker(t, pdinfo, prn);
2389
print_obs_marker(t, dset, prn);
2399
2391
yt = fr->actual[t];
2400
2392
yf = fr->fitted[t];
2446
2438
print_fcast_stats(fr, OPT_NONE, prn);
2448
2440
if (kstep && fr->nobs > 0 && gretl_in_gui_mode()) {
2449
err = plot_fcast_errs(fr, NULL, pdinfo, OPT_NONE);
2441
err = plot_fcast_errs(fr, NULL, dset, OPT_NONE);
2456
2448
* text_print_forecast:
2457
2449
* @fr: pointer to structure containing forecasts.
2458
* @pdinfo: dataset information.
2450
* @dset: dataset information.
2459
2451
* @opt: if includes %OPT_P, make a plot of the forecasts;
2460
2452
* if includes %OPT_N, skip printing of the forecast
2461
2453
* evaluation statistics.
2471
2463
* Returns: 0 on success, non-zero error code on error.
2474
int text_print_forecast (const FITRESID *fr, DATAINFO *pdinfo,
2466
int text_print_forecast (const FITRESID *fr, DATASET *dset,
2475
2467
gretlopt opt, PRN *prn)
2477
2469
int do_errs = (fr->sderr != NULL);
2539
obs_marker_init(pdinfo);
2531
obs_marker_init(dset);
2541
2533
for (t=fr->t0; t<=fr->t2; t++) {
2542
print_obs_marker(t, pdinfo, prn);
2534
print_obs_marker(t, dset, prn);
2543
2535
fcast_print_x(fr->actual[t], 15, pmax, prn);
2545
2537
if (na(fr->fitted[t])) {
2572
2564
/* do we really want a plot for non-time series? */
2574
2566
if ((opt & OPT_P) && fr->nobs > 0) {
2575
err = plot_fcast_errs(fr, maxerr, pdinfo, opt);
2567
err = plot_fcast_errs(fr, maxerr, dset, opt);
2576
2568
if (!err && (opt & OPT_U)) {
2577
2569
/* specified output file for graph */
2578
2570
report_plot_written(prn);
2598
2589
* Returns: 0 on successful completion, 1 on error.
2601
int print_fit_resid (const MODEL *pmod, const double **Z,
2602
const DATAINFO *pdinfo, PRN *prn)
2592
int print_fit_resid (const MODEL *pmod, const DATASET *dset,
2607
fr = get_fit_resid(pmod, Z, pdinfo, &err);
2598
fr = get_fit_resid(pmod, dset, &err);
2610
text_print_fit_resid(fr, pdinfo, prn);
2601
text_print_fit_resid(fr, dset, prn);
2611
2602
free_fit_resid(fr);