Programmers learn & share
+1 vote
674 views

Problem :

I want to perform a logistic regression but I am facing following error I am unable to find my mistake.

summary(glm(prefmerkel~angst+crisismerkel+leadership+trustworthiness+ideology+pid+agegroups+gender+region,data=gles))
Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  : 
  NA/NaN/Inf in 'y'
In addition: Warning messages:
1: In Ops.factor(y, mu) : ‘-’ nicht sinnvoll für Faktoren
2: In Ops.factor(eta, offset) : ‘-’ nicht sinnvoll für Faktoren
3: In Ops.factor(y, mu) : ‘-’ nicht sinnvoll für Faktoren
by (7.5k points)   | 674 views

1 Answer

+1 vote

Solution :

The most important thing here is you can not have factor/categorical response variables.

For e.g.:

> d=data.frame(f=factor(c(1,2,1,2,1,2)),x=runif(6))
> glm(f~x,data=d)
Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 0.351715633412823, 0.449422287056223,  : 
  NA/NaN/Inf in 'y'
In addition: Warning messages:
1: In Ops.factor(y, mu) : - not meaningful for factors
2: In Ops.factor(eta, offset) : - not meaningful for factors
3: In Ops.factor(y, mu) : - not meaningful for factors

So if  you really want to do a logistic regression you must change them to 0 and 1OR FALSE and TRUE, and you must use family=binomial as follows:

For e.g.:

d$f=d$f=="2"
glm(f~x,data=d,family=binomial)
Call:  glm(formula = f ~ x, family = binomial, data = d)
Coefficients:
(Intercept)            x  
    -0.9066       1.8922  
Degrees of Freedom: 5 Total (i.e. Null);  4 Residual
Null Deviance:      8.318 
Residual Deviance: 8.092    AIC: 12.09

 

by (36.1k points)  
2,227 questions
2,734 answers
59 comments
241 users