在R中执行间隔回归

时间:2015-12-06 20:00:00

标签: r

我正在尝试运行区间回归,其中我的因变量 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

非常感谢任何帮助,谢谢。

0 个答案:

没有答案