在分别查看男性和女性的调节效应时,我应该重新集中变量吗?

机器算法验证 回归 相互作用 群体差异 定心
2022-04-08 19:35:00

我想看看多元回归中的交互变量是否对整个样本有意义,然后仅对男性和女性都有意义。当我为整个样本创建交互变量时,我通过减去整个样本的平均值来使交互分量居中。

现在,当我想分别查看男性和女性时,我是否应该重新计算男性和女性特定的中心变量和交互变量,将它们与交互组件各自的男性和女性样本均值居中?

1个回答

居中:居中不会改变您的交互效果的 r 平方变化的重要性。它也不会改变您为简单斜率分析获得的值。

因此,对于大多数目的来说,你是否居中并不重要。这既适用于一般分析,也适用于子组分析。

居中的主要好处是它可以使回归系数的解释更容易一些。如果你想比较这些系数在男性和女性之间的绝对大小,那么你应该只居中一次。

首选集成模型: 更好的建议是将性别包含在整体多元回归中。例如,如果您有DVIV1IV2并且genderIV1 * IV2对每个 的交互感兴趣gender我会检查各种模型,例如:

DV ~ IV1 + IV2 + gender
DV ~ IV1 * IV2 + gender
DV ~ IV1 * IV2 + gender * IV1 + gender*IV2
DV ~ IV1 * IV2 * gender

如果您通过某些交互获得了重要的性别,那么您可能希望使用单独的分析进一步探索这一点,但我将从整体集成模型开始。

说明关于居中预测器的要点

以下代码返回交互效应模型的未居中和三个居中版本(全局、女性居中、男性居中)的 r 平方变化的 p 值和最终 r 平方。

library(MASS)
survey <- na.omit(survey)
head(survey)

x <- survey[, c('Sex', 'Wr.Hnd', 'NW.Hnd', 'Pulse')]
names(x) <- c('gender', 'iv1', 'iv2', 'dv')
x$scaled_iv1 <- scale(x$iv1, scale=FALSE)
x$scaled_iv2 <- scale(x$iv2, scale=FALSE)
x$female_scaled_iv1 <- scale(x$iv1, center=mean(x[x$gender == "Female", 'iv1']), scale=FALSE)
    x$female_scaled_iv2 <- scale(x$iv2, center=mean(x[x$gender == "Female", 'iv2']), scale=FALSE)
x$male_scaled_iv1 <- scale(x$iv1, center=mean(x[x$gender == "Male", 'iv1']), scale=FALSE)
    x$male_scaled_iv2 <- scale(x$iv2, center=mean(x[x$gender == "Male", 'iv2']), scale=FALSE)

compare_fits <- function(x) {
    fit1 <- lm(dv ~ iv1+iv2, x)
    fit2 <- lm(dv ~ iv1*iv2, x)
    fit3 <- lm(dv ~ scaled_iv1*scaled_iv2, x)
    fit4 <- lm(dv ~ male_scaled_iv1*male_scaled_iv2, x)
    fit5 <- lm(dv ~ female_scaled_iv1*female_scaled_iv2, x)
    results <- list()
    results$p_normal <-  anova(fit1, fit2)[2,6]
        results$p_centered <- anova(fit1, fit3)[2,6]
    results$p_centered_male <- anova(fit1, fit4)[2,6]
        results$p_centered_female <- anova(fit1, fit5)[2,6]
    results$rsq_normal <- summary(fit2)$r.squared
    results$rsq_centered <- summary(fit3)$r.squared
    results$rsq_centered_male <- summary(fit4)$r.squared
    results$rsq_centered_female <- summary(fit5)$r.squared
    unlist(results)
}

# The following results report p-values and rsq for final model
# using normal (i.e., uncentered) and centered predictors
compare_fits(x)
compare_fits(x[x$gender=='Male', ])
    compare_fits(x[x$gender=='Female', ])

结果显示值在未居中和居中分析之间如何变化。

> compare_fits(x)
           p_normal          p_centered     p_centered_male   p_centered_female          rsq_normal 
        0.241816265         0.241816265         0.241816265         0.241816265         0.009982317 
       rsq_centered   rsq_centered_male rsq_centered_female 
        0.009982317         0.009982317         0.009982317 
> compare_fits(x[x$gender=='Male', ])
               p_normal          p_centered     p_centered_male   p_centered_female          rsq_normal 
             0.14034102          0.14034102          0.14034102          0.14034102          0.03055692 
           rsq_centered   rsq_centered_male rsq_centered_female 
             0.03055692          0.03055692          0.03055692 
    > compare_fits(x[x$gender=='Female', ])
           p_normal          p_centered     p_centered_male   p_centered_female          rsq_normal 
          0.5196788           0.5196788           0.5196788           0.5196788           0.0128802 
       rsq_centered   rsq_centered_male rsq_centered_female 
          0.0128802           0.0128802           0.0128802