crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

商業統計調査データの分析5 - R言語のstep関数で回帰モデルの最適な変数を選ぶ。

 

www.crosshyou.info

 の続きです。

まずは、str関数でデータを確認しましょう。

f:id:cross_hyou:20190410190932j:plain

まず、Yearが何年からあるか確認します。table関数を使います。

f:id:cross_hyou:20190410191331j:plain

1988年から始まって、3年ごとに2012年までの7つの年のデータがあります。

一つの年で、77のデータがあるということは、Sectorが77種類あるということですね。

今回は、Corp_TotalをYear, Staff, Revenue, Inventory, Spaceで回帰分析してみて、どの変数がCorp_Totalに一番影響を与えているのかみてみましょう。

線形回帰分析のlm関数でやってみます。

f:id:cross_hyou:20190410192308j:plain

どの係数も有意でよくわからないですね。

step関数で効果の低い変数を段階的に削除できるらしいです。やってみます。

f:id:cross_hyou:20190410192736j:plain

結局、すべての変数が入っているモデルが一番いいということなのですね。

step関数では、何も変数のないモデルからはじめて、一つずつ変数を追加するという方法もあります。これをやってみます。

まずは変数のないゼロモデルを作成します。

f:id:cross_hyou:20190410193200j:plain

切片は、86112とありますが、これはCorp_Totalの平均値です。

f:id:cross_hyou:20190410193336j:plain

さて、このmodel_zeroからstep関数で変数を追加していきます。

f:id:cross_hyou:20190410193735j:plain

前進ステップワイズ回帰でもやっぱり全部の変数が含まれますね。

今回は以上です。

 

今回のR言語のコードです。


# データの確認
str(df)

# Yearの確認
table(df$Year)

# Corp_TotalをYear, Staff, Revenue, Inventory, Spaceで回帰
model1 <- lm(Corp_Total ~ Year + Staff + Revenue + Inventory + Space, data = df)
summary(model1)

# step関数
reduced_model <- step(model1, direction = "backward")

# ゼロモデルの作成
model_zero <- lm(Corp_Total ~ 1, data = df)
summary(model_zero)

# Corp_Totalの平均値
mean(df$Corp_Total)

# step関数(前進ステップワイズ回帰)
model_zenshin <- step(model_zero, direction = "forward",
scope = (~ Year + Space + Inventory + Revenue + Staff),
trace = 0)
summary(model_zenshin)