这是关于结果沟通的问题。主要是我想知道两种连续变量的交互项的影响的替代方法。
我有以下结果
my_scale <- function(...) as.numeric(scale(...))
iris_scaled <- iris %>%
mutate_at(vars(-Species), my_scale)
ex <- 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()
在上面的图片中,我可以看到互动词与结果之间的联系,但在与持怀疑态度的听众交谈时 - 或者证明与自己的关系时 - 我想知道是否有其他方式可以表现出来交互术语确实存在。
例如,我可以设想某人质疑与以下的互动的情况iris_scaled %>%
mutate(interaction = Sepal.Width * Petal.Length) %>%
ggplot(aes(y = Sepal.Length, x = interaction)) +
geom_point() +
geom_smooth(method = lm, se = FALSE, color = "black") +
theme_classic()
您如何以容易消化的方式谈论互动?
我不想让它听起来像我认为具有交互的模型比没有交互的模型更好。
请参阅下面的统计数据。
我只是想讨论可视化交互的替代方法。也许iris
数据集是一个糟糕的选择,但它是第一个想到的,因为它有两个连续的变量。
> 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
> ex_noint <- lm(Sepal.Length ~ Sepal.Width + Petal.Length, data = iris_scaled)
> 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
> 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(>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
答案 0 :(得分:2)
一种方法是将一个连续变量量化为示例箱,以显示第一个变量的斜率如何在该范围内变化。
library(broom)
augment(
lm(Sepal.Length ~ (Sepal.Width + Petal.Length)^2, data = iris),
newdata =
expand.grid(Sepal.Width = range(iris$Sepal.Width),
Petal.Length = quantile(iris$Petal.Length))
) %>%
ggplot(aes(Sepal.Width, .fitted, color = Petal.Length)) +
geom_line(aes(group = Petal.Length)) +
geom_point(data = iris, aes(y = Sepal.Length)) +
scale_color_gradient(low = "blue", high = "green") +
theme_classic()
您必须非常小心地在随附的文本和标签中指出这些是条件模型预测。你还必须决定哪个是“主”变量,哪个是你正在调整的变量。看看如何扭转局面: