2016-12-04 63 views
1

我正在運行使用包lme4中的glmer()函數的隨機效果的廣義線性模型。`glmer {lme4}`的錯誤:不能強制類「家族」到data.frame

型號代碼看起來是這樣的:

mod6 <- glmer((Ndifference+74337) ~ netm1011 + d1011 + 
      b0001 + (1|region), Gamma(link = "identity")) 

Ndifference是計數的50個州(和DC)200和2010之間的差異人口數據。有一個負值(密歇根州在-74336),所以我加了一個常數,以確保我的迴應都是正面的。

所有的預測因子(除了地區的隨機效應)都是比例或百分比。 Netm1011(2010年向各州移民的比率)和d1011(每1000人的死亡率)都有幾個負值。 B0001包含所有正比例(出生率/ 1000人)。

當我跑我不斷收到此錯誤模型:

Error in as.data.frame.default(data) : 
    cannot coerce class ""family"" to a data.frame 

我試過分佈不同的家庭以及(Gammainverse.gaussian)。這個錯誤代碼究竟意味着什麼?

回答

4
glmer(formula, data = NULL, family = gaussian, control = glmerControl(), 
     start = NULL, verbose = 0L, nAGQ = 1L, subset, weights, na.action, 
     offset, contrasts = NULL, mustart, etastart, 
     devFunOnly = FALSE, ...) 

你想指定的正式說法,太:

family = Gamma(link = "identity") 

如果沒有指定形式參數,參數是按位置進行匹配。第二個參數是data,但是您將Gamma函數傳遞給它。所以model.frame不能工作。

這可能是glmer的特定問題。比較glm

glm(formula, family = gaussian, data, weights, subset, 
    na.action, start = NULL, etastart, mustart, offset, 
    control = list(...), model = TRUE, method = "glm.fit", 
    x = FALSE, y = TRUE, contrasts = NULL, ...) 

的第二個參數是familydata是第三。所以,不會有問題的是你做的事:

glm((Ndifference+74337) ~ netm1011 + d1011, Gamma(link = "identity")) 

而且從mgcv考慮gam

gam(formula,family=gaussian(),data=list(),weights=NULL,subset=NULL, 
    na.action,offset=NULL,method="GCV.Cp", 
    optimizer=c("outer","newton"),control=list(),scale=0, 
    select=FALSE,knots=NULL,sp=NULL,min.sp=NULL,H=NULL,gamma=1, 
    fit=TRUE,paraPen=NULL,G=NULL,in.out,drop.unused.levels=TRUE, 
    drop.intercept=NULL,...) 

我們看到family在第二位了。

+0

嗨@Zheyuan_Li,感謝您的更新,所以我最終插入了家族參數並運行了模型,導致了一個巨大的矩陣和一個錯誤代碼: eval中的錯誤(替代(expr),envir,enclos ): (maxstephalfit)PIRLS減半不能減少pwrss中的偏差更新 –

+0

Hi @Zheyuan Li,再次感謝您。我結束了標題反思這個錯誤以及問題本身。我還承認你回答涉及家庭爭論的第一個錯誤問題。快速的問題,我如何甚至將數據附加到我的帖子? –

+0

是的,先生! @Zheyuan李,謝謝! –

相關問題