R nasıl ele alınır? uyarı: glm.fit: algoritma yakınsamadı
R’de karşılaşabileceğiniz yaygın bir uyarı:
glm.fit: algorithm did not converge
Bu uyarı genellikle R’ye bir lojistik regresyon modeli sığdırmaya çalıştığınızda ve mükemmel ayırmayı gördüğünüzde, yani bir yordayıcı değişkenin yanıt değişkenini 0 ve 1’e mükemmel şekilde ayırabildiğini gördüğünüzde ortaya çıkar.
Aşağıdaki örnekte bu uyarının pratikte nasıl ele alınacağı gösterilmektedir.
Uyarı nasıl yeniden oluşturulur?
Aşağıdaki lojistik regresyon modelini R’ye sığdırmaya çalıştığımızı varsayalım:
#create data frame
df <- data. frame (x=c(.1, .2, .3, .4, .5, .6, .7, .8, .9, 1, 1, 1.1, 1.3, 1.5, 1.7),
y=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1))
#attempt to fit logistic regression model
glm(y~x, data=df, family=" binomial ")
Call: glm(formula = y ~ x, family = "binomial", data = df)
Coefficients:
(Intercept)x
-409.1 431.1
Degrees of Freedom: 14 Total (ie Null); 13 Residual
Null Deviance: 20.19
Residual Deviance: 2.468e-09 AIC: 4
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
Şu uyarı mesajını aldığımızı unutmayın: glm.fit: algoritma yakınsamadı .
Bu mesajı alıyoruz çünkü tahmin değişkeni x, yanıt değişkeni y’yi 0 ve 1’e mükemmel bir şekilde ayırabiliyor.
1’den küçük her x değeri için y’nin 0’a eşit olduğunu ve 1’e eşit veya 1’den büyük her x değeri için y’nin 1’e eşit olduğunu unutmayın.
Aşağıdaki kod, tahmin değişkeninin yanıt değişkenini 0’lara ve 1’lere mükemmel şekilde ayıramadığı bir senaryoyu gösterir:
#create data frame
df <- data. frame (x=c(.1, .2, .3, .4, .5, .6, .7, .8, .9, 1, 1, 1.1, 1.3, 1.5, 1.7),
y=c(0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1))
#fit logistic regression model
glm(y~x, data=df, family=" binomial ")
Call: glm(formula = y ~ x, family = "binomial", data = df)
Coefficients:
(Intercept) x
-2.112 2.886
Degrees of Freedom: 14 Total (ie Null); 13 Residual
Null Deviance: 20.73
Residual Deviance: 16.31 AIC: 20.31
Tahmin değişkeni yanıt değişkenini 0 ve 1’e tam olarak ayıramadığından herhangi bir uyarı mesajı almıyoruz.
Uyarı nasıl ele alınır?
Mükemmel bir ayrılık senaryosuyla karşılaşırsak bunu halletmenin iki yolu vardır:
Yöntem 1: Cezalandırılmış regresyon kullanın.
Seçeneklerden biri, kement lojistik regresyonu veya elastik ağ düzenlemesi gibi cezalandırılmış bir lojistik regresyon biçiminin kullanılmasıdır.
R’de cezalandırılmış lojistik regresyonun nasıl uygulanacağına ilişkin seçenekler için glmnet paketine bakın.
Yöntem 2: Yanıt değişkenini mükemmel şekilde tahmin etmek için yordayıcı değişkeni kullanın.
Popülasyonda bu mükemmel ayrımın mevcut olabileceğinden şüpheleniyorsanız, yanıt değişkeninin değerini mükemmel bir şekilde tahmin etmek için bu yordayıcı değişkeni kullanabilirsiniz.
Örneğin yukarıdaki senaryoda, yordayıcı değişken x 1’den küçük olduğunda yanıt değişkeni y’nin her zaman 0’a eşit olduğunu gördük.
Bu ilişkinin genel popülasyonda geçerli olduğundan şüphelenirsek, x 1’den küçük olduğunda y’nin değerinin 0 olacağını her zaman tahmin edebiliriz ve cezalandırılmış bir lojistik regresyon modeline uyma konusunda endişelenmeyiz.
Ek kaynaklar
Aşağıdaki eğitimler, R’de glm() işlevinin kullanımına ilişkin ek bilgiler sağlar:
R’de glm ve lm arasındaki fark
R’de glm ile tahmin işlevi nasıl kullanılır?
Nasıl ele alınır: glm.fit: sayısal olarak ayarlanmış olasılıklar 0 veya 1’in oluşması