首页 > 解决方案 > 逻辑回归中连续变量的交互作用图

问题描述

我拟合了一个逻辑回归模型,其中包含连续预测变量之间的交互作用。

我在 Rplot_model()中使用包中的函数sjPlot来获取此交互图,但我无法弄清楚该函数如何将音量分类为 2 个因素。

require(ISLR)
require(sjPlot)

m1=glm(Direction ~ Lag1 + Lag4* Volume ,data=Smarket,family ="binomial" )

plot_model(m1,type = "int",colors =rainbow(3))

在此处输入图像描述

0.36 和 3.15 分别对应最小和最大音量。

谁能帮我解释一下这个情节?

还有其他方法可以绘制逻辑回归的交互图吗?

谢谢

标签: rplotlogistic-regressioninteractionsjplot

解决方案


交互作用在两个连续变量之间。该图Lag4用作 x 轴变量,然后选择几个 的值来显示 的不同值之间的Volume关系如何变化。默认情况下,选择最小值和最大值。您可以改为使用参数显示 的中位数和四分位数或平均值和标准差(有关其他选项,请参阅帮助)。例如:DirectionLag4VolumeVolumeVolumeVolumemdrt.values

theme_set(theme_classic()) # Set ggplot theme

plot_model(m1, type="int", colors=rainbow(3), mdrt.values="quart")
plot_model(m1, type="int", colors=rainbow(3), mdrt.values="meansd")

在此处输入图像描述

另一种选择是热图,它允许您在 x 和 y 轴上绘制交互变量,并使用颜色表示Direction等于“向上”的概率。例如:

# Create grid of Lag1 and Volume values for prediction
pred.dat = expand.grid(Lag1 = median(Smarket$Lag1),
                       Lag4 = seq(min(Smarket$Lag4), max(Smarket$Lag4), length=100),
                       Volume = seq(min(Smarket$Volume), max(Smarket$Volume), length=100))

# Add predictions
pred.dat$Direction = predict(m1, newdata=pred.dat, type="response")

# Plot heatmap
ggplot(pred.dat, aes(Lag4, Volume, fill=Direction)) + 
  geom_tile() +
  scale_fill_gradient2(low="red", mid="white", high="blue", 
                       midpoint=median(pred.dat$Direction)) +
  labs(title='Probability of Direction="Up"',
       fill="Probability")

上面的图代表下面热图中的常数线Volume。例如,当Volume是 1.12(上图左侧的红线)时,您可以在下面的热图中看到颜色从蓝色变为白色再到红色,这表示随着概率的Direction="Up"增加Lag4,正如我们在上图中看到的那样。

在此处输入图像描述


推荐阅读