1

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

我知道我可以简单地缩放原始数值数据。但是,我想编写一个函数,该函数将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

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

4

1 回答 1

2

尝试更改 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)
于 2013-02-04T21:24:33.397 回答