我正在尝试使用R执行负二项回归。当我执行以下命令时:
DV2.25112013.nb <- glm.nb(DV2.25112013~ Bcorp.Geographic.Proximity + Dirty.Industry +
Clean.Industry + Bcorp.Industry.Density + State + Dirty.Region +
Clean.Region + Bcorp.Geographic.Density + Founded.As.Bcorp + Centrality +
Bcorp.Industry.Density.Squared + Bcorp.Geographic.Density.Squared +
Regional.Institutionalization + Sales + Any.Best.In.Class +
Dirty.Region.Heterogeneity + Clean.Region.Heterogeneity +
Ind.Dirty.Heterogeneity+Ind.Clean.Heterogeneity + Industry,
data = analysis25112013DF6)
R出现以下错误:
Error in glm.fitter(x = X, y = Y, w = w, etastart = eta, offset = offset, :
NA/NaN/Inf in 'x'
In addition: Warning message:
step size truncated due to divergence
我不明白这个错误,因为我的数据矩阵不包含任何NA / NaN / Inf值...我该如何解决这个问题?
谢谢,
答案 0 :(得分:2)
我认为这个错误的最可能原因是数据中的负值或零,因为glm.nb中的默认链接是“log”。通过更改我还认为你需要尝试更小的模型....可能会有四分之一的变量开始。这也允许您将相关变量作为包添加,因为它从您可能具有与分类变量共线性的严重可能性的名称中查找。link="identity"
进行测试很容易。
我们确实需要数据描述。我想知道Dirty.Industry + Clean.Industry
。这种二分法可以通过具有这些水平的因子变量来更好地处理。如果Clean = not-Dirty,这会阻止共线性。也许与你的“异质性”变量类似。 (我不相信@BenBolker的评论是正确的。我认为你很可能在地址编码问题之前首先需要统计咨询。)
require(MASS)
data(quine) # following example in ?glm.nb page
> quine$Days[1] <- -2
> quine.nb1 <- glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine, link = "identity")
Error in eval(expr, envir, enclos) :
negative values not allowed for the 'Poisson' family
> quine$Days[1] <- 0
> quine.nb1 <- glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine, link = "identity")
Error: no valid set of coefficients has been found: please supply starting values
In addition: Warning message:
In log(y/mu) : NaNs produced
答案 1 :(得分:1)
我已经通过将控制参数放入maxiter = 10或更低的模型假设来解决了这个问题。默认值为50次迭代。或许它可以为您提供更多迭代。试试