Nasıl ele alınır: glm.fit: sayısal olarak ayarlanmış olasılıklar 0 veya 1'in oluşması
R’de karşılaşabileceğiniz bir uyarı mesajı şöyledir:
Warning message: glm.fit: fitted probabilities numerically 0 or 1 occurred
Bu uyarı, bir lojistik regresyon modeli uydurduğunuzda ve veritabanınızdaki bir veya daha fazla gözlemin tahmin edilen olasılıklarının 0 veya 1’den ayırt edilemediği durumlarda ortaya çıkar.
Lütfen bunun bir hata değil, bir uyarı mesajı olduğunu unutmayın. Bu hatayı alsanız bile lojistik regresyon modeliniz yine de uygun olacaktır ancak bu uyarı mesajının görünmesine neden olan herhangi bir aykırı değer olup olmadığını görmek için orijinal veri çerçevesini analiz etmeniz yararlı olabilir.
Bu eğitimde, bu uyarı mesajıyla pratikte nasıl başa çıkılacağı açıklanmaktadır.
Uyarı nasıl yeniden oluşturulur?
R’deki aşağıdaki veri çerçevesine bir lojistik regresyon modeli uydurduğumuzu varsayalım:
#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
Lojistik regresyon modelimiz verilere başarıyla uyuyor ancak olasılıkları sayısal olarak 0 veya 1’e ayarlayan bir uyarı mesajı alıyoruz.
Orijinal veri tabanındaki gözlemlerin tepki değerleri hakkında tahminlerde bulunmak için uygun lojistik regresyon modelini kullanırsak, tahmin edilen olasılıkların neredeyse tamamının 0 ve 1’den ayırt edilemez olduğunu görebiliriz:
#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
Uyarı nasıl ele alınır?
Bu uyarı mesajını ele almanın üç yolu vardır:
(1) Görmezden gelin.
Bazı durumlarda bu uyarı mesajını görmezden gelebilirsiniz çünkü bu, lojistik regresyon modelinde bir sorun olduğunu göstermeyebilir. Bu basitçe, veri çerçevesindeki bir veya daha fazla gözlemin 0 veya 1’den ayırt edilemeyen değerleri tahmin ettiği anlamına gelir.
(2) Örneklem boyutunu artırın.
Diğer durumlarda bu uyarı mesajı, güvenilir bir model uyumu sağlamak için yeterli veri bulunmayan küçük veri bloklarıyla çalışırken görünür. Bu hatayı düzeltmek için modele sağladığınız gözlemlerin örnek boyutunu artırmanız yeterlidir.
(3) Aykırı değerleri kaldırın.
Diğer durumlarda, bu hata, orijinal veritabanında aykırı değerler olduğunda ve yalnızca az sayıda gözlemin 0 veya 1’e yakın olasılıklara sahip olduğu durumlarda ortaya çıkar. Bu aykırı değerlerin kaldırılmasıyla, uyarı mesajı genellikle kaybolur.
Ek kaynaklar
Aşağıdaki eğitimlerde R’deki diğer uyarıların ve hataların nasıl ele alınacağı açıklanmaktadır:
R’de nasıl düzeltilir: ExtractVars’ta geçersiz şablon formülü
R’de nasıl düzeltilir: argüman ne sayısal ne de mantıksal: return na
Nasıl düzeltilir: randomForest.default(m, y, …): Yabancı işlev çağrısında Na/NaN/Inf