0

我希望能够从我的 lm 模型中计算我的错误/未收敛,try 函数会跳过该模型,使用 a tryCatch,我将在下面给出我的代码示例,以便有人可以提供帮助。

i =- 0
count = 0
count1 = 0
fit = rep(NA, 1000)

while(i < 1000) try({ 
    count1 = count1 + 1
    dat = sample(data,replace = T)
    fit[i] = lm(y~x1 + x2, data = dat)
    count <- count + 1
}, silent = T)

我上面的这段代码运行平稳,但有时因为我重新采样数据,模型不收敛,因此使用try函数,我需要计算模型不收敛的次数。

我尝试在模型之前和之后放置 count1 和 count ,它们都在计数 1000。但我确定某些模型不会收敛并给出错误(因此,如果x1分类是这样的,它只有一个级别而不是两个级别重新采样后的水平然后我们有错误)。

有人可以帮助我如何tryCatch在这个while循环中使用来解决这个问题吗?

4

1 回答 1

1

你需要这样的东西(你需要增加你的while循环):

i <- 1
count1 <- 0
fit <- rep(NA, 1000)

while(i <= 1000) { 
    dat <- sample(data, replace = T)
    temp <- try(lm(y~x1 + x2, data = dat))
    if(inherits(temp,"try-error"))
        count1 <- count1 + 1
    else
        fit[i] <- temp
    i <- i + 1
}
于 2013-09-03T12:08:01.083 回答