正如我在问题中所述,我想从R包lme4中的glmer()Fit访问适用于GLMM的PIRLS模型中使用的Fisher权重.对于如此简单的任务,我感到惊讶的是,我在文档中或在互联网上根本找不到任何信息.通过查看Glmer Fit的 struct ,我发现了两个可能与我想要的东西相对应的量(但我不知道):

glmmfit@resp$sqrtWrkWt()glmmfit@pp$Xwts.它们似乎是同一件事(直到非常小的数字误差).这些是费舍尔权重,还是它们的平方根?或者这完全是另一回事?

附注:有没有人能证实glmmfit@resp$wrkResp()给出了工作响应z=G(y-u)+eta(有时称为伪数据),其中G是包含链接函数的导数的矩阵?出乎意料的是,当我做GLMM_model@resp$eta+GLMM_model@resp$wrkResids()-GLMM_model@resp$wrkResp()的时候,将偏移量4添加到模型中,我得到了一个由4组成的向量,而不是我所期望的0.

推荐答案

这是一个很难回答的问题,但让我们试一试.

有一份文件草案描述了glmer(Bates等人的未出版续集)的实施情况.JSS论文可以通过vignette("lmer", package = "lme4") in this directory(PDF here)获得,但是--尽管它作为背景读物很有用--它并没有与代码建立直接的联系.

  • 权重通过here被更新
double glmResp::updateWts() {
        d_sqrtrwt = (d_weights.array() / variance()).sqrt();
        d_sqrtXwt = muEta() * d_sqrtrwt.array();
        return updateWrss();
    }

即,d_sqrtrtwt是[在线性预测器或链接标尺上]工作权重的平方根(老实说,我不确定r意味着什么);d_sqrtXwt是那些转换回响应/数据标尺的权重(通过乘以dmu/deta,反向链接函数的导数).

here开始,sqrtWrkWt与在updateWts中计算的d_sqrtXwt值相同.

我们可以看到weights(., type = "working")返回object@pp$Xwts^2,我们甚至可以看到

可通过pp$xwts获得的工作重量应为 相当于:object@resp$weights*(object@resp$muEta()^2)/object@resp$variance()
然而,test/glmm Weights.R中的单元测试表明,这种等价性是近似的.这可能很好,但是,如果差异是由于引用类字段没有以最优方式更新的一般问题的另一个实例,那么这可能会导致真正的问题.例如,请参阅:https://github.com/lme4/lme4/issues/166

我们看到wrkResp被定义为(d_eta - d_offset).array() + wrkResids();,here被定义为wrkResids()(d_y - d_mu).array() / muEta();

希望你能拿到你需要的所有东西,without用这种方式戳你的内脏……例如,weights(., "working")应该给你权重;family(.)$mu.eta应该给你反链接函数的导数;residuals(., "working")应该给你工作残差.

从上面列出的代码中可以看出,您的"ps"不起作用的原因是,@resp插槽does not include the offset$eta组件……另一个原因是,最好尽可能使用访问器方法,而不是到处钻研……

R相关问答推荐

结合qwrap的平均值和标准差以及平均值和置信区间2

如何判断R中一列的值是否在所有其他列中重复?

Select R中列未排序的收件箱中的最后一个按顺序编号的列

我可以截断10字节的扩展数并转换为8字节的double吗?

混淆矩阵,其中每列和等于1

根据shiny 应用程序中的数字输入更改图标 colored颜色

如何在ggplot 2线性图的每个方面显示每个组的误差条?

使用gcuminc,如何使用逗号格式化风险表?

用相同方法得到不同函数的ROC最优截断值

如何优化向量的以下条件赋值?

使用列/行匹配将两个不同维度的矩阵相加

如何使用tryCatch执行语句并忽略警告?

R中边际效应包中Logistic回归的交互作用风险比

如何在科学记数法中显示因子

如何在R中平滑地绘制线图(不拟合)?

如何在R中通过多个变量创建交叉表?

如何使用前缀作为匹配来连接数据帧?

自定义交互作用图的标签

如何使用包metaviz更改标签的小数位数?

使用函数从R中的列中删除标高