Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Estimating Total Factor Productivity for panel data in Stata

    Can someone please assist. I have a set of data and need to estimate firm level TFP. Does anyone know the approach and command/s to use?
    Data is as follows
    Entity Value Added Capital Labour
    2000 A 1200 300 1500
    2001 A 1500 400 1200
    2002 A 900 900 1800
    2003 A 50 1200 1800
    2000 B 500 600 1200
    2001 B 600 660 1200
    2002 B 450 650 1300
    2003 B 600 700 1100
    2000 C 800 300 700
    2001 C 800 350 700
    2002 C 740 370 770
    2003 C 120 400 770
    Any help/hint will be much appreciated
    Thanks, Mbako





  • #2
    I do this type of analysis for an exam, generally you can use 2 different approaches:
    1. Use a normal cobb-douglas function, just follow me in you specific dataset...generate the log of value added, capital and labour. After run this regress

    regress ln_real_valueadded ln_real_capital ln_labor

    and to measure the TFP do after the regress command

    predict ln_TFP_OLS , resid

    remember that throughout predict you create the log form of the TFP, so to get the TFP just transform it in exp

    gen TFP_OLS=exp(ln_TFP_OLS)

    2. The second approach is used to predict the TFP using lev-pet method (search on internet for the theory about it), just use this command:

    levpet ln_real_valueadded , free(ln_labor) proxy(ln_real_materia) capital(ln_real_capital) reps(20) level(99)

    after to get the TFP_LP

    predict TFP_LP , omega

    it is just in exp form, so u don't need other transformations.
    In your specific case, use the first method, thus u don't have the material values.
    Some part of the literature state that control for year in the regression is not very good, but you can do it if you want to get a more complete analysis. Just use the command:

    xi: regress ln_real_valueadded ln_real_capital ln_labor i.year

    and after predict ln_TFP_OLS_year_control , resid

    I hope this is useful.

    Comment


    • #3
      A million thanks Kirin, I will try it and see...

      Comment


      • #4
        Sorry i notice that you have different firms, just add the if command to the regression, and differentiate the analysis.

        Comment


        • #5
          Ok, how do I go about that? What command will generate the logs for value added,k & l while recognizing the presence of different firms in the data set. Sorry am not yet a master in Stata!

          Comment


          • #6
            Don't worry...just follow this command lines:

            in this way you create the log of a value:
            gen ln_value_added=ln(value_added)
            gen ln_capital=ln(capital)
            gen ln_labour=ln(labour)

            for account that there are different firms:

            regress ln_value_added ln_capital ln_labour if entity=="A"
            predict ln_TFP_OLS_A if entity=="A" , resid

            regress ln_value_added ln_capital ln_labour if entity=="B"
            predict ln_TFP_OLS_B if entity=="B" , resid

            regress ln_value_added ln_capital ln_labour if entity=="C"
            predict ln_TFP_OLS_C if entity=="C" , resid

            Just change the names of the variables and insert yours.

            Comment


            • #7
              Once again, thanks. Am going through. So far I managed to create logs, but had to remove In, i.e. used gen ln_capital=(capital) instead of gen ln_capital=ln(capital). Am using stata13 and it was rejecting the In.

              Comment


              • #8
                I suspect its also to do with the versions of stata we are using. I use stata13 (IC) and it keeps rejecting most of the commands (Unless am missing something myslef). But nonetheless you have provided me with great clues and chances for breaking through.

                Comment


                • #9
                  no u need to type ln before the bracket...try again. drop the old variable and re-create!

                  Comment


                  • #10
                    i'm using stata 13 too...maybe try to do a screenshoot!

                    Comment


                    • #11
                      Thanks for your patience. I have attached the screen shot
                      Attached Files

                      Comment


                      • #12
                        Stata is capital lettere sensitive...you need to type ln in no capital letters, el-en.I can't see well if u do this error in the screen, just see that u type the letter in the right way. No problem man!!

                        Comment


                        • #13
                          It works, I was using 'capital i' instead on small L! Let me now try the second stage, i.e. estimating TFP with different firms.

                          Comment


                          • #14
                            hello Kirin, I have already done what you say creating log var for my dependent and independent variables. And I have run the levpet estimation. But now what should I do? For the levpet estimation I get just the coeff, the std error, z, prob, and the 99% interval.. that's all?? But i have a chi2=971.34 (p=0.0000) is it normal??

                            Comment


                            • #15
                              Originally posted by kirin View Post
                              Don't worry...just follow this command lines:

                              in this way you create the log of a value:
                              gen ln_value_added=ln(value_added)
                              gen ln_capital=ln(capital)
                              gen ln_labour=ln(labour)

                              for account that there are different firms:

                              regress ln_value_added ln_capital ln_labour if entity=="A"
                              predict ln_TFP_OLS_A if entity=="A" , resid

                              regress ln_value_added ln_capital ln_labour if entity=="B"
                              predict ln_TFP_OLS_B if entity=="B" , resid

                              regress ln_value_added ln_capital ln_labour if entity=="C"
                              predict ln_TFP_OLS_C if entity=="C" , resid

                              Just change the names of the variables and insert yours.
                              Hi Kirin, What if I have more many id-firm? What shall I do?

                              thanks b4

                              Comment

                              Working...
                              X