首页 > 解决方案 > emmeans (R) 仅拦截功能是否损坏?

问题描述

我注意到 emmeans (在 R 中)在最新更新后不适用于仅拦截估计。

可重现的例子:

test=lm(mpg~1,mtcars)
library(emmeans)
emmeans::emmeans(test,~1)

我的两台机器(Windows 和 Linux)上的输出是:

> emmeans::emmeans(test,~1)
Error in `[[<-.data.frame`(`*tmp*`, ".wgt.", value = 2) : 
  replacement has 1 row, data has 0

这是一个已知问题,还是我以某种方式搞砸了我的系统?我相信这曾经有效。

如果您包含一个变量,它确实有效:

test2=lm(mpg~as.factor(cyl),mtcars)
emmeans(test2,~cyl)

非常感谢您提前提供的帮助。

标签: remmeans

解决方案


事实证明,问题#197的修复- 并包含在 CRAN 版本 1.47 中 - 产生了我们在此处看到的问题(#206) 。我想我现在把它们都修好了:

require(emmeans)
## Loading required package: emmeans

#206...
warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks)

emmeans(warp.lm, "1")
##  1       emmean   SE df lower.CL upper.CL
##  overall   28.1 1.49 48     25.2     31.1
## 
## Results are averaged over the levels of: wool, tension 
## Confidence level used: 0.95

emmeans(warp.lm, "1", by = "wool")
## wool = A:
##  1       emmean   SE df lower.CL upper.CL
##  overall   31.0 2.11 48     26.8     35.3
## 
## wool = B:
##  1       emmean   SE df lower.CL upper.CL
##  overall   25.3 2.11 48     21.0     29.5
## 
## Results are averaged over the levels of: tension 
## Confidence level used: 0.95


#197...
model <- lm(Sepal.Length ~ poly(Petal.Length,2), data = iris)

emtrends(model, ~ 1, "Petal.Length", max.degree = 2)
## degree = linear:
##  1       Petal.Length.trend     SE  df lower.CL upper.CL
##  overall             0.4474 0.0180 147   0.4119    0.483
## 
## degree = quadratic:
##  1       Petal.Length.trend     SE  df lower.CL upper.CL
##  overall             0.0815 0.0132 147   0.0554    0.108
## 
## Confidence level used: 0.95

reprex 包(v0.3.0)于 2020 年 6 月 1 日创建

现在需要这个的用户可以通过 github 安装

remotes::install_github("rvlenth/emmeans")

推荐阅读