glmer中的错误:外部函数调用中的NA / NaN / Inf(arg 1)

时间:2012-02-15 10:05:32

标签: r lme4

我正在尝试适应模型

glmer(trans.dummy ~ pop + year + (year | munname), 
      data=pool, family=binomial(link = "logit"), REML=T, verbose=T)

但我一直收到以下错误:

Error in glm.fit(fr$X, fr$Y, weights = wts, offset = offset, family = family,  : 
NA/NaN/Inf in foreign function call (arg 1)

我省略了NAs,改变了模型规范,将pop转换为log(pop)但没有解决问题。我认为问题在于变量'pop',因为它是导致该问题的唯一因素。我跑的时候

mod6 <- glmer(trans.dummy ~ constituency.coa + I(governat.part) + I(district2) + 
                        gdp.cap + year + ifdm + year + (year | munname) + (year | uf), 
              data=pool, family=binomial(link = "logit"), REML=T, verbose=T)

我没有任何问题。

有关正在发生的事情的任何想法?

编辑:

这是我的数据结构:

'data.frame':   41484 obs. of  50 variables:
 $ munname         : Factor w/ 5392 levels "ACACRELANDIA",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ uf              : Factor w/ 26 levels "AC","AL","AM",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ year            : int  2003 2003 2003 2003 2003 2003 2003 2003 2003 2003 ...
 $ party           : Factor w/ 30 levels "DEM","PAN","PC do B",..: 21 25 25 8 21 10 10 25 10 10 ...
 $ candidate       : Factor w/ 12600 levels "AARAO CRUZ MENDES",..: 11452 8535 6389 5910 8095 1995 6087 3996 4313 8417 ...
 $ may.coalit      : Factor w/ 10442 levels "DEM","DEM / PC do B / PRB / PRP / PTN / PSL",..: 7987 10118 10119 4023 8004 10442 4023 10114 4023 3945 ...
 $ governat.part   : Factor w/ 9 levels "PDT","PFL","PMDB",..: 9 9 9 9 9 9 9 9 9 9 ...
 $ transfers       : num  920 100920 183698 200920 919 ...
 $ pop             : num  8695 3667 17944 6641 6096 ...
 $ gdp             : num  68507 17492 101626 47936 37903 ...
 $ bf              : num  703 330 1339 335 455 ...
 $ ifdm            : num  0.422 0.442 0.404 0.511 0.396 ...
 $ elec.num        : int  45 13 13 15 45 11 11 13 11 11 ...
 $ may.votes       : int  2394 1345 3864 1415 1434 9422 2313 5423 1078 3348 ...
 $ may.round       : int  1 1 1 1 1 1 1 1 1 1 ...
 $ may.perc.votes  : num  0.59 0.586 0.441 0.544 0.615 ...
 $ pt.position     : Factor w/ 5 levels "0.No PT","1.PT mayor winner",..: 4 2 2 3 4 5 5 2 3 5 ...
 $ numb.cand       : int  2 2 3 3 2 4 3 2 2 2 ...
 $ runup           : Factor w/ 3 levels "1.PT","2.Coalition",..: 3 3 2 1 3 2 2 3 1 2 ...
 $ voters          : num  6422 3158 12234 3721 3682 ...
 $ nation.turnout  : num  4282 2150 7989 2624 2138 ...
 $ lula.vote       : num  2202 1197 4579 1431 1138 ...
 $ lula.perc.vote  : num  0.514 0.557 0.573 0.545 0.532 ...
 $ reelec          : Factor w/ 2 levels "Able to Run",..: 1 1 1 2 2 1 1 1 1 1 ...
 $ constituency.pt : num  9.37e-05 9.41e-05 3.83e-04 4.92e-05 5.38e-05 ...
 $ constituency.coa: num  4.10e-05 1.64e-05 6.87e-05 2.88e-05 1.34e-05 ...
 $ constituency.opp: num  4.81e-05 1.16e-05 2.47e-05 2.41e-05 3.55e-05 ...
 $ transfers.cap   : num  0.106 27.521 10.237 30.254 0.151 ...
 $ gdp.cap         : num  7.88 4.77 5.66 7.22 6.22 ...
 $ bf.cap          : num  0.0808 0.0899 0.0746 0.0504 0.0747 ...
 $ lula.power      : num  1.32e-64 7.16e-65 2.74e-64 8.56e-65 6.80e-65 ...
 $ mun.vote        : int  1 1 1 1 1 0 1 1 1 0 ...
 $ mun.vote2       : Factor w/ 2 levels "PSDB","PT": 2 2 2 2 2 1 2 2 2 1 ...
 $ mun.vote3       : Factor w/ 2 levels "0.PT","1.PSDB": 1 1 1 1 1 2 1 1 1 2 ...
 $ core            : Factor w/ 3 levels "Lula Core Municipality",..: 3 3 3 3 3 3 3 1 3 3 ...
 $ mayor.party.r   : int  0 2 2 1 0 0 0 2 0 0 ...
 $ mayor.party.r2  : Factor w/ 3 levels "0.PT","1.Coalition",..: 3 1 1 2 3 3 3 1 3 3 ...
 $ pt.dummy        : int  0 1 1 0 0 0 0 1 0 0 ...
 $ trans.dummy     : int  1 1 1 1 1 1 1 0 1 1 ...
 $ year2           : Factor w/ 4 levels "2003-2004","2005-2006",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ district        : Factor w/ 6 levels "PSDB/Coal","PSDB/Opo",..: 5 6 6 4 5 2 5 6 5 2 ...
 $ term            : int  0 0 0 0 0 0 0 0 0 0 ...
 $ time            : int  1 1 1 1 1 1 1 1 1 1 ...
 $ pt.pt           : int  0 1 1 0 0 0 0 1 0 0 ...
 $ pt.coa          : int  0 0 0 1 0 0 0 0 0 0 ...
 $ pt.opp          : int  1 0 0 0 1 0 1 0 1 0 ...
 $ psdb.pt         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ psdb.coa        : int  0 0 0 0 0 0 0 0 0 0 ...
 $ psdb.opp        : int  0 0 0 0 0 1 0 0 0 1 ...
 $ district2       : Factor w/ 5 levels "Coal/Coal","Opp/Opp",..: 2 4 4 5 2 3 3 4 5 3 ...
 - attr(*, "na.action")=Class 'omit'  Named int [1:1316] 59 235 242 409 437 555 588 594 645 673 ...
  .. ..- attr(*, "names")= chr [1:1316] "59" "235" "242" "409" ...

1 个答案:

答案 0 :(得分:1)

看起来(至少)你的一个类别严重失衡,也许在你的模型规范创建的一个或多个隐式交叉分类中,所有'trans.dummies'处于同一级别。解决这个问题的方法是显示表格。你可以从:

开始
with(pool, table(trans.dummy, year ,munname) )