我想画出交互作用项的标准差变化的边际效应。我试图绘制交互作用项的条件边际效应,模型的偏导数(斜率),但由于我的数据的性质和变化,单位变化可能有点误导。因此,我想把数字转换成标准差的变化,而不是单位的变化,这样我就可以得到实质的效果,以便更好地解释。我目前正在使用marginaleffects包来绘制它。这里有一个例子。
假设我有下面的模型,我想看看hp对mpg的边际效应在disp的值上(只是作为例子,我不确定这些变量的含义):
data(mtcars)
mod <- lm(mpg ~ hp * disp + factor(am), data = mtcars)
summary(mod)
Call:
lm(formula = mpg ~ hp * disp + factor(am), data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-3.3599 -1.7385 -0.2522 0.7915 5.2211
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.600e+01 3.678e+00 9.786 2.25e-10 ***
hp -9.196e-02 2.441e-02 -3.767 0.000816 ***
disp -5.418e-02 1.858e-02 -2.915 0.007062 **
factor(am)1 2.289e+00 1.455e+00 1.573 0.127297
hp:disp 2.269e-04 9.377e-05 2.419 0.022563 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.623 on 27 degrees of freedom
Multiple R-squared: 0.835, Adjusted R-squared: 0.8105
F-statistic: 34.15 on 4 and 27 DF, p-value: 3.355e-10
要查看条件边际效应,我使用marginaleffects包绘制图:
library(marginaleffects)
plot1 <- plot_slopes(mod, variables = "hp", condition = "disp") +
geom_hline(yintercept=0,linetype=2) +
geom_rug(aes(x=disp), data=mtcars, sides="b") +
theme_grey()
plot1
其结果为下图:
它显示了hp在disp上单位变化的边际效应(斜率)。而不是一个单位的变化,我想得到的边际效应的标准差变化的hp。我愿意使用其他软件包和替代方法来绘制边际效应。不知道边缘效果包的可塑性有多大。如果你需要进一步澄清,请告诉我。
2条答案
按热度按时间6tdlim6h1#
您可以使用
plot_comparisons()
函数轻松实现这一点,其中您可以使用variables
参数来指定预测值增加1 SD:当然,艾伦-卡梅隆的解决方案在这个简单的线性模型中是等价的。这种方法的好处是它允许一系列其他比较(例如:四分位数,2SD,自定义增量),而不必弄清楚适当的标准化是什么,也不必重新拟合模型。
4nkexdtk2#
显而易见的解决方案是将
scale
作为感兴趣的变量(在本例中为hp
),它等价于(hp - mean(hp))/sd(hp)
。这样,1个单位的变化 * 将 * 是1个标准差的变化。创建于2023-09-28带有reprex v2.0.2