在R中,比较来自同一模型的两个回归系数

时间:2019-12-16 10:35:11

标签: r regression anova

使用R,我想对同一回归中的两个系数进行统计比较。在Stata软件中,存在测试B1 = B2。 R中的等价物是什么?我检查了几篇文章,但没有人回答这个问题。

https://stats.stackexchange.com/questions/33013/what-test-can-i-use-to-compare-slopes-from-two-or-more-regression-models

SPSS: Comparing regression coefficient from multiple models

Comparing regression models in R

这是一些模拟数据。

library('MASS')

mu <- c(0,0,0)

Sigma <- matrix(.5, nrow=3, ncol=3) + diag(3)*0.3

MyData <- mvrnorm(n=10000, mu=mu, Sigma=Sigma) %>% 
  as.data.frame()

names(MyData) = c('v1', 'v2', 'y')

MyModel = lm(y ~ v1 * v2, data = MyData)

summary(MyModel)

我想将V1的估算值与V2的估算值进行比较。因此,如果要操纵V1和V2,我想说些类似的信息“ V1对Y的影响明显高于V2对Y的影响”

1 个答案:

答案 0 :(得分:1)

您可以尝试multcomp,因此,如果您查看模型的系数:

coefficients(MyModel)
(Intercept)           v1           v2        v1:v2 
 0.006961219  0.373547048  0.394760005 -0.012167754 

您要查找第二项和第三项之间的差异,因此您的对比度矩阵为:

# yes it looks a bit weird at first
ctr = rbind("v1-v2"=c(0,1,-1,0))

我们可以使用glht来应用它:

summary(glht(MyModel,ctr))

     Simultaneous Tests for General Linear Hypotheses

Fit: lm(formula = y ~ v1 * v2, data = MyData)

Linear Hypotheses:
           Estimate Std. Error t value Pr(>|t|)
v1-v2 == 0 -0.02121    0.01640  -1.294    0.196
(Adjusted p values reported -- single-step method)

这适用于大多数常规线性模型。在摘要函数中,您可以根据效果/标准误获得每个术语的含义。 glht函数执行类似的操作。我可以想到的Logistic回归的一个例外是当您拥有complete separation