我有一个涵盖五年内几个人的面板数据,我想使用plm软件包进行2SLS估算。我的工具变量是内生变量S和S_active的第一个滞后。当我运行第二阶段IV回归时,出现以下错误:
variable lengths differ (found for 'S_hat')
请,有人可以帮助我解决该错误吗?谢谢。
显然,通过在第一阶段回归中使用S和S_active变量的第一滞后,我将失去每个面板一年的观测值。因此,我理解该错误意味着我的内生变量的拟合值将比原始数据具有较短的长度。这就是为什么我的第二阶段IV回归引发该错误的原因。 我用谷歌搜索了如何处理此错误,并在这里遇到了非常类似的问题。但是没有人能特别解决我的具体情况。
我尝试了另一种建议的解决方案(即将拟合值添加到原始数据中),但又遇到了另一个错误:
arguments imply differing number of rows: 9196, 7192
以下是我的代码的样子:
library(bootstrap)
library(AER)
library(systemfit)
library(sandwich)
library(lmtest)
library(boot)
library(laeken)
library(smoothmest)
library(glm2)
library(tidyverse)
library(foreign)
library(plm)
data_09=read.csv("panel2009.csv")
attach(data_09)
table(is.na(data_09))
FALSE
1480556
#First Stage. Run plm, regressing S on exogenous idependent variables including the IV, lag(S)
firstpan=plm(S~ act + plm::lag(S) + S_active + C_tot, data=data_09, na.action = na.exclude, index = c("individual","year"), method = "within", effect = "twoways")
summary((firstpan))
#First Stage. Run plm, regressing S_active on exogenous idependent variables including the IV, lag(S_active)
secondpan=plm(S_active ~act + act*plm::lag(towater) + S + C_tot, data=data_09, na.action = na.exclude, index = c("individual","year"), method = "within", effect = "twoways")
summary((secondpan))
#Collect fitted values and add them to data
S_hat=fitted(firstpan)
S_active_hat=fitted(secondpan)
#Run the standard 2SLS using S_hat=fitted and S_active_hat as instruments
iv=ivreg(Y ~ act+ S + S_active + C_tot|act + S_hat +S_active_hat + C_tot,data=data_09, na.action=na.exclude)
summary(iv)
Error in model.frame.default(terms(formula, lhs = lhs, rhs = rhs, data = data, :
variable lengths differ (found for 'S_hat')
第一阶段回归成功运行,但是第二阶段IV回归引发错误:model.frame.default(terms(formula,lhs = lhs,rhs = rhs,data = data,: 可变长度有所不同(适用于“ S_hat”)
请,我需要帮助。谢谢。