标签: emmeans

从 R 中的线性模型列表中映射 emmeans

我有超过 100 个线性模型的列表,我想获取每个模型的估计平均值和标准误差。

让我们举mtcars个例子。

library(tidyverse); library(magrittr); library(emmeans)

mtcars %<>% 
  mutate(
    cyl = as.factor(cyl)
  )

df <- mtcars %>% select(cyl, hp, mpg)
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式轻松获得每个模型的估计均值和标准误差emmeans

mod <- lm(hp ~ cyl, data = df)
emmeans(mod, "cyl")
Run Code Online (Sandbox Code Playgroud)

但是如果我有一个模型列表怎么办?

list_lm <- df %>% 
   select(-c(cyl)) %>%
   map(function(dv) lm(dv ~ df$cyl, data = .)) 
Run Code Online (Sandbox Code Playgroud)

我不能使用:

emmeans(list_lm$hp, "cyl")
Error in ref_grid(object, ...) : Perhaps a 'data' or 'params' argument is needed
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想要一些能够为我提供所有模型的统计数据的东西。类似于broom::tidy模型的系数,但对于emmeans

list_lm %>% 
   map(broom::tidy)
Run Code Online (Sandbox Code Playgroud)

dictionary r linear-regression tidyverse emmeans

3
推荐指数
1
解决办法
788
查看次数

在 emmeans 中使用 'adjust = "tukey"' 是否相当于 Tukey HSD 测试?

我环顾四周,对emmeans中的 Tukey 调整感到很困惑。emmeans 的文档根本没有提到 Tukey HSD,但在这里据说“对于大多数对比度()结果,调整通常是其他东西,具体取决于创建的对比度类型。例如,成对比较默认为adjustment = "tukey",即Tukey HSD方法。 "。

据我了解,Tukey HSD本质上是一系列对 I 类错误进行调整的成对 t 检验。但emmeans函数正在计算估计边际均值 (EMM),我认为这不是成对 t 检验;然后将 Tukey 调整应用于emmeans输出,将不等同于 Tukey HSD 事后测试。

第二个相关问题是函数“tukey.emmc”(也来自emmeans )的作用是什么?

[更新]我想我的第二个问题是,tukey.emmc 和对比度()与'调整=“tukey”'之间有什么区别?

r tukey emmeans

3
推荐指数
1
解决办法
5692
查看次数

重新定义 R 的 nnet::multinom Predict.multinom 预测方法以支持 type="link"

我希望nnet::multinom新包支持 R 的函数marginaleffects,但marginaleffects::predictions()依赖predict()建模包提供的方法来计算响应和链接尺度的预测值。nnet::multinom然而,在 的情况下,predict()提供的方法nnet不支持链接规模的预测 - 它仅支持type="probs"type="class"https://github.com/vincentarelbundock/marginaleffects/issues/404。所以我想重新定义该nnet::multinom predict.multinom方法,以便它也支持type="link"(在该包的原始命名空间中,以便该marginaleffects包也将其视为已被重新定义)。有什么办法可以做到这一点吗?

作为参考,该predict.multinom方法(https://github.com/cran/nnet/blob/master/R/multinom.R)现在看起来像

predict.multinom <- function(object, newdata, type=c("class","probs"), ...)
{
    if(!inherits(object, "multinom")) stop("not a \"multinom\" fit")
    type <- match.arg(type)
    if(missing(newdata)) Y <- fitted(object)
    else {
        newdata <- as.data.frame(newdata)
        rn <- row.names(newdata)
        Terms <- delete.response(object$terms)
        m <- model.frame(Terms, newdata, na.action = na.omit,
                         xlev = object$xlevels)
        if …
Run Code Online (Sandbox Code Playgroud)

r nnet multinomial emmeans marginal-effects

3
推荐指数
1
解决办法
569
查看次数

Emmeans 连续自变量

我想explanType_fType_space 实验和速度的Exhaustion_product定量变量 Age

这是我的数据:

res=structure(list(Type_space = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, …
Run Code Online (Sandbox Code Playgroud)

plot r glm emmeans

2
推荐指数
1
解决办法
2806
查看次数

自定义 emmeans 图

我正在使用emmeans并想学习如何自定义绘图。

对于可重现的示例,我正在使用warpbreaks数据。

library(emmeans)
lm <- lm(breaks ~ wool * tension, data = warpbreaks)
emm <- emmeans(lm, ~ wool | tension)
plot <- plot(emm, horizontal=FALSE, comparisons=TRUE) + theme_bw()
plot
Run Code Online (Sandbox Code Playgroud)

我想按组自定义置信区间颜色,而不是默认的紫色,以便所有六个组(LA、LB、MA、MB、HA、HB)都有不同颜色的置信区间。我还想自定义估计平均值的形状,而不是将它们全部设置为黑点。

这是我尝试过的,但没有成功。

plot + 
scale_color_manual(values=c("#F8766D", "#B79F00", "#00BA38", "#00BFC4", "#619CFF", "#F564E3")) + 
scale_shape_manual(values=c(1,2,3,4,5,6))
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

r emmeans

2
推荐指数
1
解决办法
3245
查看次数

如何将 emmeans对比() 的结果导出到数据框?

运行测试 ( model1.emm=emmeans(model1,~timeBin) contrast(model1.emm, "trt.vs.ctrl", ref = 1, adjust='fdr')) 后,我在控制台中看到以下内容: 在此输入图像描述

是否可以将此输出导出到数据框?

我学会了如何导出其余结果: result = as.data.frame(summary(model1.emm))

在此输入图像描述

export r dataframe emmeans

2
推荐指数
1
解决办法
3214
查看次数

使用连续预测变量的多个值计算 emmeans

这个问题涉及Emmeans 连续自变量

diameter我想用一行代码计算 的至少三个值(即最小值、平均值和最大值)的 EMM 。指定仅cov.reduce = range使用 min 和 max 给出估计值,删除则使用 Mean 给出估计值。diametercov.reduce = rangediameter

mod = glm(log(strength) ~ machine + diameter, data = fiber)
emmeans(mod, ~machine*diameter, cov.reduce = range)
machine diameter emmean     SE  df asymp.LCL asymp.UCL
 A             15   3.48 0.0315 Inf      3.42      3.54
 B             15   3.50 0.0333 Inf      3.44      3.57
 C             15   3.43 0.0232 Inf      3.39      3.48
 A             32   3.88 0.0243 Inf      3.83      3.93
 B             32   3.90 0.0228 Inf      3.86      3.95 …
Run Code Online (Sandbox Code Playgroud)

r emmeans

2
推荐指数
1
解决办法
1356
查看次数

如何在“emmeans”中设置置信区间

我一直在使用 emmeans 包为我的数据创建一个估计的边际均值,置信度为 0.95%。虽然我似乎无法将其更改为 0.99% 的置信度。任何帮助将非常感激。通常我会使用“levels=”函数,但它似乎不存在于emmeans。

library(emmeans)

emmeans(AcidLevels1, specs=~MAScore,)
Run Code Online (Sandbox Code Playgroud)

最好的,-内森

r confidence-interval emmeans

1
推荐指数
1
解决办法
1905
查看次数

与零膨胀 glmmTMB 对比

我正在运行一个零膨胀glmmTMB模型。我有兴趣在条件成分和零通胀成分的不同因子水平之间进行成对比较。有条件的部分,我可以用通常的emmeans方法轻松完成。我一直在尝试使用(相对)新创建的glmmTMB:::emm_basis.glmmTMB,但无法弄清楚该函数采用的一些参数,也找不到示例......

这是我目前所处位置的一个玩具示例。我专门poly()向模型添加了一个组件 - 我的完整模型同时具有poly()ns(),因此需要弄清楚它们在这里是如何工作的。

所以问题如下:1)我trms提供的论点是否正确?2)函数需要什么参数xlevgrid参数emm_basis.glmmTMB

library(glmmTMB)

data(Salamanders)
mod <- glmmTMB(count ~ spp + mined + poly(cover, 2) + (1|site), zi=~spp + mined, Salamanders, 
   family=nbinom2)

tt <- y ~ spp + mined + poly(cover, 2)
tt <- delete.response(terms(tt))

glmmTMB:::emm_basis.glmmTMB(mod,  trms = tt)
Run Code Online (Sandbox Code Playgroud)

非常感谢您的任何想法!

emmeans glmmtmb

1
推荐指数
1
解决办法
1539
查看次数

如何在 R 中设置正交对比?

我有一个由多种类型和两种处理方法组成的数据集(示例如下)。我使用 R 中的 lm() 函数来分析它,并使用 emmeans 进行事后测试。

m <- lm(Y ~ Type*Treatment)
Anova(m, type = 3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何在 R 中设置正交对比?如果我跑

emmeans(m, ~Type*Treatment)
Run Code Online (Sandbox Code Playgroud)

它比较一切。我有兴趣比较类型中的不同治疗和治疗中的不同类型,但不是不同的治疗和不同类型。换句话说,我想比较已处理的 A 与未处理的 A,或已处理的 A 与已处理的 B,但不是已处理的 A 与未处理的 B。

如果这个问题包含在另一个问题中,我很抱歉。我搜索了论坛,但没有找到任何可以应用于这种情况的内容。谢谢。

r orthogonal contrast emmeans

0
推荐指数
1
解决办法
449
查看次数