【问题标题】:Standardize all numerical predictors in a regression formula标准化回归公式中的所有数值预测变量
【发布时间】:2013-01-19 05:46:46
【问题描述】:

如何仅标准化线性模型中的数值预测变量?

我知道我可以简单地缩放原始数值数据。但是,我想编写一个函数,将 lm 对象作为参数,并仅返回数值预测变量的标准化 beta 系数。

这是一个例子:

data(iris)
mod1 <- lm(Sepal.Length ~ Petal.Width, data = iris)
summary(mod1)
mod1.b <- update(mod1, scale(.) ~ scale(.))
summary(mod1.b)

这没有问题。但是当我包含一个因素时,它会给出一条错误消息。

mod2 <- lm(Sepal.Length ~ Petal.Width + Species, data = iris)
summary(mod2)
mod2.b <- update(mod2, scale(.) ~ scale(.)) #Gives an error

那么,如何才能仅缩放第二个示例中的数值预测变量?

【问题讨论】:

  • 嗨@johannes 这个问题似乎只是关于如何在 R 中做某事,所以它更适合 StackOverflow。
  • @PeterFlom 好像我错过了显而易见的 - 你当然是对的。版主中的某个人可以移动或关闭此问题吗?

标签: r regression


【解决方案1】:

尝试改变 lm 对象的设计矩阵。例如,我们可以这样做:

design.matrix <- mod2$model

numeric.columns <- design.matrix[,unlist(lapply(design.matrix,is.numeric))]
scaled.numeric.columns <- scale(numeric.columns)

现在我们将 data.frame 中的数字列替换为比例列:

design.matrix[,unlist(lapply(design.matrix,is.numeric))] <- scaled.numeric.columns 

最后,更新 lm 对象:

mod2.b <- update(mod2, data = design.matrix)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 2019-09-03
    • 1970-01-01
    • 2018-12-19
    • 2017-06-06
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多