1

線形モデルの数値予測子のみをどのように標準化しますか?

元の数値データを簡単にスケーリングできることを知っています。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

では、2番目の例の数値予測子のみをスケーリングするにはどうすればよいですか?

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 に答える