我正在尝试运行区间回归,其中我的因变量 y 由14个区间组成,代表收入。我有5000个观察结果。我有六个自变量我试图用来预测我的 y 。
我正在尝试按照此处执行的步骤进行操作:
http://www.karlin.mff.cuni.cz/~pesta/NMFM404/interval.html#References
所以,我实际上有 y 的确切值,但我正在尝试学习如何从中进行区间回归。所以,首先我将 y 转换为间隔。
Income[Income < 10000] <- 1
Income[Income > 10000 & Income < 20001] <- 2
Income[Income > 20000 & Income < 30001] <- 3
...
Income[Income > 300000] <- 14
好的,好的。从上面的链接,我应该实际上将它转换为对应于间隔的每个下限,以及每个上限。我不得不想象这不是唯一的方法,但就目前而言,我正在遵循这些方向。
lIncome <- rep(0,5000)#lower income bound
uIncome <- rep(0,5000)#upper income bound
for (i in 1:5000){
if(Income[i] == 1){
lIncome[i] = 0
uIncome[i] = 10000
}
if(Income[i] == 2){
lIncome[i] = 10001
uIncome[i] = 20000
}
...
if(Income[i] == 14){
lIncome[i] = 300001
uIncome[i] = Inf
}
}
所以现在我的列lIncome和uIncome对应于收入水平。这部分我很好。也许这是有问题的,我的最后一个间隔是无限的;但即使我把它限制在500000,我仍然会遇到错误。
接下来的说明是要合并Surv()函数。
所以,我执行:
TEST <- Surv(lIncome, uIncome, event = rep(3,5000))
然而,我的错误现在开始了。我明白了:
Warning message:
In Surv(lIncome, uIncome, event = rep(3, 5000)) :
Invalid status value, converted to NA
如果我尝试
TEST <- Surv(lIncome, uIncome, event = rep(2,5000))
它有效,但随后:
m <- survreg(TEST ~ Age + AgeSq + ... , dist="gaussian")
给出:
Error in survreg(TEST ~ Age + AgeSq + NoDegree, dist = "gaussian") :
Invalid survival type
首先,我不确定为什么要改变3 - &gt; 2使它工作。即使我将Inf值更改为500000(或任何适当的数字),使其等于2(或任何数字)也无法解决问题。
其次,当我能够超越那一部分时,幸存者失败的事实让我感到困惑。
现在,我的方法是玩我的间隔,看看我能不能以某种方式让它工作,然后从那里开始。我也在仔细查看所有文档?Surv和?survreg
非常感谢任何帮助,谢谢。