【问题标题】:Standardized coefs in regression with a categorical predictor: there's something wrong带有分类预测器的回归中的标准化系数:有问题
【发布时间】:2018-12-19 15:55:11
【问题描述】:

据我了解,标准化系数可以用作效应大小的指标(可以使用 Cohen 1988 等经验法则)。我还了解到标准化的系数是expressed in terms of standard deviation,这使得它们相对接近于科恩的 d。

我还了解到,获得标准化系数的一种方法是预先对数据进行标准化。另一种是使用MuMIn 包中的std.coef 函数。

这两种方法在使用线性预测器时是等效的:

library(tidyverse)
library(MuMIn) # For stds coefs


df <- iris %>% 
  select(Sepal.Length, Sepal.Width) %>% 
  scale() %>% 
  as.data.frame() %>% 
  mutate(Species = iris$Species)


fit <- lm(Sepal.Length ~ Sepal.Width, data=df)
round(coef(fit), 2)
round(MuMIn::std.coef(fit, partial.sd = TRUE), 2)

在这两种情况下,系数都是-0.12。我将其解释如下:Sepal.Width 每增加 1 个标准差,Sepal.Length 就会减少其 SD 的 0.12

然而,这两种方法给出了不同的结果和分类预测器:

fit <- lm(Sepal.Length ~ Species, data=df)
round(coef(fit), 2)
round(MuMIn::std.coef(fit, partial.sd = TRUE), 2)

setosa(截距)相比,versicolor 的效果分别为 1.12 和 0.46。

我应该相信哪个能够说“versicolorsetosa 之间的区别是 ... Sepal.Length 的 SD”?非常感谢

【问题讨论】:

    标签: r regression linear-regression effect


    【解决方案1】:

    您没有标准化与 Species 关联的隐式变量,因此这些系数不会被标准化。

    你可以这样做:

    dummies <- scale(contrasts(df$Species)[df$Species,])
    fit <- lm(Sepal.Length ~ dummies, data = df)
    round(coef(fit), 2)
    #      (Intercept) dummiesversicolor  dummiesvirginica 
    #             0.00              0.53              0.90 
    

    如果您将partial.sd 参数设置为FALSE,这与MuMIn::std.coef 的结果一致。

    【讨论】:

    • 确实有效!谢谢!所以基本上,正确的解释是the difference between versicolor and setosa is 0.53 of Sepal.Length's SD?那么非标准化的系数指的是什么?很抱歉这个后续问题,但我从未见过 contrasts 的用法,也不太明白它是如何工作的
    • 我不认为标准化虚拟变量真的具有统计意义。在标准化之前,系数是物种间均值的差异;标准化后,相同,但单位很奇怪。 “Sepal.Length 的 SD”并不是一个真正有意义的概念。
    • 我明白了。但是,如果我想使用效果大小解释经验法则(例如 Cohen 的 d),我应该使用标准化结果还是“仅因变量标准化”结果?非常感谢您的帮助。
    • 我不熟悉这些规则。我建议考虑一下为什么要使用它们,然后根据这些原因决定哪种方法更有意义。如果您需要有关详细信息的帮助,可以在 stats.stackexchange.com 网站上询问。
    猜你喜欢
    • 2017-06-06
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多