วิธีจัดการ: glm.fit: ความน่าจะเป็นที่ปรับด้วยตัวเลข 0 หรือ 1 เกิดขึ้น


ข้อความเตือนที่คุณอาจพบใน R คือ:

 Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

คำเตือนนี้เกิดขึ้นเมื่อคุณปรับโมเดลการถดถอยโลจิสติกให้เหมาะสม และความน่าจะเป็นที่คาดการณ์ของการสังเกตอย่างน้อยหนึ่งรายการในฐานข้อมูลของคุณไม่สามารถแยกแยะได้จาก 0 หรือ 1

โปรดทราบว่านี่เป็น ข้อความเตือน ไม่ใช่ข้อผิดพลาด แม้ว่าคุณจะได้รับข้อผิดพลาดนี้ โมเดลการถดถอยโลจิสติกของคุณจะยังคงพอดี แต่การวิเคราะห์กรอบข้อมูลดั้งเดิมอาจเป็นประโยชน์เพื่อดูว่ามีค่าผิดปกติที่ทำให้ข้อความเตือนนี้ปรากฏขึ้นหรือไม่

บทช่วยสอนนี้จะอธิบายวิธีจัดการกับข้อความเตือนนี้ในทางปฏิบัติ

วิธีทำซ้ำคำเตือน

สมมติว่าเราปรับโมเดลการถดถอยโลจิสติกเข้ากับกรอบข้อมูลต่อไปนี้ใน R:

 #create data frame
df <- data. frame (y = c(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1),
                 x1 = c(3, 3, 4, 4, 3, 2, 5, 8, 9, 9, 9, 8, 9, 9, 9),
                 x2 = c(8, 7, 7, 6, 5, 6, 5, 2, 2, 3, 4, 3, 7, 4, 4))

#fit logistic regression model
model <- glm(y ~ x1 + x2, data=df, family=binomial)

#view model summary
summary(model)

Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

Call:
glm(formula = y ~ x1 + x2, family = binomial, data = df)

Deviance Residuals: 
       Min 1Q Median 3Q Max  
-1.729e-05 -2.110e-08 2.110e-08 2.110e-08 1.515e-05  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -75.205 307338.933 0 1
x1 13,309 28512,818 0 1
x2 -2.793 37342.280 0 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.0728e+01 on 14 degrees of freedom
Residual deviance: 5.6951e-10 on 12 degrees of freedom
AIC: 6

Number of Fisher Scoring iterations: 24

โมเดลการถดถอยโลจิสติกของเราเข้ากับข้อมูลได้สำเร็จ แต่เราได้รับข้อความเตือนที่ ปรับความน่าจะเป็นเป็นตัวเลขเป็น 0 หรือ 1

หากเราใช้แบบจำลองการถดถอยโลจิสติกที่ติดตั้งเพื่อคาดการณ์เกี่ยวกับค่าตอบสนองของการสังเกตในฐานข้อมูลดั้งเดิม เราจะเห็นว่าความน่าจะเป็นที่คาดการณ์ไว้เกือบทั้งหมดนั้นแยกไม่ออกจาก 0 และ 1:

 #use fitted model to predict response values
df$y_pred = predict(model, df, type=" response ")

#view updated data frame
df

   y x1 x2 y_pred
1 0 3 8 2.220446e-16
2 0 3 7 2.220446e-16
3 0 4 7 2.220446e-16
4 0 4 6 2.220446e-16
5 0 3 5 2.220446e-16
6 0 2 6 2.220446e-16
7 0 5 5 1.494599e-10
8 1 8 2 1.000000e+00
9 1 9 2 1.000000e+00
10 1 9 3 1.000000e+00
11 1 9 4 1.000000e+00
12 1 8 3 1.000000e+00
13 1 9 7 1.000000e+00
14 1 9 4 1.000000e+00
15 1 9 4 1.000000e+00

วิธีจัดการกับคำเตือน

มีสามวิธีในการจัดการกับข้อความเตือนนี้:

(1) เพิกเฉยต่อมัน

ในบางกรณี คุณสามารถเพิกเฉยต่อข้อความเตือนนี้ได้ เนื่องจากไม่ได้บ่งชี้ว่ามีปัญหากับแบบจำลองการถดถอยโลจิสติก นี่หมายความว่าการสังเกตอย่างน้อยหนึ่งรายการในกรอบข้อมูลมีค่าทำนายซึ่งแยกไม่ออกจาก 0 หรือ 1

(2) เพิ่มขนาดตัวอย่าง

ในกรณีอื่นๆ ข้อความเตือนนี้จะปรากฏขึ้นเมื่อทำงานกับบล็อกข้อมูลขนาดเล็กซึ่งมีข้อมูลไม่เพียงพอที่จะสร้างแบบจำลองที่เชื่อถือได้ หากต้องการแก้ไขข้อผิดพลาดนี้ เพียงเพิ่มขนาดตัวอย่างของการสังเกตที่คุณป้อนลงในโมเดล

(3) ลบค่าผิดปกติ

ในกรณีอื่นๆ ข้อผิดพลาดนี้เกิดขึ้นเมื่อมีค่าผิดปกติในฐานข้อมูลดั้งเดิมและมีข้อสังเกตเพียงเล็กน้อยเท่านั้นที่มีความน่าจะเป็นใกล้กับ 0 หรือ 1 เมื่อลบค่าผิดปกติเหล่านี้ ข้อความเตือนมักจะหายไป

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีจัดการกับคำเตือนและข้อผิดพลาดอื่น ๆ ใน R:

วิธีแก้ไขใน R: สูตรเทมเพลตไม่ถูกต้องใน ExtractVars
วิธีแก้ไขในอาร์กิวเมนต์ R: ไม่ใช่ทั้งตัวเลขหรือตรรกะ: return na
วิธีแก้ไข: RandomForest.default(m, y, …): Na/NaN/Inf ในการเรียกใช้ฟังก์ชันต่างประเทศ

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *