Data - Capital stock, TFP


#1

Hello,
I am looking for data on TFP of US quarterly to do Bayesian estimation on Dynare.
But I have some troubles finding TFP data.

  1. I find a source here for TFP
    https://www.frbsf.org/economic-research/indicators-data/total-factor-productivity-tfp/
    But checking the data, it seems a series of growth rate of TFP, rather than TFP itself.
  2. I am thinking maybe to caculate TFP as residual of output growth, but could not find data on capital stock quarterly.
    Is there anyone have any idea about where to get data on capital, TFP (quarterly)?
    Thanks,

#2

Hi,

Even if you have the level of TFP in your model, you can estimate your model with the growth rate of TFP as an observed variable (adding a measurement equation in the model). What would be the advantage in having the level, which is probably non stationary, as an observed variable? You can let the model decide what is the level.

I suppose that the link you are referring to use the results in John Fernald (2014) which provides an xlsx file with detailed data in annualized growth rates. I do not see (your point 2) how you could infer TFP level from “residual of output growth”.

Best,
Stéphane.


#3

Hello,
Thanks for your reply.
Just want to make sure that I get what you mean.
So, what I should do if I use the Fernald data (2014) for TFP growth rate, I should:

  • Add a variable in the variable block: growth_A (which is growth rate of TFP (variable A))
  • Add an equation in the model block: growth_A=A/A(-1) - 1
    Is this correct? I read some materials on this, they also mention adding something like measurement error equation, I don’t really get it, where could put measurement error in the equation?

Thank you,


#4

Yes. Unless you have doubts about the consistency between the data, for instance TFP growth provided by John Fernald, and the theoretical variable in your model (A), there is no reason to add a measurement error in the equation. But I do not know the papers you are referring to…

Best,
Stéphane.


#5

Thank you,
I am refering to this paper of Carlstrom and Fuerest, 1997 (http://faculty.econ.ucdavis.edu/faculty/kdsalyer/LECTURES/Ecn235a_disabled/carlstrom_fuerst_ac.PDF).
I have another question on this data set: i found that tfp growth is quite stationary, so do I need to detrend/filter this data before doing estimation on Dynare?

Best,


#6

Thanks for the reference, but there is no estimation in this paper (the model is calibrated and they compare simulated moments with sample moments).

Even if the growth of TFP is stationary it will have a non zero mean. So the decision, for removing the mean from the data or not, depends on your model. If your model has non zero mean TFP growth rate, then you should not touch the data. You will find more explanations on this in the paper by Johannes Pfeifer.

That said, I wonder why you want to treat TFP as an observable variable. Is the dynamic of TFP endogenous in your model? Otherwise I do not see why you would want to observe this variable, which is often treated as a latent variable.

Best,
Stéphane.


#7

Hello,

  • Sorry for not being clear. I am replicating the CF (1997) paper but also try to estimate the coefficient of technology (TFP) process in this paper. TFP is denoted theta, and the coefficient is rho in their paper.
  • The dynamic of TFP in CF(1997) is AR(1) process, so it is not endogenous, I think.
    This is the first time I hear about latent variable, I am sorry. I will need to check on it. But if you have a nice material to read on this, could you please share with me?

Thank you,


#8

Yes, I saw that \theta_t is a first order autoregressive model with mean unity in the paper. In the equation defining \theta_t, \nu_t is an exogenous random variable, the innovation of TFP. They discuss the behaviour of the model with respect to another shock (wealth shock), but I have the impression that when they simulate the model to compare simulated ACF and sample ACF they only consider the productivity shock. Whatever, \nu_t is not a measurement error, \nu_t is the source of aggregate randomness in the model.

I still do not understand if you want to estimate \rho jointly with the model’s deep parameters, or just want to estimate the TFP stochastic process… If you only seek to estimate \rho independently of the rest of the model, and plug the estimated value \hat \rho in the model, you only have to estimate the AR(1) model with TFP data. You do not need Dynare for that, the OLS estimator is:

\hat\rho = \frac{\sum_{t=2}^T (y_t-\bar y)(y_{t-1}-\bar y)}{\sum_{t=2}^T (y_{t-1}-\bar y)^2}

But if you want to estimate \rho jointly with the rest of the model (which makes sense since the value of \rho does not only affect the dynamic of productivity, but other elasticities in the core model through the expectations), then you need to compute the likelihood of the model (or posterior density) and Dynare may help here.

A latent variable is an unobserved variable. When you estimate a DSGE model, you only observe a subset of the endogenous variables (for instance output, consumption, inflation, …) but a lot of variables are not observed (for instance physical capital stock, productivity, preference shock, …). To evaluate the likelihood of the model a Kalman filter is used, which basically estimate the latent variables with the available data.

Best,
Stéphane.


#9

Dear Stéphane,
Yes, we want to estimatimate the TFP stochastic process. And I use Dynare to Bayesian estimate it. Even though we can estimate the AR(1) model with TFP data, I read some materials saying that using Dynare to estimate can take advantage of the information from the model to make estimation more precise.

I have a question relating to AR(1) process, it may be a “matlab” question, rather than “Dynare” but since you mention it the way to estimate AR(1) here, I want to ask you on it.
Actually I also estimate TFP as an AR(1) process independently to compare with the estimated result from Dynare.

But I use 1-line command of Matlab to estimate it: ar(tfp,1) where tfp is the name of the variable and 1 means AR(1), like instructed in this link https://www.mathworks.com/help/ident/ref/ar.html

So, now after reading your reply I am confusing if it’s correct to estimate like that on matlab, since it is very quick compared to computing OLS estimator by fomular. Maybe I am wrong, but I have been always doing that @@


#10

I was not aware of this function. I suppose it is available in a toolbox I do not have or use. Looking at the documentation, this function is equivalent to the formula I was mentioning if you set option ‘approach’ to ‘ls’ (least square estimation).

Best,
Stéphane.


#11

Hello Stephane,

I plan to caculate TFP based on Cobb-Douglass production function. So now I am collecting data on GDP, labor, and capital.

For labor data, I use US data for total hours worked of BLS. But in the data file, they said : “Hours-worked series are seasonally-adjusted, and presented in billions. Also note that these quarterly hours series are on an annualized-level basis.” I don’t understand what do they mean by "quarterly on an annualized-level basis?

Sorry for keep asking you on data here, but I really want to be precise on data to avoid confusion on dynare results later on.

Thank you,


#12

Hi Hien, I think it means that the quarterly data are multiplied by four. To check you can compare the quarterly data to the annual data on hours. I still do not know why they do that…

Best,
Stéphane.


#13

Let me add a couple of things:

  1. Quarterly US-data are almost always annualized rates, i.e. presented in the form of what they would be if they were at that value for a whole year (i.e. multiplied by 4)
  2. You seem to be doing a Solow growth accounting. As it will be done in logs, scaling factors like the one in the previous point do not matter (which is also why you can use indices instead of levels)
  3. Capital services can be found in the multifactor productivity tables: https://www.bls.gov/mfp/#data
  4. I am adding codes I used for my class on business cycles

Question_1.m (2.6 KB)
CapitalStock.xlsx (14.1 KB)
Dataset_cycles.xlsx (84.0 KB)
PS5_Data_Exercise.pdf (213.3 KB)


#14

Thanks Stephane and Johannes for your answer.

@Johannes, regarding to data for capital:
I see in the excel file in your class exercise, seems that you can get quarterly for capital. But when I go to https://www.bls.gov/mfp/#data, and check the tables provided ( * Multifactor Productivity and Related Data - July 19, 2018 ([XLSX 36.8MB] data only ([XLSX 2.14MB]), I could not see the data for capital?
They data seems by industry and annual?

Could you kindly let me know how can you get the data used in your class? I checked the pdf file of question and see that the source of capital is Capital Utilization in Manufacturing (SIC) (Code:
G17/CAPUTL/CAPUTL.B00004.S.Q or CAPUTL), Source: Federal Reserve, Table G.17 - Industrial Production and Capacity Utilization. I checked this source, but it seems capital of only manufacturing sector, not the whole US.

Am I wrong somewhere?

Thank you,


#15
  1. I used Table XG 1-2 (Private Non-Farm Business Sector (Excluding Government Enterprises)), Capital Services. That data is only available at annual frequency, so I had to interpolate it
capitalservices_annual=xlsread('mfptablehis.xlsx','XG','D95:D164'); %Table XG 1-2
capitalservices_annual=[(1949:2018)' capitalservices_annual]; %data point for 2017 has endpoint at 2018Q1
capitalservices_quarterly=[(1947:0.25:2018)' zeros(length((1947:0.25:2018)),1)];
capitalservices_quarterly(:,2)=interp1(capitalservices_annual(:,1),capitalservices_annual(:,2),capitalservices_quarterly(:,1),'linear','extrap');

capitalpercapita=capitalservices_quarterly(:,2)./population;

capitalshare=xlsread('mfptablehis.xlsx','XG','C804:C873'); %Table XG 4-1
  1. Yes, capacity utilization is not available for the whole economy.
  2. Why do you not use Fernald’s TFP growth data, cumulate it, and then linearly or quadratically detrend it?
% *************************LOAD DATA **************************************
[d_TFP]=xlsread('fernald_tfp','quarterly','N4:N279');
timeline=1947.25:0.25:2016;

tfp_obs_temp = cumsum((d_TFP-nanmean(d_TFP))/400); % as Fernald series is annualized in percent

tfp_obs=detrend(tfp_obs_temp);