1

私の予測子には 2 つのレベルがあります。

>table(predictor)

predictor
    1     2 
12115  4257 

私の応答には2つのレベルもあります:

> table(response)
response
    1     0 
12115  4257 

したがって、明らかに、ここには完全に線形の相関関係があります。しかし、後でロジスティック回帰と予測を実行すると、次のようになります。

logit = glm(response~predictor, data=data, family="binomial")
pred = predict(logit, newdata=data, type="response")

ただし、予測では、実際のデータとは正反対の結果が得られます。

pred                       1     0
  2.90070146547072e-12 12115     0
  0.999999999997099        0  4257

ここで何がうまくいかなかったのか誰にもわかりますか?これはどのように説明できますか?

ありがとうございました!

4

1 に答える 1

0

予測子は (明らかに) レベル 1,2 の因子です。ただし、応答はレベル 0、1 の要因です。

まず、予測子が実際に因子として格納されていることを確認してください。整数ではありません。

predictor <- as.factor(predictor)

「しかし、予測では実際のデータとは正反対の結果が得られます」

「実際のデータ」とは、予測子 {1,2} の実際の値、または応答 {0,1} の実際の値を意味しますか?

からの出力ベクトルを使用しpredict()て元の予測子変数を予測する場合は、そのままでは使用できません。しきい値を設定し、そのレベル ベクトル c(1,2) にインデックスを付ける必要があります。または、次を使用しますifelse

pred <- predict(logit, newdata=data, type="response")
threshold <- 0.5 # or whatever threshold you use
pred <- ifelse(pred>threshold, 1, 2)

また、@John が要求したようなテーブル (予測子、応答) を表示します。

于 2014-03-08T14:28:56.467 に答える