1 votos

TFP en R mediante el paquete estprod

Quiero calcular la PTF usando la función estprod (uso R 4.0.2). Por lo que he entendido la única forma de calcular la PTF es manual siguiendo esta lógica enter image description here . omega_1 = (data$Y - data$Labor*coefs$statistic[1] - data$Capital*coefs$statistic[2] - data$Materials*coefs$statistic[3]) - este es básicamente el enfoque que otro autor en StackExchange sugirió utilizar para calcular la PTF. Sin embargo, después de ejecutar las regresiones (LP, OP, Wooldridge) sólo obtengo dos coeficientes en la salida, para el capital y la mano de obra solamente, mientras que para los materiales el coeficiente no aparece.

Agradecería mucho cualquier comentario y apoyo, el conjunto de datos está disponible aquí: https://drive.google.com/file/d/1aedWYABus1fQjKWxkOmYOmxv-qSja7hF/view?usp=sharing

El código es el siguiente hasta ahora:

remove(list=ls())

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

# Set the working directory
setwd("C:/Users/vadya/Desktop/baka")

# Downloading the survey data
Data <- read.csv("LV.csv", header=TRUE, sep=",")
str(Data)

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

summary(Data)

# Creating a panel data frame
PData <- pdata.frame(Data, index = c("ID","Year"))

pdim(PData)
pvar(PData)

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

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

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

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

1voto

Matthias Benkard Puntos 11264

Para obtener el coeficiente de los materiales en el modelo Levinsohn-Petrin es necesario establecer la opción bruta como verdadera.

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

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

Coefficients
   Estimate Std. Error z value  Pr(>|z|)    
l 0.1033754  0.0067384  15.341 < 2.2e-16 ***
k 0.5859219  0.0048667 120.394 < 2.2e-16 ***
m 0.4808831  0.0143580  33.492 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

#Bootstraped standard errors.

Las otras dos funciones lamentablemente no recogen los coeficientes de las variables proxy.

Una alternativa es encontrar algún proxy diferente y utilizar $m$ como control (no apruebo necesariamente dicha opción desde la perspectiva científica, pero si te empeñas en tener coeficiente para $m$ es una opción). En su conjunto de datos no tiene ninguna variable adicional junto a $l$ , $k$ y $m$ (aparte del COGS que siempre es N/A) así que crearé una nueva variable para mostrar que funcionaría:

 DataA$m2<-(DataA$m)^2

mod1OP = estprod::olley_pakes(data = DataA, va ~  l |  k | m2 |  m, id = "ID", time = "Year", bootstrap = TRUE, gross = TRUE)
 summary(mod1OP)

    Call
estprod::olley_pakes(data = DataA, formula = va ~ l | k | m2 | 
    m, id = "ID", time = "Year", bootstrap = TRUE, 
    gross = TRUE)

Coefficients
    Estimate Std. Error z value  Pr(>|z|)    
l  0.1057613  0.0040007 26.4360 < 2.2e-16 ***
k  0.4643984  0.0308697 15.0438 < 2.2e-16 ***
m -0.0458770  0.0048684 -9.4234 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

#Bootstraped standard errors.

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

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

Coefficients
   Estimate Std. Error t value  Pr(>|t|)    
l 0.1210159  0.0075386  16.053 < 2.2e-16 ***
k 0.4670722  0.0135809  34.392 < 2.2e-16 ***
m 0.2595440  0.0158134  16.413 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Una vez más, esta forma de actuar no me parece que tenga sentido, pero le da el resultado deseado.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X