Nic*_*ght 2 plot visualization regression r
我对 R 比较陌生,我正在使用 visreg 包来绘制交互。我不知道如何获取输出图,它默认在 x2 的第 10、50 和 90 分位数处绘制 x1 与 y 的关系,并将颜色更改为灰度,将三条线更改为三条不同的线类型(点线、实线、双线等)
这是我的代码:
interaction <- lm(Y ~ X1 * X2, data=df)
visreg(interaction,"X1", by="X2",
overlay = TRUE, partial = FALSE, rug = FALSE)
Run Code Online (Sandbox Code Playgroud)
情节如下:
氮
您可以添加fill参数line来visreg更改颜色和线型。这些选项似乎没有在帮助中得到很好的记录,但小visreg插图有一个示例(向下滚动到“点、线和带的外观”)。这是使用内置mtcars数据框的示例。
library(visreg)
interaction <- lm(mpg ~ hp*wt , data=mtcars)
visreg(interaction,"hp", by="wt",
fill=list(col=grey(c(0.2,0.5,0.8), alpha=0.4)),
line=list(lty=1:3, col="black"),
overlay = TRUE, partial = FALSE, rug = FALSE)
Run Code Online (Sandbox Code Playgroud)
作为另一种选择,您可以获取返回的数据visreg并使用它根据您的规格创建 ggplot。
首先,我们创建一个 visreg 图并将其分配给一个名为 的对象p。plot=FALSE防止绘图。p包含由 隐形返回的信息列表visreg。该列表的一个元素(称为)fit包含我们绘图所需的拟合信息,因此我们将其与 一起使用ggplot。
与绘图相比,我更喜欢这个visreg,因为(1)这些线都可以绘制在置信带的顶部,这样它们就不会被置信带遮挡,并且(2)您可以向置信带使它们更容易区分。我也更喜欢 ggplot 图例。
我应该指出,您可以直接从数据和模型对象创建 ggplot 交互图,而不使用visreg,但visreg会返回我们需要的所有信息,而无需进行任何额外的编码。
library(ggplot2)
p = visreg(interaction,"hp", by="wt",
overlay = TRUE, partial = FALSE, rug = FALSE,
plot=FALSE)
ggplot(p$fit, aes(hp, visregFit, linetype=factor(wt), fill=factor(wt))) +
geom_ribbon(aes(ymin=visregLwr, ymax=visregUpr), alpha=0.5,
colour="grey50", linetype=1, size=0.2) +
geom_line() +
scale_fill_grey(start=0.5, end=0.8) +
labs(linetype="Weight", fill="Weight")
Run Code Online (Sandbox Code Playgroud)