使用分类预测变量进行标准化的系数回归:

时间:2018-07-11 14:40:30

标签: r regression linear-regression effect

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

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

使用线性预测变量时,这两种方法是等效的:

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。我的解释如下:每增加1个Sepal.Width标准差,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 (截距),杂色的效果分别为1.12和0.46。

我应该能够说“ versicolor setosa 之间的区别是Sepal.Length的SD ...”?非常感谢

1 个答案:

答案 0 :(得分:2)

您没有标准化与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 

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