回归系数的成对比较

机器算法验证 r 回归 回归系数 安乔娃
2022-03-15 11:29:45

我想知道如何快速对 R 中三个或更多组的回归系数进行成对比较。这是一个小例子:

library(car)
data(iris)
scatterplot(Sepal.Width~Sepal.Length | Species, regLine=TRUE, 
            smooth=FALSE, boxplots=FALSE, by.groups=TRUE, data=iris)

正如您在此处看到的,两组似乎具有大致相同的回归系数,而第三组则表现出两个变量之间明显不同的关系。我可以制作一个 Ancova,例如:

modComplete <- lm(Sepal.Width ~ -1 + Species + Species:Sepal.Length, data=iris)
modSimple <- lm(Sepal.Width ~ Sepal.Length, data=iris)
anova(modComplete, modSimple)

然而,这只告诉我至少有两组不同,而且我没有关于成对比较的信息。我想知道每对组之间是否存在显着不同的回归系数。我认为可以使用该功能完成,multcomp::glht但我不熟悉它,帮助页面让我有点困惑。

有没有快速的方法来做到这一点?

1个回答

使用emmeans包,特别是pairs(emtrends(m, ~grp, var="var"))...其中grp是分类(分组)变量,"var"是斜率变量。

library(emmeans)
m <- lm(Sepal.Width ~ Species*Sepal.Length, iris)
pairs(emtrends(m, ~Species, var="Sepal.Length"))
##  contrast               estimate     SE  df t.ratio p.value
##  setosa - versicolor      0.4788 0.1337 144 3.582   0.0013 
##  setosa - virginica       0.5666 0.1262 144 4.490   <.0001 
##  versicolor - virginica   0.0878 0.0971 144 0.905   0.6382 

## P value adjustment: tukey method for comparing a family of 3 estimates