0

を使用して、try 関数がスキップする lm モデルからエラー/非収束をカウントできるようにしたい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 を数えています。しかし、一部のモデルは収束せず、エラーが発生することは確かです (したがって、x1categorical のレベルが 2 つではなく 1 つしかない場合)。リサンプリング後のレベルの場合、エラーが発生します)。

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 に答える