我使用包glmer()
中的lme4
函数运行具有随机效果的广义线性模型。
模型代码如下所示:
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
我也尝试过不同的发行版系列(Gamma
,inverse.gaussian
)。这个错误代码究竟是什么意思?
答案 0 :(得分: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")
如果未指定正式参数,则参数与position匹配。第二个参数是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, ...)
第二个参数是family
,data
是第三个参数。所以你没有问题:
glm((Ndifference+74337) ~ netm1011 + d1011, Gamma(link = "identity"))
另请考虑gam
中的mgcv
:
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
也位于第二位。