1function summarize(X,Time,Spec,vintage) 2%summarize Display the detail table for data entering the DFM 3% 4% Description: 5% Display the detail table for the nowcast, decomposing nowcast changes 6% into news and impacts for released data series. 7 8% Print results to command window 9fprintf('\n\n\n'); 10fprintf('Table 2: Data Summary \n'); 11 12[T,N] = size(X); 13%fprintf('Vintage: %s \n',datestr(datenum(vintage,'yyyy-mm-dd'),'mmmm dd, yyyy')); 14fprintf('N = %4d data series \n',N); 15fprintf('T = %4d observations from %10s to %10s \n',T,datestr(Time(1),'yyyy-mm-dd'),datestr(Time(end),'yyyy-mm-dd')); 16 17 18fprintf('%30s | %17s %12s %10s %8s %8s %8s %8s \n',... 19 'Data Series','Observations','Units','Frequency','Mean','Std. Dev.','Min','Max'); 20fprintf([repmat('-',1,130) '\n']); 21 22for i = 1:N 23 24 % time indexes for which there are observed values for series i 25 t_obs = ~isnan(X(:,i)); 26 27 data_series = Spec.SeriesName{i}; 28 if length(data_series) > 30 29 data_series = [data_series(1:27) '...']; 30 end 31 series_id = Spec.SeriesID{i}; 32 if length(series_id) > 28 33 series_id = [series_id(1:25) '...']; 34 end 35 series_id = ['[' series_id ']']; 36 num_obs = length(X(t_obs,i)); 37 freq = Spec.Frequency{i}; 38 if strcmp('m',freq) 39 format_date = 'mmm yyyy'; 40 frequency = 'Monthly'; 41 elseif strcmp('q',freq) 42 format_date = 'QQ yyyy'; 43 frequency = 'Quarterly'; 44 end 45 units = Spec.Units{i}; 46 transform = Spec.Transformation{i}; 47 % display transformed units 48 if strfind(units,'Index') 49 units_transformed = 'Index'; 50 elseif strcmp('chg',transform) 51 if strfind(units,'%') 52 units_transformed = 'Ppt. change'; 53 else 54 units_transformed = 'Level change'; 55 end 56 elseif strcmp('pch',transform) && strcmp('m',freq) 57 units_transformed = 'MoM%'; 58 elseif strcmp('pca',transform) && strcmp('q',freq) 59 units_transformed = 'QoQ% AR'; 60 else 61 if length([units ' (' transform ')']) > 12 62 units_transformed = [units(1:6) ' (' transform ')']; 63 else 64 units_transformed = [units ' (' transform ')']; 65 end 66 end 67 t_obs_start = find(t_obs,1,'first'); 68 t_obs_end = find(t_obs,1,'last'); 69 obs_date_start = datestr(Time(t_obs_start),format_date); 70 obs_date_end = datestr(Time(t_obs_end ),format_date); 71 date_range = [obs_date_start '-' obs_date_end]; 72 y = X(t_obs,i); 73 d = Time(t_obs); 74 mean_series = mean(y,'omitnan'); 75 stdv_series = std(y,'omitnan'); 76 [min_series,t_min] = min(y); 77 [max_series,t_max] = max(y); 78 min_date = datestr(d(t_min),format_date); 79 max_date = datestr(d(t_max),format_date); 80 fprintf('%30s | %17d %12s %10s %8.1f %8.1f %8.1f %8.1f \n',... 81 data_series,num_obs,units_transformed,frequency,mean_series,stdv_series,min_series,max_series); 82 fprintf('%30s | %17s %12s %10s %8s %8s %8s %8s \n',... 83 series_id,date_range,'','','','',min_date,max_date); 84 85end 86 87fprintf('\n\n\n'); 88 89end 90 91