ถ้าฉันมีชุดข้อมูลที่มีคลาสบวกที่หายากมากและฉันลบกลุ่มตัวอย่างที่เป็นลบจากนั้นทำการถดถอยโลจิสติกฉันต้องปรับค่าสัมประสิทธิ์การถดถอยเพื่อสะท้อนความจริงที่ว่าฉันเปลี่ยนความชุกของคลาสบวกหรือไม่
ตัวอย่างเช่นสมมติว่าฉันมีชุดข้อมูลที่มีตัวแปร 4 ตัวคือ Y, A, B และ C Y, A และ B เป็นเลขฐานสอง, C เป็นแบบต่อเนื่อง สำหรับการสังเกต 11,100 Y = 0 และสำหรับ 900 Y = 1:
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)
ฉันพอดีกับการถดถอยโลจิสติกในการทำนาย Y, ให้ A, B และ C
dat1 <- data.frame(Y, A, B, C)
mod1 <- glm(Y~., dat1, family=binomial)
อย่างไรก็ตามเพื่อประหยัดเวลาฉันสามารถลบการสังเกตแบบ non-Y ได้ 10,200 ครั้งโดยให้ 900 Y = 0 และ 900 Y = 1:
require('caret')
dat2 <- downSample(data.frame(A, B, C), factor(Y), list=FALSE)
mod2 <- glm(Class~., dat2, family=binomial)
ค่าสัมประสิทธิ์การถดถอยจาก 2 รุ่นมีลักษณะคล้ายกันมาก:
> 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
ซึ่งทำให้ฉันเชื่อว่าการสุ่มตัวอย่างไม่ส่งผลกระทบต่อค่าสัมประสิทธิ์ อย่างไรก็ตามนี่เป็นเพียงตัวอย่างเดียวที่วางแผนไว้และฉันก็อยากจะรู้แน่นอน
mod2
) Pr(>|z|)
สำหรับA
เป็นเกือบ 1 เราไม่สามารถปฏิเสธสมมติฐานที่ว่าค่าสัมประสิทธิ์A
คือ 0 mod1
ดังนั้นเราจึงมีการสูญเสียตัวแปรร่วมซึ่งจะใช้ใน นี่ไม่ใช่ความแตกต่างที่สำคัญใช่หรือไม่