2014-04-29 17:56:45 +02:00
\documentclass [10pt] { beamer}
2014-05-06 18:05:14 +02:00
2014-04-29 17:56:45 +02:00
\usepackage { tikz}
\usetikzlibrary { positioning,shapes,shadows,arrows}
2014-05-06 18:05:14 +02:00
\tikzstyle { abstract} =[rectangle, rounded corners, draw=black, anchor=north, fill=blue!10, text centered, minimum height={ height("Gp")+2pt} , minimum width=3cm, font=\footnotesize ]
2014-04-29 17:56:45 +02:00
\definecolor { links} { HTML} { 0000CC}
\hypersetup { colorlinks,linkcolor=,urlcolor=links}
\mode <handout>
{
\usepackage { pgfpages}
\pgfpagesuselayout { 4 on 1} [a4paper,border shrink=3mm,landscape]
\usetheme { CambridgeUS}
\usecolortheme { lily}
}
\mode <beamer>
{
\usetheme { CambridgeUS}
}
\AtBeginSection []
{
\begin { frame}
\frametitle { Outline}
\tableofcontents [currentsection]
\end { frame}
}
\setbeamerfont { frametitle} { family=\rmfamily ,series=\bfseries ,size={ \fontsize { 10} { 10} } }
\setbeamertemplate { frametitle continuation} [from second]
2014-05-06 18:05:14 +02:00
\title { Dynare Time Series \& Reporting}
\author { Houtan Bastani}
\institute { CEPREMAP}
\date { 13 June 2014}
2014-04-29 17:56:45 +02:00
\begin { document}
\begin { frame}
\titlepage
\end { frame}
\begin { frame} [t]
\frametitle { Outline}
\tableofcontents
\end { frame}
%
2014-05-06 18:05:14 +02:00
% DATES
2014-04-29 17:56:45 +02:00
%
\section { Time Series}
\subsection { Overview}
\begin { frame} [fragile,t]
\frametitle { Overview}
\begin { itemize}
\item Provide support for time series in Dynare
\item Introduced in Dynare 4.4
2014-05-13 18:30:50 +02:00
\item Currently only used for reporting
2014-04-29 17:56:45 +02:00
\item Use will increase with time (\textit { e.g.,} to be included in new estimation code)
2014-05-13 18:30:50 +02:00
\item NB: More complete information is included in the Dynare manual
2014-04-29 17:56:45 +02:00
\end { itemize}
\end { frame}
\subsection { Syntax}
\begin { frame} [fragile,t]
\frametitle { Syntax}
\begin { itemize}
\item Two components of a time series:
\begin { itemize}
\item A time component. In Dynare: \texttt { dates}
\item A data component mapped to time. In Dynare: \texttt { dseries}
\end { itemize}
\end { itemize}
\end { frame}
\subsubsection { \texttt { dates} Syntax}
\begin { frame} [fragile,t]
\frametitle { \texttt { dates} Syntax}
\begin { itemize}
\item The \texttt { dates} command creates an object that represents at least one date at a given frequency
\begin { itemize}
\item Yearly: \texttt { `Y', `y', 1}
\item Quarterly: \texttt { `Q', `q', 4}
\item Monthly: \texttt { `M', `m', 12}
\item Weekly: \texttt { `W', `w', 52}
\end { itemize}
\item It has two slightly different syntaxes
\begin { itemize}
\item One for inclusion in \texttt { .m} files
2014-05-06 18:05:14 +02:00
\item One for inclusion in \texttt { .mod} files (simplified using the preprocessor)
\begin { itemize}
\item To prevent date translation, escape the date with `\texttt { \$ } ' (\textit { e.g.,} \texttt { \$ 2020y} )
\end { itemize}
2014-04-29 17:56:45 +02:00
\end { itemize}
\item Minimal restrictions on dates. Can be
\begin { itemize}
\item Negative
\item Empty
\item Noncontiguous
\end { itemize}
2014-05-13 18:30:50 +02:00
\item Can index a \texttt { dates} object. If \texttt { t} is a \texttt { dates} object, then
\begin { itemize}
\item \texttt { t(1) \% refers to the first date}
\item \texttt { t(1:3) \% refers to the first three dates}
\item \texttt { t([1,4,5]) \% refers to the first, fourth, and fifth dates}
\end { itemize}
2014-04-29 17:56:45 +02:00
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Creating a new \texttt { dates} object}
\begin { itemize}
\item A single date:
\begin { itemize}
\item In a \texttt { .m} file: \texttt { t = dates(`1999y');}
\item In a \texttt { .mod} file: \texttt { t = 1999y;}
\end { itemize}
\item A date range:
\begin { itemize}
2014-05-06 18:05:14 +02:00
\item In a \texttt { .m} file: \texttt { dr = dates(`1999y'):dates(`2020y');}
\item In a \texttt { .mod} file: \texttt { dr = 1999y:2020y;}
2014-04-29 17:56:45 +02:00
\end { itemize}
2014-05-13 18:30:50 +02:00
\item In what follows, \texttt { t} and \texttt { dr} are as above. Operations that assign to \texttt { t} and \texttt { dr} keep the value thereafter.
2014-04-29 17:56:45 +02:00
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Modifying \texttt { dates} }
\begin { itemize}
\item \texttt { append} : appends a date to the date
\begin { itemize}
2014-05-06 18:05:14 +02:00
\item \texttt { t=t.append(dates(`1900y')); \% <dates: 1999Y, 1900Y>}
\end { itemize}
\item \texttt { horzcat} : horizontal concatenation
\begin { itemize}
\item \texttt { [t t]; \% <dates: 1999Y, 1900Y, 1999Y, 1900Y>} ;
\end { itemize}
\item \texttt { minus} : either the distance between two \texttt { dates} or lag one \texttt { dates}
\begin { itemize}
\item \texttt { t-t \% [0 0]'}
\item \texttt { t-[3 3]' \% <dates: 1996Y, 1897Y>}
\end { itemize}
\item \texttt { plus} : either combine two \texttt { dates} or forward one \texttt { dates}
\begin { itemize}
\item \texttt { t+t \% <dates: 1999Y, 1900Y, 1999Y, 1900Y>}
\item \texttt { t+[3 3]' \% <dates: 2002Y, 1903Y>}
\end { itemize}
\item \texttt { pop} : remove last element
\begin { itemize}
\item \texttt { t.pop(); \% <dates: 1999Y>}
\end { itemize}
\item \texttt { sort} : sort dates in ascending order
\begin { itemize}
2014-05-13 18:30:50 +02:00
\item \texttt { t.sort(); \% <dates: 1900Y, 1999Y>}
2014-05-06 18:05:14 +02:00
\end { itemize}
\item \texttt { uminus} : shifts dates back one period
\begin { itemize}
\item \texttt { -t; \% <dates: 1998Y, 1899Y>}
\end { itemize}
2014-05-13 18:30:50 +02:00
\item \texttt { unique} : removes repetitions (keeping last unique value)
2014-05-06 18:05:14 +02:00
\begin { itemize}
\item \texttt { t.append(dates(`1999y')).unique() \% <dates: 1900Y, 1999Y>}
\end { itemize}
\item \texttt { uplus} : shifts dates forward one period
\begin { itemize}
\item \texttt { ++t; \% <dates: 2001Y, 1902Y>}
2014-04-29 17:56:45 +02:00
\end { itemize}
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Getting info about \texttt { dates} }
\begin { itemize}
2014-05-06 18:05:14 +02:00
\item \texttt { char} : returns a single date as a string
\begin { itemize}
\item \texttt { t(1).char() \% 1999Y}
\end { itemize}
2014-04-29 17:56:45 +02:00
\item \texttt { double} : returns a floating point representation of the date
\begin { itemize}
2014-05-06 18:05:14 +02:00
\item \texttt { t.double() \% [1999 1900]'}
2014-04-29 17:56:45 +02:00
\end { itemize}
\item \texttt { freq} : returns the frequency
\begin { itemize}
2014-05-06 18:05:14 +02:00
\item \texttt { t.freq; \% 1}
\end { itemize}
\item \texttt { isequal} : returns true if the two arguments are equal
\begin { itemize}
\item \texttt { isequal(t,t) \% 1}
\end { itemize}
\item \texttt { length} : returns the number of dates
\begin { itemize}
\item \texttt { t.length() \% 2}
\end { itemize}
\item \texttt { max} : returns the maximum \texttt { dates} in the arguments
\begin { itemize}
\item \texttt { max(t,dr) \% <dates: 2020Y>}
\end { itemize}
\item \texttt { min} : returns the minimum \texttt { dates} in the arguments
\begin { itemize}
\item \texttt { min(t,dr) \% <dates: 1900Y>}
\end { itemize}
\item \texttt { eq, ge, gt, le, lt, ne} : returns boolean value of comparison
\begin { itemize}
\item \texttt { t==t \% [1 1]'}
\item \texttt { t>=dates(`1950y') \% [1 0]'}
\item \texttt { t$ \thicksim $ =dates(`1999y') \% [0 1]'}
2014-04-29 17:56:45 +02:00
\end { itemize}
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
2014-05-06 18:05:14 +02:00
\frametitle { Set Operations on \texttt { dates} }
2014-04-29 17:56:45 +02:00
\begin { itemize}
2014-05-06 18:05:14 +02:00
\item \texttt { intersect} : returns the intersection of the arguments
\begin { itemize}
\item \texttt { intersect(t,dr) \% <dates: 1999Y>}
\end { itemize}
\item \texttt { isempty} : returns true if the argument is empty
\begin { itemize}
\item \texttt { isempty(t) \% 0}
2014-05-13 18:30:50 +02:00
\item \texttt { isempty(dates()) \% 1}
2014-05-06 18:05:14 +02:00
\end { itemize}
\item \texttt { setdiff} : returns dates present in first arg but not in second
\begin { itemize}
\item \texttt { setdiff(t,dr) \% <dates: 1900Y>}
\end { itemize}
\item \texttt { union} :
\begin { itemize}
\item \texttt { union(dr,t) \% <dates: 1900Y, 1999Y, ..., 2019Y, 2020Y>}
\end { itemize}
2014-04-29 17:56:45 +02:00
\end { itemize}
\end { frame}
2014-05-06 18:05:14 +02:00
%
% DSERIES
%
2014-04-29 17:56:45 +02:00
\subsubsection { \texttt { dseries} Syntax}
2014-05-13 18:30:50 +02:00
\begin { frame} [fragile,t]
\frametitle { \texttt { dseries} Syntax}
\begin { itemize}
\item A \texttt { dseries} is composed of one or more individual series
\item All time series in a dseries must have the same frequency
\item A \texttt { dseries} runs from the earliest date to the latest date, with \texttt { NaN} 's inserted to pad the shorter series
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Creating a new \texttt { dseries} object}
\begin { itemize}
\item Load series from data file (\texttt { .csv, .xls} ). Dates in first column, optional variable names in first row
\begin { itemize}
\item \texttt { ts=dseries(`data.csv');}
\end { itemize}
\item Load series from a Matlab/Octave file (\texttt { .m, .mat} ). Must define the variables \texttt { INIT\_ \_ } , \texttt { NAMES\_ \_ } , and, optionally, \texttt { TEX\_ \_ } .
\begin { itemize}
\item \texttt { ts=dseries(`data.m');}
\end { itemize}
\item Load data directly. Here: one variable, `MyVar1', with three annual observations starting in 1999. Only first argument is required.
\begin { itemize}
\item \texttt { ts=dseries([1;2;3], `1999y', \{ `MyVar1'\} , \{ `MyVar\_ 1'\} );}
\end { itemize}
\item Create an empty time series. Usefull for programatically creating a series.
\begin { itemize}
\item \texttt { ts=dseries();}
\item \texttt { ts=dseries(dates(`1999y'));}
\end { itemize}
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Referencing data from a \texttt { dseries} }
\begin { itemize}
\item For the following, let
\begin { itemize}
\item \texttt { ts1=dseries([1;2;3], `1999y', \{ `MyVar1'\} , \{ `MyVar\_ 1'\} )}
\item \texttt { ts2=dseries([4;5;6], `2000y', \{ `MyVar2'\} , \{ `MyVar\_ 2'\} )}
\item \texttt { ts3=[ts1 ts2]}
\end { itemize}
\item To get \texttt { MyVar1} from \texttt { t3} , you have three options
\begin { itemize}
\item \texttt { ts3\{ 1\} }
\item \texttt { ts3.MyVar1}
\item \texttt { ts3\{ `MyVar1'\} }
\end { itemize}
\item To select a subsample of MyVar2 from 2001 to 2002:
\begin { itemize}
\item \texttt { ts3\{ 2\} (dates(`2001y'):dates(`2002y'))}
\item \texttt { ts3.MyVar2(dates(`2001y'):dates(`2002y'))}
\item \texttt { ts3\{ `MyVar2'\} (dates(`2001y'):dates(`2002y'))}
\end { itemize}
\item To see the data for both variables in 2000:
\begin { itemize}
\item \texttt { ts3(`2000y')}
\item \texttt { ts3\{ [1 2] \} (`2000y')}
\item \texttt { ts3\{ `MyVar1',`MyVar2'\} (`2000y')}
\item \texttt { ts3\{ `MyVar@1,2@'\} (`2000y')}
\item \texttt { ts3\{ `MyVar[1-2]'\} (`2000y')}
\end { itemize}
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Getting info about \texttt { dseries} }
\begin { itemize}
\item \texttt { eq, ne} : returns boolean value of element-wise comparison; series must have same start dates and number of observations
\begin { itemize}
\item \texttt { ts1==ts3.MyVar1(dates(`1999y'):dates(`2001y')) \% [1 1 1]'}
\item \texttt { ts1$ \thicksim $ =ts1 \% [0 0 0]'}
\end { itemize}
\item \texttt { isempty} : returns true if series is empty
\begin { itemize}
\item \texttt { isempty(dseries()) \% 1}
\end { itemize}
\item \texttt { isequal} : returns true if the series are equal
\begin { itemize}
\item \texttt { isequal(ts1,ts1) \% 1}
\end { itemize}
\item \texttt { size} : returns number of observations by number of variables
\begin { itemize}
\item \texttt { ts3.size() \% [4 2]}
\end { itemize}
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Working with \texttt { dseries} }
\begin { itemize}
\item \texttt { baxter\_ king\_ filter} : the Baxter and King (1999) band pass filter
\begin { itemize}
\item \texttt { ts1.baxter\_ king\_ filter(high freq, low freq, K)}
\end { itemize}
\item \texttt { hpcycle} : HP Filters the \texttt { dseries} , returning the business cycle component
\begin { itemize}
\item \texttt { ts1.hptrend(lambda) \% lambda = 1600 by default}
\end { itemize}
\item \texttt { hptrend} : HP Filters the \texttt { dseries} , returning the trend component
\begin { itemize}
\item \texttt { ts1.hptrend(lambda) \% lambda = 1600 by default}
\end { itemize}
\item \texttt { qdiff} : Quarterly difference; works on quarterly, monthly, and weekly series
\begin { itemize}
\item \texttt { ts1.qdiff()}
\end { itemize}
\item \texttt { qgrowth} : Quarterly growth rate: $ \frac { ts _ t - ts _ { t - 1 } } { ts _ { t - 1 } } $ . Works on quarterly, monthly, and weekly series
\begin { itemize}
\item \texttt { ts1.qgrowth()}
\end { itemize}
\item \texttt { yidff} : Yearly difference; works on yearly, quarterly, monthly, and weekly series
\begin { itemize}
\item \texttt { ts1.ydiff()}
\end { itemize}
\item \texttt { ygrowth} : Annual growth rate: $ \frac { ts _ t - ts _ { t - 1 } } { ts _ { t - 1 } } $ . Works on yearly ($ t - 1 $ ), quarterly ($ t - 4 $ ), monthly ($ t - 12 $ ), and weekly ($ t - 52 $ ) series
\begin { itemize}
\item \texttt { ts1.ygrowth()}
\end { itemize}
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Operations on \texttt { dseries} }
\begin { itemize}
\item \texttt { abs} : The absolute value of each data point
\item \texttt { cumprod} /\texttt { cumsum} : Cumulative product/sum
\item \texttt { exp} /\texttt { log} : The exponential/log for each data point
\item \texttt { mrdivide} /\texttt { mtimes} : Division/Multiplication
\item \texttt { minus} /\texttt { plus} : Subtraction/Addition
\item \texttt { mpower} : Power
\begin { itemize}
\item \texttt { ts1-ts2}
\item \texttt { ts1-3}
\item \texttt { ts1-[1:3]'}
\end { itemize}
\item \texttt { lag} /\texttt { lead} : lag/lead the series
\begin { itemize}
\item \texttt { ts1(-1)} /\texttt { ts1(2)}
\item \texttt { ts1.lag()} /\texttt { ts1.lead(2)}
\end { itemize}
\item \texttt { uminus} : Equivalent to multiplying by $ - 1 $ .
\begin { itemize}
\item \texttt { -ts1}
\end { itemize}
\end { itemize}
\end { frame}
\begin { frame} [fragile,t]
\frametitle { Modifying \texttt { dates} }
\begin { itemize}
\item \texttt { align} : Makes both series cover the same time range by padding with \texttt { NaN} 's
\begin { itemize}
\item \texttt { [ts1,ts2]=align(ts1,ts2)}
\end { itemize}
\item \texttt { chain} :
\item \texttt { horzcat} : Join two or more \texttt { dseries}
\begin { itemize}
\item \texttt { ts3=[ts1 ts2]}
\end { itemize}
\item \texttt { insert} : Inserts variables from one \texttt { dseries} into another
\begin { itemize}
\item \texttt { ts1.insert(ts2, 2)}
\end { itemize}
\item \texttt { merge} : Merge two series
\item \texttt { pop} : remove the last variable from \texttt { dseries}
\item \texttt { plot} : plot a \texttt { dseries}
\item \texttt { rename} : Rename a variable in a dseries
\begin { itemize}
\item \texttt { ts1.rename(`MyVar1',`MyFirstVar')}
\end { itemize}
\item \texttt { save} : Save a \texttt { dseries} in either \texttt { .csv} (default), \texttt { .m} , or \texttt { .mat}
\item \texttt { set\_ names} : Rename all variables in a \texttt { dseries}
\begin { itemize}
\item \texttt { ts3.set\_ names(`NewName1',`NewName2')}
\end { itemize}
\item \texttt { tex\_ rename} : Rename the \LaTeX name for a given variable
\begin { itemize}
\item \texttt { ts1.tex\_ rename(`MyVar1',`MyVar\textbackslash \_ 1')}
\end { itemize}
\item \texttt { vertcat} : Add more observations to existing \texttt { dseries}
\begin { itemize}
\item \texttt { [ts1; dseries(4,`2002y',`MyVar1')]}
\end { itemize}
\end { itemize}
\end { frame}
2014-04-29 17:56:45 +02:00
\subsection { Examples}
%
% REPORTING
%
\section { Reporting}
\subsection { Overview}
\begin { frame}
\frametitle { Overview}
\begin { itemize}
\item Introduced in Dynare 4.4
\item Introduce reporting functionality to Dynare
\begin { itemize}
\item Input: \texttt { dseries}
\item Output: \LaTeX \ report \& compiled \texttt { .pdf}
\end { itemize}
\item Graphs and Tables are modular
\begin { itemize}
\item Can easily be included in another document
\end { itemize}
\item Graphs are produced in Ti$ k $ Z
\begin { itemize}
\item Scales well
\item Formating follows that of enclosing document
\end { itemize}
\item Works with Matlab \& Octave
\item Works approximately 5 times faster than Iris reporting
\end { itemize}
\end { frame}
\begin { frame}
\frametitle { Reporting Class Hierarchy}
\centering {
\begin { tikzpicture} [
node distance = .45cm,
auto,
line/.style={ ->, >=stealth'} ,
]
\node (Report) [abstract, rectangle split, rectangle split parts=2]
{
\textbf { Report}
\nodepart { second} \texttt { report(...);}
} ;
\node (Page) [abstract, rectangle split, rectangle split parts=2, below=of Report]
{
\textbf { Page}
\nodepart { second} \texttt { addPage(...);}
} ;
\node (Section) [abstract, rectangle split, rectangle split parts=2, below=of Page]
{
\textbf { Section}
\nodepart { second} \texttt { addSection(...);}
} ;
\node (Vspace) [abstract, rectangle split, rectangle split parts=2, below=of Section]
{
\textbf { Vspace}
\nodepart { second} \texttt { addVspace(...);}
} ;
\node (Graph) [abstract, rectangle split, rectangle split parts=2, left=of Vspace]
{
\textbf { Graph}
\nodepart { second} \texttt { addGraph(...);}
} ;
\node (Table) [abstract, rectangle split, rectangle split parts=2, right=of Vspace, text height=]
{
\textbf { Table}
\nodepart { second} \texttt { addTable(...);}
} ;
\node (Series) [abstract, rectangle split, rectangle split parts=2, below=of Vspace]
{
\textbf { Series}
\nodepart { second} \texttt { addSeries(...);}
} ;
\draw [line] (Series) to node { } (Table);
\draw [line] (Series) to node { } (Graph);
\draw [line] (Table) to node { } (Section);
\draw [line] (Graph) to node { } (Section);
\draw [line] (Vspace) to node { } (Section);
\draw [line] (Section) to node { } (Page);
\draw [line] (Page) to node { } (Report);
\end { tikzpicture}
}
\end { frame}
\subsection { Syntax}
\subsection { Examples}
2014-05-13 18:30:50 +02:00
\section { Putting it All Together}
2014-04-29 17:56:45 +02:00
\end { document}