【R】ベースのカテゴリを変更したい [データサイエンス、統計モデル]
統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
Rで回帰分析をする際に、カテゴリ変数の場合、自動でベースのカテゴリが決まりますが、変更することができますか?
【回答】
有名なirisデータを使って実験します。
str(iris)
summary(iris)
Speciesは、3カテゴリあります。
setosa: 1
versicolor: 2
virginica: 3
通常は、factorで最初の数字のものがベースになってしまいます。
model_1 <- lm(Sepal.Length ~ Species, data=iris)
summary(model_1)
(Intercept) 5.0060 0.0728 68.762 < 2e-16 ***
Speciesversicolor 0.9300 0.1030 9.033 8.77e-16 ***
Speciesvirginica 1.5820 0.1030 15.366 < 2e-16 ***
ここで、setosaではなく、versicolorをベースカテゴリにするにはどうすれば良いか?
relevel(factor(Species), ref = "versicolor")
で設定できます。
model_2 <- lm(Sepal.Length ~ relevel(factor(Species), ref = "versicolor"), data=iris)
summary(model_2)
(Intercept) 5.9360 0.0728 81.536 < 2e-16 ***
relevel(factor(Species), ref = "versicolor")setosa -0.9300 0.1030 -9.033 8.77e-16 ***
relevel(factor(Species), ref = "versicolor")virginica 0.6520 0.1030 6.333 2.77e-09 ***
このようにversicolorがベースとなり、setosaとvirginicaの係数を得ることができました。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
Rで回帰分析をする際に、カテゴリ変数の場合、自動でベースのカテゴリが決まりますが、変更することができますか?
【回答】
有名なirisデータを使って実験します。
str(iris)
summary(iris)
Speciesは、3カテゴリあります。
setosa: 1
versicolor: 2
virginica: 3
通常は、factorで最初の数字のものがベースになってしまいます。
model_1 <- lm(Sepal.Length ~ Species, data=iris)
summary(model_1)
(Intercept) 5.0060 0.0728 68.762 < 2e-16 ***
Speciesversicolor 0.9300 0.1030 9.033 8.77e-16 ***
Speciesvirginica 1.5820 0.1030 15.366 < 2e-16 ***
ここで、setosaではなく、versicolorをベースカテゴリにするにはどうすれば良いか?
relevel(factor(Species), ref = "versicolor")
で設定できます。
model_2 <- lm(Sepal.Length ~ relevel(factor(Species), ref = "versicolor"), data=iris)
summary(model_2)
(Intercept) 5.9360 0.0728 81.536 < 2e-16 ***
relevel(factor(Species), ref = "versicolor")setosa -0.9300 0.1030 -9.033 8.77e-16 ***
relevel(factor(Species), ref = "versicolor")virginica 0.6520 0.1030 6.333 2.77e-09 ***
このようにversicolorがベースとなり、setosaとvirginicaの係数を得ることができました。