2
$\begingroup$

I have an effect size that is a difference between two regression coefficients $\Delta\beta=\beta_a-\beta_b$. The response and predictor units are the same in each model, and the question relates directly to the difference in slopes of the two regression models.

I am however a bit lost how to calculate a confidence interval for this difference?

Here's a not perfect but functional example in R:

library(tidyverse)
data(mtcars)

dat <- mtcars |> 
    mutate(group = rep(c("a", "b"), times = nrow(mtcars)/2)) |>
    group_by(group) |>
    mutate(y = hp/mean(hp), x = disp/mean(disp)) |>
    ungroup()

mod_a <- lm(data = filter(dat, group == "a"), y~x)
mod_b <- lm(data = filter(dat, group == "b"), y~x)

summary(mod_a)
summary(mod_b)

mod_a$coefficients[2]-mod_b$coefficients[2]

What would be an appropriate method for calculating a confidence interval for this difference? I know of ways to test if they are difference (compare global model with interaction term vs global model without interaction term using LRT for example), but when it comes to a figure, I would like to show more than a p-value.

Thanks in advance!

$\endgroup$

1 Answer 1

0
$\begingroup$

By modeling the complete dataset with an interaction between group and x, you directly get the estimated difference in slopes and a corresponding confidence interval.

library(tidyverse)
data(mtcars)

dat <- mtcars |>
  mutate(group = rep(c("a", "b"), times = nrow(mtcars)/2)) |>
  group_by(group) |>
  mutate(y = hp/mean(hp), x = disp/mean(disp)) |>
  ungroup()

mod <- lm(y~x*group, data = dat)
summary(mod)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.2899     0.1653   1.754   0.0903 .  
x             0.7100     0.1485   4.782 5.03e-05 ***
groupb        0.0833     0.2248   0.371   0.7137    
x:groupb     -0.0833     0.1999  -0.417   0.6802 

confint(mod)

                  2.5 %    97.5 %
(Intercept) -0.04859366 0.6284942
x            0.40590034 1.0141992
groupb      -0.37709339 0.5436837
x:groupb    -0.49286492 0.3262746

The coefficient of the interaction term is the estimated difference in slopes between groups a and b. The difference is estimated to be $-0.083$ with a 95% confidence interval $(-0.493;\,0.326)$ and a $p$-value of $0.6802$. The slope for group a is thus $0.710$ and the slope for group b is smaller by $-0.0833$, so it is $0.627$.

You could further modify the model so that the groups have a common intercept: mod <- lm(y~x + x:group, data = dat).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.