0

プロジェクトでは、R の「ロバスト」パッケージを使用してロバストな回帰を実行したいと考えています。データは、X 軸と Y 軸の両方で特定の突然変異の有病率で構成されているため、二項ファミリーを使用しました。問題は、信頼区間を計算しようとするたびにエラーが発生することです。

predict.glmRob(mod, newdata = dfPred, type = "response") のエラー:
非関数を適用しようとしています

これは私が実行したRコードです:

mod      <- glmRob(pop2 ~ pop1, data=df, family=binomial)
xweights <- seq(0, 0.2, 0.001)
dfPred   <- data.frame(pop1 = xweights)
yweights <- predict(mod, newdata=dfPred, type="response")

そして、これらはデータです:

            pop2           pop1
1   0.0000000000    0.006656805
2   0.0023738872    0.027366864
3   0.0071216617    0.054733728
4   0.0029673591    0.030325444
5   0.0094955490    0.175295858
6   0.0000000000    0.022189349
7   0.0005934718    0.019970414
8   0.0000000000    0.011834320
9   0.0011869436    0.023668639
10  0.0053412463    0.159763314
11  0.0005934718    0.070266272
12  0.0000000000    0.014792899
13  0.0077151335    0.154585799
14  0.0005934718    0.003698225
15  0.0011869436    0.062130178
16  0.0017804154    0.025147929
17  0.0071216617    0.053254438
18  0.0136498516    0.196745562

次のコードを使用してモデルから信頼区間を抽出するのを手伝ってくれる人を見つけましたが、ロバストでない glm や別のファミリが選択されている場合には発生しない 0 から 1 の範囲の信頼区間が得られます。

mod          <- glmRob(pop2 ~ pop1, data=df, family=binomial)
yweights     <- fitted.values(mod)
coefficients <- coef(mod)
se           <- coef(summary(mod))[,2]
intercept    <- as.numeric(coefficients[1] + c(-2*se[1], 0, 2*se[1]))
slope        <- as.numeric(coefficients[2] + c(-2*se[2], 0, 2*se[2]))
lci          <- intercept[1]+slope[1]*df$pop1
    uci          <- intercept[3]+slope[3]*df$pop1

これを解決する方法を知っている人はいますか?

4

0 に答える 0