私は次のデータを持っています
Species <- c(rep('A', 47), rep('B', 23))
Value<- c(3.8711, 3.6961, 3.9984, 3.8641, 4.0863, 4.0531, 3.9164, 3.8420, 3.7023, 3.9764, 4.0504, 4.2305,
4.1365, 4.1230, 3.9840, 3.9297, 3.9945, 4.0057, 4.2313, 3.7135, 4.3070, 3.6123, 4.0383, 3.9151,
4.0561, 4.0430, 3.9178, 4.0980, 3.8557, 4.0766, 4.3301, 3.9102, 4.2516, 4.3453, 4.3008, 4.0020,
3.9336, 3.5693, 4.0475, 3.8697, 4.1418, 4.0914, 4.2086, 4.1344, 4.2734, 3.6387, 2.4088, 3.8016,
3.7439, 3.8328, 4.0293, 3.9398, 3.9104, 3.9008, 3.7805, 3.8668, 3.9254, 3.7980, 3.7766, 3.7275,
3.8680, 3.6597, 3.7348, 3.7357, 3.9617, 3.8238, 3.8211, 3.4176, 3.7910, 4.0617)
D<-data.frame(Species,Value)
私は 2 つの種 A と B を持っており、種を決定するための値の最適なカットオフポイントを見つけたいと考えています。
次の質問を見つけました。
R: 連続変数に基づいて 2 つのグループを最大限に分離するしきい値を決定しますか?
受け入れられた回答に従って、dose.p
MASSパッケージの関数で最適な値を見つけました。私はいくつかの同様の値を持っていますが、それらは機能しましたが、上記の値では機能しませんでした (これが、ここに 70 個の観測値すべてを含める必要があった理由でもあります)。
D$Species_b<-ifelse(D$Species=="A",0,1)
my.glm<-glm(Species_b~Value, data = D, family = binomial)
dose.p(my.glm,p=0.5)
しきい値として 3.633957 が得られます。
Dose SE
p = 0.5: 3.633957 0.1755291
これにより、45 の正しい割り当てが得られます。ただし、データを見ると、これが最適な値ではないことが明らかです。試行錯誤の結果、3.8 では 50 個の正しい割り当てが得られることがわかりました。これは明らかに優れています。
関数が他の値では機能するのに、この値では機能しないのはなぜですか? 明らかな間違いを見逃していますか?それとも、私の問題を解決するための別の/より良いアプローチがありますか? これを行う必要がある値がいくつかあるため、最適な値が見つかるまで値をランダムにテストしたくありません。
どんな助けでも大歓迎です。