从 lme 对象中提取固定效果表输出

机器算法验证 混合模式
2022-04-05 06:51:53

我正在尝试拟合一个类似于

fm2orth.lm<-lme(distance~age,data=OrthoFem, random=~1|Subject)

并且做了

summary(fm2Orth.lm)

我的输出有这些部分

  1. Aic/BIC
  2. 随机效应
  3. 固定效果表
  4. 相关性。

我的问题是我只对上面的第三个输出感兴趣并尝试过

fm2Orth.lm$coefficients 

并且有各个科目的系数,这不是我想要的,有人可以告诉我如何只获得带有 p 值的固定效应表。

2个回答

答案很简单:

summary(fm2Orth.lm)$tTable

会给你完整的表格(不仅仅是系数)。

一般来说,使用:

names(fm2Orth.lm)

names(summary(fm2Orth.lm))

查看这些列表中包含哪些对象。然后你可以探索这些对象,你会经常找到你需要的东西。

编辑:由于这是在评论中提出的,并且可能对某些人有用:从这些列表中的对象中提取随机效应的方差可能很棘手。有关提取这些内容的方法,请参见此处:https ://stackoverflow.com/questions/9043565/extracting-random-effects-from-nlme-summary/9043924#9043924

lme毫不奇怪,输出的类是lme. 你可以通过运行找到它class(fm2orth.lm)

因此,当您调用summary它时,真正调用的是summary.lme. 这个函数不是从 nlme 包中导出的(当你summary.lme在提示符下键入时你会发现这个:你会收到一条消息说找不到对象),但你仍然可以像这样找到它的源:getAnywhere("summary.lme").

您将看到摘要中的一些对象是建立起来的以及它们的名称(例如object$tTable <- ...)。您还将看到结果summary.lme是一个类对象summary.lme(同样,这并不奇怪)。

最后,您可以检查print.summary.lme, 因为printR 会自动调用它来显示最后一条语句的返回值,但就像 一样summary,它被分派到特定于类的版本。请注意,此功能不会从包中导出,因此您必须使用getAnywhere.

最后,在此函数的源代码中,您将看到一个调用,该调用cat("Fixed effects: ")显然标志着开始打印您感兴趣的信息。在那里您可以看到真正打印的 ( cat(deparse)) 基于摘要的成员call$fixed,但可能取决于原始模型的构建方式。

这应该为您提供足够的信息以了解如何获得它。

编辑:我刚刚注意到从返回的对象summary.lme实际上是原始拟合(所以lme它本身的返回值,添加了一些额外的列表项。因此,call使用的这个成员print.summary.lme已经是原始拟合的一部分(因为它不是由summary.lme) 添加的。结果:您可能并不真的需要摘要来获得固定效果。