2013-02-04 27 views
0

您如何標準化線性模型中的數值預測變量?在迴歸公式中標準化所有數值預測變量

我知道我可以簡單地縮放原始數值數據。但是,我想編寫一個函數,它以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 

那麼,我怎樣才能在第二個例子中僅縮放數值預測變量?

+0

嗨@johannes這個問題似乎只是關於如何在R中做些什麼,所以它更適合StackOverflow。 –

+0

@PeterFlom看起來像我錯過了明顯的 - 你當然是對的。主持人可以移動或關閉這個問題嗎? – 2013-02-04 11:58:04

回答

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) 
相關問題