R中的审查回归

机器算法验证 r 回归 tobit回归
2022-04-09 16:54:43

我有一个形式的 Tobit 模型:

Yi=Xiβ+ϵiYi=max(Yi,0).

回归变量是一个连续变量和 30 个因子(模拟白天的季节性影响)。在我的样本中有3116观察194左审查和2922未经审查。

我尝试了 R 包AERcensReg. tobit()AER收到一条错误消息:

Error in solve.default(L %*% V %*% t(L)) : 
Lapack routine dgesv: system is exactly singular: U[2,2] = 0

因此第一个问题是:我的因素太多了吗?但是AER有一个预测功能。鉴于数据Yi(非负面)我想对审查数据做出预测——E[Y|Y>0,Xi]- 这是预测功能AER给我的吗?

我如何在包中进行预测censReg

编辑 1) 正如 Achim Zeileis 所说,我的因素存在数据问题,它们经常为 0 或 NAN,tobit算法无法找到解决方案。我必须修复数据。

编辑 2) 请看以下示例:

library(AER)
N = 10
f = rep(c("s1","s2","s3","s4","s5","s6","s7","s8"),N)
fcoeff = rep(c(-1,-2,-3,-4,-3,-5,-10,-5),N)
set.seed(100) 
x = rnorm(8*N)+1
beta = 5
epsilon = rnorm(8*N,sd = sqrt(1/5))
y.star = x*beta+fcoeff+epsilon ## latent response
y = y.star 
y[y<0] <- 0 ## censored response

fit <- tobit(y~0+x+f)
summary(fit)

coef(fit) # very satisfying estimates

my.range = range(y, y.star, predict(fit))

plot(y, ylim=my.range)
lines(predict(fit), col="red")
lines(y.star, col="blue")

正如 Achim Zeileis 所写的predict()那样Y但我们如何预测Y高效且不偏不倚?

1个回答

对象的predict()fitted()方法tobit计算潜在均值的估计值μ=E[y]=xβ. 此外,尺度参数σ$scale在对象中可用:

mu <- fitted(fit)
sigma <- fit$scale

非零观测的概率为P(y>0)=Φ(μ/σ), IE:

p0 <- pnorm(mu/sigma)

审查的条件期望y鉴于它是非零的E[y|y>0]=μ+σλ(μ/σ), 在哪里λ()是反米尔斯比λ(x)=ϕ(x)/Φ(x)

lambda <- function(x) dnorm(x)/pnorm(x)
ey0 <- mu + sigma * lambda(mu/sigma)

最后,无条件期望是E[y]=P(y>0)E[y|y>0], IE:

ey <- p0 * ey0

如果您想在时间序列样式图中将所有内容可视化:

plot(y, ylim = my.range)
lines(mu, col = "slategray")
lines(y.star, col = "black")
lines(ey0, col = "green")
lines(ey, col = "blue")

对象的predict()方法tobit不能自动提供所有这些的原因是对于除正态/高斯以外的所有分布,关系并不那么容易。但也许我们至少应该支持正常情况。