2011-12-21 16 views
30

Yani bu çok basit bir soru, bunu anlayamıyor gibiyim.Neden "algoritma yakınsama" ve "nümerik olarak 0 veya 1 numaralı prob uyarısı" ayarını glm ile alıyorum?

Glm işlevini kullanarak bir günlük çalıştırıyorum, ancak bağımsız değişkenle ilgili uyarı iletileri almaya devam ediyorum. Faktör olarak saklanırlar ve onları sayısal olarak değiştirdim ancak şansım yoktu. Ayrıca onları 0/1'e kodluyorum ama bu da işe yaramadı.

Lütfen yardım edin!

> mod2 <- glm(winorlose1 ~ bid1, family="binomial") 
Warning messages: 
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

Ben de Zelig de denedim, ancak benzer hata:

> mod2 = zelig(factor(winorlose1) ~ bid1, data=dat, model="logit") 
How to cite this model in Zelig: 
Kosuke Imai, Gary King, and Oliva Lau. 2008. "logit: Logistic Regression for Dichotomous Dependent Variables" in Kosuke Imai, Gary King, and Olivia Lau, "Zelig: Everyone's Statistical Software," http://gking.harvard.edu/zelig 
Warning messages: 
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

DÜZENLEME: Eğer ?glm bakarsak

> str(dat) 
'data.frame': 3493 obs. of 3 variables: 
$ winorlose1: int 2 2 2 2 2 2 2 2 2 2 ... 
$ bid1  : int 700 300 700 300 500 300 300 700 300 300 ... 
$ home  : int 1 0 1 0 0 0 0 1 0 0 ... 
- attr(*, "na.action")=Class 'omit' Named int [1:63021] 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 ... 
    .. ..- attr(*, "names")= chr [1:63021] "3494" "3495" "3496" "3497" ... 
+2

Bu, verileriniz hakkında bazı ayrıntılı bilgiler olmadan cevap vermek imkansız olacaktır. Örneğin str (dat). Ayrıca, bunlar uyarı değil, hatalardır. Büyük bir fark var. – joran

+1

Sadece "glm" nin olmadığı yerde yakınsama elde ettiğini iddia eden bir "glm2" paketi olduğunu belirtmek istedim. Bunun problemle ilgisi var mı, bilmiyorum. Bkz. Http://journal.r-project.org/archive/2011-2/RJournal_2011-2_Marschner.pdf –

+0

Kategorik verilerle çalıştığınız göz önüne alındığında, tamsayı değişkenlerinizi faktörler olarak kabul etmeyi düşünürdüm. dat $ home <- as.factor (dat $ home) – eamo

cevap

34

(hatta ikinci uyarı için bir Google araması yapmak (Bu iletide) aşağıdaki belgelerden hata ile karşılaşabilirsiniz:

For the background to warning messages about ‘fitted probabilities numerically 0 or 1 occurred’ for binomial GLMs, see Venables & Ripley (2002, pp. 197–8).

Artık herkesin kitabı yok. Biraz daha detaylı here yılında yorumladı bu kitabın yazarlarından

There is one fairly common circumstance in which both convergence problems and the Hauck-Donner phenomenon can occur. This is when the fitted probabilities are extremely close to zero or one. Consider a medical diagnosis problem with thousands of cases and around 50 binary explanatory variable (which may arise from coding fewer categorical variables); one of these indicators is rarely true but always indicates that the disease is present. Then the fitted probabilities of cases with that indicator should be one, which can only be achieved by taking βi = ∞. The result from glm will be warnings and an estimated coefficient of around +/- 10. There has been fairly extensive discussion of this in the statistical literature, usually claiming non-existence of maximum likelihood estimates; see Sautner and Duffy (1989, p. 234).

Bir: Ama şunu yapmak için koşer olduğunu varsayarak, burada ilgili pasaj. Yani buradaki ders, belirleyicinizin seviyelerinden birine dikkatlice bakmaktır. (Ve Google, uyarı mesajı!)

+7

+1 İyi cevap. Sadece eklemek için: modele, model teşhisine ve bazen de farklı bir modele bakmak iyidir. Örneğin, bir sınıflandırma ağacı deneyin. Bu size (a) mükemmel bir belirleyiciniz (iyi bir şey) veya (b) bazı örnekleme sorunlarınız (kötü şey) olduğunu söyler. – Iterator

+1

Bu cevap, yalnızca OP'nin sorusundan gelen 2. uyarıya cevap veriyor mu? Http://discuss.analyticsvidhya.com/t/warning-message-glm-fit-algorithm-did-not-converge/5299 adresinde 'maxit' parametresinin ayarlanması önerisini (dokümantasyonda listelenmeyen "glm", "glm.fit" ve "glm.control" için "control" parametresinin bir parçası olarak geçirilir ve bu 1. uyarıyı çözdüğü görülüyor: 1: glm.fit: algoritması benim için yakınsama. –

+0

Cevabınızı çok yararlı bir joran buldum, ancak yine de cevabınıza göre sorunu nasıl çözeceğimi anlamıyorum. Benim anlayışım (cevabınızdaki alıntıya dayanarak) şudur: yordayıcı değişkenlerimden birinin düzeylerinden biri nadiren doğrudur, fakat her zaman çıkış değişkenin 0 ya da 1 olduğunu gösterir. Birincisi, herhangi bir iyi istatistiksel yöntem olmalıdır. Bununla başa çıkabilir mi? İkincisi, tahmin değişkeni nasıl bulabilirim ve bulduktan sonra ne yapacağım? – par

İlgili konular