在回归公式中标准化所有数值预测变量

时间:2013-02-04 07:46:52

标签: r regression

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

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

以下是一个例子:

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

那么,我怎样才能在第二个例子中仅缩放数值预测变量?

1 个答案:

答案 0 :(得分:2)

尝试更改lm对象的设计矩阵。例如,我们可以执行以下操作:

design.matrix <- mod2$model

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

现在我们用scalesframe替换data.frame中的数字列:

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

最后,更新lm对象:

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