1. ホーム
  2. r

[解決済み] 加重ロジスティック回帰 (R)

2022-02-14 22:43:31

質問

成功者の割合とサンプルサイズ、独立変数のサンプルデータがある場合、Rでロジスティック回帰を試みているところです。

次のコードは、私が望むことを行い、賢明な結果を与えるように見えますが、賢明なアプローチとは思えません。

datf <- data.frame(prop  = c(0.125, 0,  0.667, 1,  0.9),
                   cases = c(8,     1,  3,     3,  10),
                   x     = c(11,    12, 15,    16, 18))

datf2         <- rbind(datf,datf)
datf2$success <- rep(c(1, 0), each=nrow(datf))
datf2$cases   <- round(datf2$cases*ifelse(datf2$success,datf2$prop,1-datf2$prop))
fit2          <- glm(success ~ x, weight=cases, data=datf2, family="binomial")

datf$proppredicted    <- 1 / (1 + exp(-predict(fit2, datf)))
plot(datf$x, datf$proppredicted, type="l", col="red", ylim=c(0,1))
points(datf$x, datf$prop, cex=sqrt(datf$cases))

のようなグラフを作成します。

というのは、それなりに理にかなっているように見えます。

しかし、私が不満なのは datf2 を、データを重複させて成功・失敗を分ける方法として このようなものは必要でしょうか?

あまりない質問ですが、予測比率の計算をもっときれいにする方法はないでしょうか?

解決方法は?

そのような人工的なデータを構築する必要はありません。 glm は、与えられたデータセットからモデルを適合させることができます。

> glm(prop ~ x, family=binomial, data=datf, weights=cases)

Call:  glm(formula = prop ~ x, family = binomial, data = datf, weights = cases)

Coefficients:
(Intercept)            x  
    -9.3533       0.6714  

Degrees of Freedom: 4 Total (i.e. Null);  3 Residual
Null Deviance:      17.3 
Residual Deviance: 2.043    AIC: 11.43

非整数の #successes" に関する警告が表示されますが、これは次の理由からです。 glm がバカになっています。構築したデータセットのモデルと比較してみてください。

> fit2

Call:  glm(formula = success ~ x, family = "binomial", data = datf2, 
    weights = cases)

Coefficients:
(Intercept)            x  
    -9.3532       0.6713  

Degrees of Freedom: 7 Total (i.e. Null);  6 Residual
Null Deviance:      33.65 
Residual Deviance: 18.39    AIC: 22.39

回帰係数(したがって予測値)は基本的に等しいです。しかし、人工的なデータポイントを作成したため、残差devianceとAICは疑わしいです。