生產函式

使用 prodest 和 estprod 包在 R 中估計 TFP

  • October 3, 2020

我正在寫我的學士論文,我真的需要關於 TFP 估計的幫助。到目前為止,我有一個數據集,其中包含增值 (va)、勞動力 (l)、資本 (k) 和材料 (m) 的對數值。初始數據集可在此處獲得: https ://drive.google.com/file/d/1aedWYABus1fQjKWxkOmYOmxv-qSja7hF/view?usp=sharing

到目前為止,我的程式碼是:

remove(list=ls())

library(plm)
library(dplyr)
library(ggplot2)
library(prodest)
library(estprod)
library(broom)

setwd("C:/Users/vadya/Desktop/baka")


Data <- read.csv("LV.csv", header=TRUE, sep=",")
str(Data)

summary(Data)

DataA <- Data %>% 
 filter(NACE == 'A') %>% 
 filter(VA > 0, L > 0, K > 0, M > 0) %>%
 mutate(l = log(L),
        va = log(VA),
        k = log(K),
        m = log(M))

wooldridge(data = DataA, va ~ l | k | m, id = "ID", time = "Year", bootstrap = TRUE, gross = FALSE)


levinsohn_petrin(data = DataA, va ~ l | k | m, id = "ID", time = "Year", bootstrap = TRUE, gross = FALSE)


olley_pakes(data = DataA, va ~ l | k | m, id = "ID", time = "Year", bootstrap = TRUE, gross = FALSE)

mod1 = estprod::levinsohn_petrin(data = DataA,
                                formula = va ~ l | k | m, 
                                id = "ID", 
                                time = "Year", 
                                reps = 20,
                                gross = FALSE) 
mod1
 
mod2 = prodest::prodestLP(DataA$va,
fX = DataA$l,
                         sX = DataA$k, 
pX = DataA$m,
                         idvar = DataA$ID,
timevar = DataA$Year,
                         opt='optim',
                         exit = FALSE,
                         tol = 1e-100)  

omega = prodest::omega(mod2) 

到目前為止,問題如下 - 使用 estprod 包我只得到 l 和 k 估計的係數,沒有 m 雌激素結果

使用 prodest 包,問題如下: 利潤結果

A 在 StackExchange 上的另一個主題中看到了相同的討論,其中一個人問了同樣的問題,但他提供了他的部分數據,並且一切正常。但在我的情況下,問題是不同的。

有沒有人遇到同樣的問題,是否有可能解決這些問題,因為我才開始在 R 中學習 TFP,所以我非常感謝您的幫助和提供的任何影響。提前致謝!!!

您收到錯誤是因為您的 ID 是字元串,並且 prodestLP 函式在此處存在問題 - 在這種情況下導致錯誤地指定替換矩陣。

您可以通過以下方式解決此問題:

DataA$ID<-as.numeric(as.factor( DataA$ID))

將 ID 聲明為數字後,程式碼將起作用:

    mod2 = prodest::prodestLP(DataA$va,
+ fX = DataA$l,
+                            sX = DataA$k, 
+ pX = DataA$m,
+                            idvar = DataA$ID,
+ timevar = DataA$Year,
+                            opt='optim',
+                            exit = FALSE,
+                            tol = 1e-100)  
>  
>  omega = prodest::omega(mod2) 

輸出:

   summary(mod2)

-------------------------------------------------------------
-               Production Function Estimation              -
-------------------------------------------------------------
                  Method :    LP              
-------------------------------------------------------------
                              fX1       sX1 
Estimated Parameters      :   0.107     0.458 
                            (0.012)   (0.052)
-------------------------------------------------------------
N                         :  4397
-------------------------------------------------------------
Bootstrap repetitions     :  20
1st Stage Parameters      :  0.107     0.249 
Optimizer                 :  optim
-------------------------------------------------------------
Elapsed Time              :  0.02 mins

-------------------------------------------------------------


summary(omega)
      V1        
Min.   :-3.452  
1st Qu.: 1.428  
Median : 1.842  
Mean   : 1.778  
3rd Qu.: 2.202  
Max.   : 4.492  

更新這些是我正在執行的包和上面顯示的程式碼之前的程式碼(我也在執行 R 版本 4.0.2 (2020-06-22)):

rm(list = ls())

Data <- read.csv("~/R studio/excercises in randomness/tfp2/Gmail/LV.csv")

View(Data)




pckg<-c("plm","readxl","dplyr","ggplot2", "broom","prodest", "estprod")
#install.packages(c("plm","readxl","dplyr","ggplot2", "broom","prodest", "estprod"))
lapply(pckg, require, character.only = TRUE)

head(Data)

summary(Data)

DataA <- Data %>% 
        filter(NACE == 'A') %>% 
        filter(VA > 0, L > 0, K > 0, M > 0) %>%
        mutate(l = log(L),
               va = log(VA),
               k = log(K),
               m = log(M))

引用自:https://economics.stackexchange.com/questions/40006