Çok nadir pozitif sınıflı bir veri kümem varsa ve negatif sınıfı aşağı örneklemem, sonra lojistik bir regresyon uygulamam, pozitif sınıfın prevalansını değiştirdiğim gerçeğini yansıtmak için regresyon katsayılarını ayarlamam gerekir mi?
Örneğin, 4 değişkenli bir veri kümesine sahip olduğumu varsayalım: Y, A, B ve C. Y, A ve B ikili, C sürekli. 11.100 gözlem için Y = 0 ve 900 Y = 1 için:
set.seed(42)
n <- 12000
r <- 1/12
A <- sample(0:1, n, replace=TRUE)
B <- sample(0:1, n, replace=TRUE)
C <- rnorm(n)
Y <- ifelse(10 * A + 0.5 * B + 5 * C + rnorm(n)/10 > -5, 0, 1)
A, B ve C verilen Y'yi tahmin etmek için lojistik bir regresyon uyguluyorum
dat1 <- data.frame(Y, A, B, C)
mod1 <- glm(Y~., dat1, family=binomial)
Bununla birlikte, zaman kazanmak için 900 Y = 0 ve 900 Y = 1 vererek 10.200 Y olmayan gözlemi kaldırabilirim:
require('caret')
dat2 <- downSample(data.frame(A, B, C), factor(Y), list=FALSE)
mod2 <- glm(Class~., dat2, family=binomial)
İki modeldeki regresyon katsayıları çok benzer görünüyor:
> coef(summary(mod1))
Estimate Std. Error z value Pr(>|z|)
(Intercept) -127.67782 20.619858 -6.191983 5.941186e-10
A -257.20668 41.650386 -6.175373 6.600728e-10
B -13.20966 2.231606 -5.919353 3.232109e-09
C -127.73597 20.630541 -6.191596 5.955818e-10
> coef(summary(mod2))
Estimate Std. Error z value Pr(>|z|)
(Intercept) -167.90178 59.126511 -2.83970391 0.004515542
A -246.59975 4059.733845 -0.06074284 0.951564016
B -16.93093 5.861286 -2.88860377 0.003869563
C -170.18735 59.516021 -2.85952165 0.004242805
Bu da aşağı örneklemenin katsayıları etkilemediğine inanmamı sağlıyor. Ancak, bu tek, tartışmalı bir örnek ve kesin olarak bilmeyi tercih ederim.
mod2
), Pr(>|z|)
için A
neredeyse 1. Biz katsayı dair hipotezi kabul edilemez olduğunu A
biz kullanılan bir değişken kaybetmiş böylece 0'dır mod1
. Bu önemli bir fark değil mi?