【问题标题】:Extract df from a summary object in R从 R 中的摘要对象中提取 df
【发布时间】:2020-09-06 04:21:27
【问题描述】:

我想知道在下面的 R 代码中,如何从 ems$emmeans 对象中提取 df 值?

library(lme4)
library(emmeans)
dat <- read.csv('https://raw.githubusercontent.com/hkil/m/master/z.csv')
dat$year <- as.factor(dat$year)

m1 <- lmer(y~year*group + (1|stid), data = dat)

ems <- emmeans(m1, pairwise ~ group*year, infer = c(T, T))

# How to extract 'df' values from ems$emmeans?

【问题讨论】:

  • 我仍然得到 Inf,我得到一个 Note 那个 D.f. calculations have been disabled because the number of observations exceeds 3000. To enable adjustments, add the argument 'pbkrtest.limit = 3435' (or larger)

标签: r dataframe statistics regression lm


【解决方案1】:

'emmGrid' 有 as.data.frame 方法

methods(class = 'emmGrid')
#[1] [             +             as.data.frame as.glht       as.list       CLD           coef          confint      
#[9] contrast      pairs         plot          predict       print         rbind         show          str          
#[17] summary       test          update        vcov   

因此,我们可以将“emmeans”的输出转换为data.frame,并使用$[[提取“df”

as.data.frame(ems$emmeans)$df

有一个Note 表明`D.f.计算被禁用,因为观察超过 3000,要启用,添加 'pbkrtest.limit = 3435'

ems <- emmeans(m1, pairwise ~ group*year, infer = c(T, T), pbkrtest.limit = 3435)
as.data.frame(ems$emmeans)$df
#[1] 3090.821 2994.815 3328.634 3164.587 3380.889 3371.980

【讨论】:

  • @rnorouzian 你可以创建一个函数f1 &lt;- function(model, data) if(nrow(data) &gt; 3000 emmeans(model, ...., pbkr.test.limit = 3435) else ... 或者也可以选择update emmGrid
  • @rnorouzian 不,我不知道
  • 好的,非常感谢,谢谢!
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多