r - 指定该模型进行 logit 转换以绘制反向转换趋势
问题描述
我在 R 中安装了一个带有 logit 转换响应的 lme 模型。我无法找到执行 logit 转换的直接命令,所以我手动完成了。
logitr<-log(r/1-r)
然后,我将其用作我的 lme 模型中的响应,其中两个因素和一个数值变量之间存在相互作用。
model<-lme(logitr<-factor1*factor2*numeric,random=1|random)
现在,R 显然不知道这个模型是 logit 变换的。如何将其指定给 R?
我没有运气尝试过:
update(model, tran="logit")
我之所以要指定模型是 logit 变换的原因是因为我想使用 emmeans 包中的函数 emmip 绘制反向变换的结果,显示我的变量之间交互的趋势。
通常(如果我只有因素)我会使用:
update_refgrid_model<-update(ref_grid(model, tran="logit"))
但是当我想使用 emmip 来绘制数值变量和因子之间交互的趋势时,这种方法不起作用。如果我指定:
emmip(update_refgrid_model, factor1~numeric|factor2, cov.reduce = range, type = "response")
然后我没有绘制任何趋势,只有数值变量的平均水平的估计值。
那么,如何指定 logit 变换并绘制 lme 模型的反变换趋势,其中因子与数值变量相互作用?
解决方案
您不更新模型对象,而是更新参考网格:
rg = update(ref_grid(model, cov.reduce = range), tran = "logit")
emmip(rg, factor1~numeric|factor2, type = "response")
可以用其他东西更新模型,而不是转换;那是在对象的update
方法中emmGrid
。
更新
这是一个显示其工作原理的示例
require(emmeans)
## Loading required package: emmeans
foo = transform(fiber, p = (strength - 25)/25)
foo.lm = lm(log(p/(1-p)) ~ machine*diameter, data = foo)
emm = emmeans(foo.lm, ~diameter|machine,
tran = "logit", at = list(diameter = 15:32))
## Warning in ref_grid(object, ...): There are unevaluated constants in the response formula
## Auto-detection of the response transformation may be incorrect
emmip(emm, machine ~ diameter)
emmip(emm, machine ~ diameter, type = "r")
由reprex 包于 2020-06-02 创建(v0.3.0)
推荐阅读
- css - MaterialUI withStyles,尝试深入到禁用的开关 css 覆盖
- javascript - 在 cucumber-js 中的钩子之前无法返回
- regex - REGEX 表达式:获取点或斜线后的 ID + 验证其他单词
- python - BLE是否适合发送图像
- c# - 使用蓝牙和 ESC/POS 在热敏打印机上打印文本
- regex - 如何使用正则表达式提取参数名称和值
- machine-learning - 服务器代码主动拒绝连接 Udacity 的自动驾驶汽车模拟器(端口 4567)
- sql - INSERT 语句与 FOREIGN KEY 约束冲突 - SQL Server 2016
- python - 使用 Python 多处理运行 .exe 文件时出错
- git - 构建文件的预合并挂钩