【问题标题】:Error in glm() in RR中的glm()错误
【发布时间】:2015-07-02 07:10:28
【问题描述】:

我想执行逻辑回归但出现错误 - 不知道错误可能出在哪里。

我的数据结构:

'data.frame':   3911 obs. of  29 variables:
 $ vn1              : Factor w/ 2 levels "maennlich","weiblich": 1 1 2 1 1 2 1 1 1 1 ...
 $ vn2c             : int  1976 1943 1927 1949 1965 1977 1986 1976 1944 1994 ...
 $ vn35             : Factor w/ 7 levels "keine Angabe",..: 6 4 5 3 3 5 7 6 5 5 ...
 $ v39              : Factor w/ 8 levels "keine Angabe",..: 8 4 5 8 7 7 5 6 6 6 ...
 $ n39              : Factor w/ 9 levels "keine Angabe",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ v41              : Factor w/ 7 levels "keine Angabe",..: 6 5 5 2 7 7 5 5 6 6 ...
 $ n41              : Factor w/ 7 levels "keine Angabe",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ vn42a            : Factor w/ 8 levels "keine Angabe",..: 8 4 8 8 5 5 6 6 6 4 ...
 $ vn42b            : Factor w/ 8 levels "keine Angabe",..: 5 4 7 5 5 5 6 7 6 5 ...
 $ vn43a            : Factor w/ 8 levels "keine Angabe",..: 7 5 8 6 2 6 6 2 7 7 ...
 $ vn43b            : Factor w/ 8 levels "keine Angabe",..: 7 4 6 4 4 7 6 2 6 5 ...
 $ vn62             : Factor w/ 14 levels "keine Angabe",..: 8 11 9 2 3 3 8 6 5 7 ...
 $ vn119a           : Factor w/ 15 levels "keine Angabe",..: 6 3 8 14 10 8 14 8 6 6 ...
 $ ostwest          : Factor w/ 2 levels "Ost","West": 2 2 2 2 2 2 2 2 2 2 ...
 $ prefmerkel       : Factor w/ 2 levels "Steinbrueck",..: 1 2 2 NA NA NA 2 2 1 1 ...
 $ angst            : num  1 3 2 4 4 2 0 1 2 2 ...
 $ crisismerkel     : num  0 4 3 0 1 1 3 2 2 2 ...
 $ leadership42     : Factor w/ 5 levels "trifft ueberhaupt nicht zu",..: 5 1 5 5 2 2 3 3 3 1 ...
 $ leadership43     : Factor w/ 5 levels "trifft ueberhaupt nicht zu",..: 4 2 5 3 NA 3 3 NA 4 4 ...
 $ leadership       : num  1 -1 0 2 NA -1 0 NA -1 -3 ...
 $ trustworthiness42: Factor w/ 5 levels "trifft ueberhaupt nicht zu",..: 2 1 4 2 2 2 3 4 3 2 ...
 $ trustworthiness43: Factor w/ 5 levels "trifft ueberhaupt nicht zu",..: 4 1 3 1 1 4 3 NA 3 2 ...
 $ trustworthiness  : num  -2 0 1 1 1 -2 0 NA 0 0 ...
 $ ideology         : num  5 8 6 NA NA NA 5 3 2 4 ...
 $ pid              : Factor w/ 10 levels "none","CDU/CSU",..: 3 2 5 1 7 5 1 5 3 3 ...
 $ age              : num  37 70 86 64 48 36 27 37 69 19 ...
 $ agegroups        : Factor w/ 7 levels "bis 25 Jahre",..: 3 6 7 5 4 3 2 3 6 1 ...
 $ gender           : Factor w/ 2 levels "male","female": 1 1 2 1 1 2 1 1 1 1 ...
 $ region           : Factor w/ 2 levels "west","east": 1 1 1 1 1 1 1 1 1 1 ...

回归命令返回以下错误:

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

【问题讨论】:

  • 也许你的变量不应该是因素,尝试改变它们的类型
  • 可能是y 不能包含NA $ prefmerkel : Factor w/ 2 levels "Steinbrueck",..: 1 2 2 NA NA NA 2 2 1 1 ... 错误NA/NaN/Inf in 'y'

标签: r logistic-regression


【解决方案1】:

您不能有因子/分类响应变量。

插图:

> 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

如果你真的想进行逻辑回归,你应该将它们更改为 0 和 1,或者 FALSE 和 TRUE,并使用 family=binomial

# recode d$f==2 as TRUE, else FALSE
d$f=d$f=="2"
# fit
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

【讨论】:

    【解决方案2】:

    如果您的变量是二项式,请提及“family=binomial”。这样就可以解决问题了

    【讨论】:

      【解决方案3】:

      此页面在搜索此错误时显示很高,因此想要添加另一个不与线性回归与逻辑回归有关的理由。我遇到了与Yulia 相同的问题,我对一些预测变量进行了log-transformed,导致出现此处讨论的错误。

      错误的原因是,如果在对数转换之前有任何值为 0 的行,这些行将变为 -Inf,这会导致回归引发错误。解决方案是避免对此类变量进行日志转换,或者确保没有 0 值行(参见例如 discussion on stack exchange)。

      【讨论】:

        【解决方案4】:

        就我而言,以上都不是。我已经对右偏变量进行了对数转换,当我使用它时,对数回归导致了这个错误。当我使用原始(未转换的)变体时 - 它工作得很好。

        【讨论】:

          猜你喜欢
          • 2020-03-31
          • 2023-03-27
          • 2015-02-24
          • 1970-01-01
          • 2018-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-12
          相关资源
          最近更新 更多