4

我正在一个数据集上拟合一个 gee 模型,其中包括 13,500 个观察值(这里是学生)。学生被分为 52 所不同的学校。我知道有证据表明学生嵌套在学校内(低 ICC),因此我应该在方差协方差矩阵中调整这种嵌套效应。我打算做的是首先拟合一个具有可交换 var-cov 结构的 gee 模型。然后,除此之外,我将运行 Huber-White Sandwich 估计器,也称为鲁棒方差估计器。我为鲁棒方差估计器编写了自己的代码,并且效果很好。我的 gee 语句不起作用,并给出以下错误:

NA/NaN/Inf in foreign function call (arg 3)

这是我的代码:

STMath.OneYr.C1 = gee(postCSTMath1Yr ~ TRT1Yr + preCSTMath + preCSTENG + 
post1YrGradeRef + ELLBaseLine + GENDER + ECODIS + ETHNICITY.F + 
as.factor(FailedInd1Yr), data = UCI.clone[UCI.clone$COHORT0809 == "C1",], 
id =  post1YrSchIID, corstr = "exchangeable") 

不幸的是,上面的代码对你们来说是不可重现的,也许很难弄清楚问题是什么。

如果您能帮助我解决问题,我将不胜感激。

4

1 回答 1

6

好的,这个问题已经很老了,但我最终来到了这里,所以这最终可能会对某人有所帮助。

基本上,这个错误是因为与其他库不同,该id参数被视为数字向量。

确实,该gee功能正在转换id为双精度,我不太明白。以下是涉及的行(函数的 l. 119-120):

if (!(is.double(id))) 
  id <- as.double(id)

如果您的id列是一个字符,只需将其转换为一个因子,或使用某些函数(如dplyr::min_rank)将其转换为数字变量。

这应该可以解决问题。

于 2019-04-03T09:37:50.710 回答