title: Alternative ways to show impact of interaction term
body: <p>This is a question about communication of results. Mainly I would like to know of alternative ways to communicate the effect of an interaction term of two continuous variable. </p>
  
  <p>I have the following results</p>
  
  <pre><code>my_scale &lt;- function(...) as.numeric(scale(...))
  
  iris_scaled &lt;- iris %&gt;% 
    mutate_at(vars(-Species), my_scale)
  
  ex &lt;- lm(Sepal.Length ~ (Sepal.Width + Petal.Length)^2, data = iris_scaled)
  
  GGally::ggcoef(ex, conf.level = 0.90, exclude_intercept = TRUE) + 
    ggtitle("Interaction of sepal width and petal length associated with 
  smaller sepal length") +
    theme_classic()
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/GqiRx.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/GqiRx.png" alt="enter image description here"></a></p>
  
  <p>In the above image I can see an association between the interaction term and the outcome, but when speaking to a skeptical audience --- or to prove the relationship to myself --- I have wondered if there are alternative ways to show that an interaction term does exist.</p>
  
  <p>I could, for example, imagine a situation where someone questions the interaction with the following </p>
  
  <pre><code>iris_scaled %&gt;% 
    mutate(interaction = Sepal.Width * Petal.Length) %&gt;% 
    ggplot(aes(y = Sepal.Length, x = interaction)) +
    geom_point() +
    geom_smooth(method = lm, se = FALSE, color = "black") +
    theme_classic()
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/HksNf.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/HksNf.png" alt="enter image description here"></a></p>
  
  <p>How do you talk about interactions in a way that is easily digestible?</p>
  
  <h3>Edit -some extra stats</h3>
  
  <p>I don't want to make it sound like I think that the model with the interaction is better than the one without interaction. </p>
  
  <p>See stats below. </p>
  
  <p>I just wanted to discuss alternative ways to visualize interactions. Maybe the <code>iris</code> dataset was a bad choice, but it was the first that came to mind since it had two continuous variables. </p>
  
  <pre><code>&gt; broom::glance(ex)
    r.squared adj.r.squared     sigma statistic      p.value df    logLik     AIC      BIC deviance df.residual
   0.8436057     0.8403921 0.3995096  262.5125 1.343031e-58  4 -73.18601 156.372 171.4252 23.30276         146
  
  &gt; ex_noint &lt;- lm(Sepal.Length ~ Sepal.Width + Petal.Length, data = iris_scaled)
  &gt; broom::glance(ex_noint)
    r.squared adj.r.squared    sigma statistic      p.value df    logLik      AIC      BIC deviance df.residual
   0.8401778     0.8380034 0.402488  386.3862 2.933054e-59  3 -74.81209 157.6242 169.6667  23.8135         147
  
  &gt; anova(ex, ex_noint)
  Analysis of Variance Table
  
  Model 1: Sepal.Length ~ (Sepal.Width + Petal.Length)^2
  Model 2: Sepal.Length ~ Sepal.Width + Petal.Length
    Res.Df    RSS Df Sum of Sq   F  Pr(&gt;F)  
  1    146 23.303                           
  2    147 23.814 -1  -0.51075 3.2 0.07571 .
  ---
  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
  </code></pre>