所以我正在使用 survreg,我希望我的预测结果遵循 0 的下限,但它们经常表示负面结果。我认为它以某种方式估计了线性结果,而不是我试图创建的生存模型。这是我所做的:
linear.first.stage<-lm(y ~ x, data=clip)
首先,我估计了一些点来加快我的估计过程。如果没有这个第一阶段,它就无法收敛。我按照 ?survreg 中的代码创建了一个生存对象,该代码提供了一个明确的 tobit 回归示例。我在下面为 x 和 y 复制了这个。在我的数据集中,y 只能观察到非负值,但如果它是正值,它往往会在 200 左右正态分布,sd 约为 20。X 可以取任何值,理论上不受约束通过立即想到的任何特定数字。
surv_y<-Surv(clip$y, clip$y>0,type="left")
first.stage<-survreg(surv_y ~ x,init=(linear.first.stage), dist="gaussian", data=clip)
我运行生存回归,它应该相当于一个 Tobit。为了确认我对事件的解释是相同的,我运行了以下命令:
test<-tobit(y~x, left=0, right=Inf, dist="gaussian", data=clip)
p_test<-predict(test)
p<-predict(first.stage)
plot(p_test-p)
该图在零处显示一条平线,因此在目视检查时,这些命令应该是相同的。但是,在这两种情况下,都会预测到低于 0 的结果。这是有问题的,因为我已经说过可观察信息的左边界是 0。我的期望是所有预测值都必须 > 0。
我尝试使用“链接”、“响应”、“线性”类型进行预测,但无济于事。我假设 predict 命令正在产生结果,就好像审查没有发生一样。如何生成服从下限 0 的预测?
参考: