我正在 R 中拟合一个线性模型,其交互项如下:模型<- 'lm(y ~ x * z)'. y and z are continuous variables and z is a categorical variable with 3 categories.
当我绘制模型输出时,我使用“marginaleffects”包中的“plot_prediction”函数,然后使用“ggplot2”中的“facet_wrap(~ z)”来分别可视化不同类别的每个回归,如下所示:“plot_prediction(模型,条件 = list("x", "y")) + facet_wrap(~ z)'
正如您所看到的,第一幅图和第二幅图根据第三幅图的数据点限制推断出其数据范围之外的回归线。
知道如何防止这种情况发生并将我的回归线(+- CI)限制在每个面板的数据点范围内吗?
问题似乎是,当您使用
condition
时,生成的预测值网格将包含完整 x
中 range(x)
的每个值,无论对于任何给定 x
是否存在
z
的值.
一个简单的方法是使用原始点作为
newdata
:
library(marginaleffects)
library(ggplot2)
# Dummy data
n <- 50
df <- tibble::tibble(
x = rnorm(n),
z = sample(-1:1, n, replace = TRUE),
y = z*(0.5*x) + rnorm(n,0,0.2))
df$z <- as.factor(df$z)
model <- lm(y ~ x * z, data = df)
# Original:
plot_predictions(model, points = 1, condition = c("x","z")) + facet_wrap(~ z)
# Suggested:
plot_predictions(model, points = 1, newdata = df, by = c("x","z")) + facet_wrap(~ z)