用LP法(Levinsohn-Petrin法)计算企业全要素生产率(TFP)时,是否需要特别标注“if ind==xxx”取决于具体需求。如果希望计算特定行业的全要素生产率,要用“if ind==xxx”进行分行业的计算。通常情况下,LP法用于估计生产函数时会对整个数据集进行估计。如希望按行业分别计算TFP,要对每个行业单独进行估计,并在计算时使用条件过滤来确保只计算特定行业的数据。
下面是一个示例代码,在Stata中按行业分别计算全要素生产率。假设有一个包含多个行业的数据集,并分别计算每个行业的全要素生产率。
循环遍历每个行业并计算TFP:
// 假设数据集名为"data"并包含变量lnY, lnL, lnM, lnK, id, year, ind
// 首先获取所有行业的唯一值
levelsof ind, local(industry_levels)
foreach ind in `industry_levels' {
// 对每个行业分别计算TFP
levpet lnY, free(lnL) proxy(lnM) capital(lnK) i(id) t(year) if ind == "`ind'"
// 预测TFP
predict TFP_`ind', omega
// 创建一个新的变量存储TFP
gen TFP_LP_`ind' = ln(TFP_`ind') if ind == "`ind'"
replace TFP_LP_`ind' = . if ind != "`ind'"
}
// 将所有行业的TFP整合到一个变量中
gen TFP_LP = .
foreach ind in `industry_levels' {
replace TFP_LP = TFP_LP_`ind' if ind == "`ind'"
}
上述代码先用levelsof命令获取所有行业的唯一值,然后用foreach循环遍历每个行业。对每个行业用levpet命令进行LP法估计,并用predict命令预测TFP。最后,将每个行业的TFP值存储在一个新的变量中,整合到一个总的TFP变量中。
解释:
levelsof ind, local(industry_levels):获取变量ind中所有唯一的行业值,并将其存储在本地宏industry_levels中。
foreach ind in industry_levels' { ... }`:遍历每个行业。
levpet lnY, free(lnL) proxy(lnM) capital(lnK) i(id) t(year) if ind == "ind'"`:对每个行业进行LP法估计。
predict TFP_ind', omega:预测TFP值并存储在变量TFP_`ind''中。
gen TFP_LP_ind' = ln(TFP_ind') if ind == "ind'"`:创建一个新的变量存储TFP的对数值,只对当前行业进行计算。
replace TFP_LP_ind' = . if ind != "ind'":对不是当前行业的数据,将新变量的值设为缺失值。
gen TFP_LP = .:创建一个总的TFP变量。
replace TFP_LP = TFP_LP_ind' if ind == "ind'":将每个行业的TFP值整合到总的TFP变量中。