我正在使用大型面板数据集估计标准Tobit模型。我需要包括ID和TIME的固定效应,但使用AER::tobit()或VGAM:vglm()会遇到优化问题。问题似乎与反转设计矩阵有关。
例如,AER::tobit()和VGAM:vglm()对于下面的示例代码tobit.AER和tobit.vglm运行良好,但是一旦添加因子变量as.factor(id)
,优化要么失败(AER),要么产生警告(VGAM)。
错误包括:
求解默认值(vcov.hyp)时出错:系统在计算上是奇异的:倒数条件数= 3.00879e-17
以及
检查wz(wz,M = M,trace =跟踪,wzepsilon =控制$wzepsilon):工作权重变量“wz”的16个对角元素已替换为0.00000000001819
因此,AER::tobit停止,VGAM:vglm出于所有实际目的被卡住(在我的实际大型数据集上运行时)。
我似乎无法为这两个软件包中的任何一个选择不同的优化方法(AER依赖于survreg
,VGAM有自己的基于Fisher评分的优化例程)。
有没有其他的编码方法?
谢谢你!
n <- 1000
res <- rnorm(n, mean = 0, sd = 1)
int <- c(rep(0,n/2), rep(10,n/2))
id <- c(rep(0,n/2), rep(1,n/2))
X <- rnorm(n, mean = 0, sd = 1)
y.star <- int + 4*X + res
y <- if_else(y.star >= 0, y.star, 0)
test.data <- data.frame(factor(id), y, X)
summary(tobit.AER <- AER::tobit(y ~ X, left = 0, cluster = id, robust=TRUE, data = test.data))
summary(tobit.AER.fe <- AER::tobit(y ~ X + as.factor(id) , left = 0, cluster = id, robust=TRUE, data = test.data))
summary(tobit.vglm <- VGAM::vglm(y ~ X , VGAM::tobit(Lower = 0, type.fitted = "censored"), robust=TRUE, data = test.data))
summary(tobit.vglm.fe <- VGAM::vglm(y ~ X + as.factor(id) , VGAM::tobit(Lower = 0, type.fitted = "censored"), robust=TRUE, data = test.data))```
1条答案
按热度按时间ctehm74n1#
当包含大型面板数据集的固定效应时,反转设计矩阵会出现问题,并导致您在上面强调的问题。
尝试使用 * 组内 * 变换,该变换涉及从每组内的每个观测减去组均值(即,对于每个ID和TIME组合)。此变换消除了在模型中包含固定效应的需要,并有助于降低问题的维度。