Solved – How to interpret slope parameter estimates for linear models in R

interpretationmixed modelparameterizationr

I wish to analyse a simple lab experiment. I have 8 fish. Four are fed on diet A, and four on diet B. I measure their Nitrogen (N) over 5 time periods (so 5 repeated measures per fish). I wish to know 3 pieces of information:

1) On diet A, does N change with time (i.e. a true slope different from zero)?

2) On diet B, does N change with time (i.e. a true slope different from zero)?

3) Do slopes of A and B differ from one another?

Thus I have run a simple mixed model in R, of the form:

Nitrogen ~ Time * Diet + (1|replicate)

Replicate is used as a random effect to control for repeated mesaures per individual fish.

I have compared this model to a simpler model without an interaction term, using analysis of deviance:

Nitrogen ~ Time + Diet + (1|replicate)

The model with the interaction explained signifcantly more variance and thus the better model.

Based on this interaction model, I have the following output table with the parameter estimates, and I wondered if I can use this table to answer my three questions? (I have calculated confidence intervals for these parameter estimates to determine if effects are real).

Fixed effects:                              
             Estimate  Std. Error   t value   +95% CI     -95% CI
(Intercept)  15.8624     0.2332    68.0300    16.3194     15.4053
time          0.0069     0.0009     7.7600     0.0086      0.0051
dietB        -0.1948     0.3298    -0.5900     0.4515     -0.8411
time:dietB   -0.0066     0.0013    -5.2800    -0.0042     -0.0091

I understand the "Intercept" is value of N when time = 0 for diet A (R software works alphabetically so dietA before dietB), while "dietB" + Intercept is intercept for dietB when time = 0.

However, to answer my 3 questions I need to better understand how to interpret the slope information and how to report it. My current understanding is:

"time" gives me a real slope value (0.0069) to report for diet A, and having calculated confidence intervals, I can see they do not cross zero in this instance meaning diet A is a true slope (i.e. different from a slope of zero). So this is Question 1 answered, I hope?

"time:dietB" tells me that slope of dietB is 0.0069("time") + -0.0066, which gives me a slope value to report for diet B (0.0069 + – 0.0066 = 0.0003). As I currently understand it, the Std. Error for "time:dietB" is associated with this comparative slope value (-0.0066), and not on slope B's real value (0.0003), and consequently, confidence intervals also refer to this comparative value (-0.0066), and thus as confidence intervals do not pass through zero, this means that slope B is different from slope A. So this means Question 3 is answered, I hope?

If this is the case, then how do I answer my Question 2 – that slope B is different from a slope of zero? Can I get confidence intervals to answer this question, and/or do I need them?! Or is this information already contained within this summary table? Or instead, do I need to conduct a subsequent / entirely different analysis?

Best Answer

I think it's always difficult to interpret the size of interaction effects, but it can be done in a different way to make it easier.

If you create two new variables where the first is 0 for diet B and equal to time for diet A, and the other variable is the oppoosite, you assess the effect of the slope for each diet more directly:

TimeA <- ifelse(Diet=="A", Time, 0)
TimeB <- ifelse(Diet=="B", Time, 0)

Nitrogen ~ Diet + TimeA + TimeB + (1|replicate)

You will now get separate estimates for the slope for time A and time B, with standard errors so that you can calculate confidence intervals to report. You will see that the estimates for Diet are the same, and the estimate for TimeA is the same as the estimate for Time in your model. The difference is that in this model, you will get one estimate for the slope of time for Diet B, and it will probably be non-significant in your model.

Note that this assumes that the baseline for Time is 0. If not, the results will be more difficult to interpret.

Related Question