如何修改interact_plot()绘图中的mod2变量标签?
问题场景
基于iris数据集构建包含三元交互项的线性回归模型,建模代码如下:
data(iris) View(iris) reg <- lm(Sepal.Length ~ Sepal.Width*Petal.Width*Petal.Length, data = iris)
加载interactions包调用interact_plot()绘制三元交互效应图时,传入mod2.labels参数试图将第二个调节变量Petal.Length的标签修改为“Petal Length”,但参数设置未生效,初始绘图代码如下:
library(interactions) interact_plot(reg, pred = Sepal.Width, modx = Petal.Width, mod2 = Petal.Length, data = iris, x.label = "Sepal Width", y.label = "Sepal Length", legend.main = c("Petal Width"), mod2.labels = c("Petal Length"))
故障原因
mod2.labels参数的作用是给第二个调节变量拆分出的分位水平命名,并非设置第二个调节变量本身的名称标签。- 对于连续型调节变量,
interact_plot()默认会按「均值-1个标准差、均值、均值+1个标准差」拆分为3个水平做分面/分组展示,mod2.labels需要传入和水平数等长的字符向量才能生效,仅传入1个字符串时长度不匹配,参数会被函数直接忽略。 - 第二个调节变量(mod2)本身的名称标签,需要通过
mod2.name参数设置。
修正后代码
library(interactions) interact_plot( reg, pred = Sepal.Width, modx = Petal.Width, mod2 = Petal.Length, data = iris, x.label = "Sepal Width", y.label = "Sepal Length", legend.main = "Petal Width", mod2.name = "Petal Length", # 该参数控制mod2变量的总标签 # 如需自定义mod2三个分位水平的显示文本,可传入长度为3的字符向量给mod2.labels mod2.labels = c("Low Petal Length", "Medium Petal Length", "High Petal Length") )
运行后即可看到Petal.Length对应的变量标签正常显示为“Petal Length”。
内容的提问来源于stack exchange,提问作者hy9fesh
相关产品推荐
相关产品推荐

