静粛に、只今統計勉強中

仕事でデータ分析をすることになったバリバリ文系アラフィフのおっさんが、独学で統計の勉強を始めました。

回帰分析における対数変換の意味を実感してみよう2

前回、 

日本統計学会公式認定 統計検定 2級 公式問題集[2012~2014年]

日本統計学会公式認定 統計検定 2級 公式問題集[2012~2014年]

に掲載されている統計検定準1級の<例題>の問11から、回帰分析において決定係数が高くても回帰モデルが有効でない場合があることを知りました。

じゃあ、どうすればいいの?

と、当然なりますが、対処法としては、

  • 別のモデルを考える
  • 変数を変換してみる
  • 外れ値を削除してみる

といったことが考えられるそうです。

 

では、まずは一番お手軽な外れ値の除外から試してみましょうか。
前回の診断で、東京と愛知を外れ値認定しましたので、この2行を削除してみます。

f:id:cyclo-commuter:20190829130325p:plain

決定係数が0.015上がりましたね。Rでの分析結果は、

Call:
lm(formula = スクリーン数 ~ 従業者数, data = Dataset)

Residuals:
    Min      1Q  Median      3Q     Max 
-35.751  -6.834  -2.846   7.780  44.523 

Coefficients:
             Estimate Std. Error t value  Pr(>|t|)    
(Intercept) 13.924869   2.809230   4.957 0.0000129 ***
従業者数     0.116010   0.004783  24.253   < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 13.38 on 41 degrees of freedom
Multiple R-squared:  0.9348,	Adjusted R-squared:  0.9333 
F-statistic: 588.2 on 1 and 41 DF,  p-value: < 2.2e-16

前回と同様に悪くないですが、Rで回帰診断図を出力してみると、

f:id:cyclo-commuter:20190829130955j:plain

ありゃりゃ、今度は神奈川が外れ値になっちゃいました。
どうやら、安易な外れ値の除外はいい手とは言えないようです。

 

次はモデルの変更です。これは、以前の記事

で取り上げたように、Excelでお手軽に試すことができます。

 

f:id:cyclo-commuter:20190829131742p:plain

で、一番決定係数が高かったのがコレ。二項近似です。
そこで、説明変数に従業者数の二乗を加えてRで重回帰分析してみます。

Call:
lm(formula = スクリーン数 ~ 従業者数 + 従事者数.2, data = Dataset2)

Residuals:
    Min      1Q  Median      3Q     Max 
-37.953  -5.460  -0.694   4.508  61.041 

Coefficients:
                Estimate   Std. Error t value    Pr(>|t|)    
(Intercept)  5.038300783  3.728263667   1.351       0.184    
従業者数     0.157687041  0.009583378  16.454     < 2e-16 ***
従事者数.2  -0.000018553  0.000003209  -5.781 0.000000819 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 15.41 on 42 degrees of freedom
Multiple R-squared:  0.9553,	Adjusted R-squared:  0.9532 
F-statistic: 449.1 on 2 and 42 DF,  p-value: < 2.2e-16

これまたいい感じ。ところが、回帰診断図を出力してみると、

f:id:cyclo-commuter:20190829132557j:plain

これもダメですねえ。

 

次に決定係数が高かったのが、これ。

f:id:cyclo-commuter:20190829132756p:plain

累乗近似です。

しかし、Excelが言うところの累乗近似は、実はyとxを対数変換しての線形回帰のことなんだそうです。

ソースはこちら。

衝撃の事実です。

 

ともあれ、Rで変数変換して、線形回帰モデルを適用してみましょう。

[データ]→[アクティブデータセット内の変数の管理]→[新しい変数を計算]をクリック。

f:id:cyclo-commuter:20190829140234p:plain

新しい変数名と計算式を以下のように入力して、【OK】をクリック。

f:id:cyclo-commuter:20190829140803p:plain

従業者数も同様に対数変換します。

f:id:cyclo-commuter:20190829141024p:plain

log.スクリーン数を目的変数に、log.従業者数を説明変数にして計算すると、

Call:
lm(formula = log.スクリーン数 ~ log.従業者数, data = Dataset)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.54737 -0.10830  0.00856  0.11221  0.35957 

Coefficients:
             Estimate Std. Error t value   Pr(>|t|)    
(Intercept)  -0.90549    0.17657  -5.128 0.00000664 ***
log.従業者数  0.84366    0.03062  27.552    < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1998 on 43 degrees of freedom
Multiple R-squared:  0.9464,	Adjusted R-squared:  0.9451 
F-statistic: 759.1 on 1 and 43 DF,  p-value: < 2.2e-16

問題はこの後です。回帰診断図はどうでしょうか。

f:id:cyclo-commuter:20190829144156j:plain

おお! よいではないですか!!

高知が外れ値っぽいですけど、Residuals vs Leverage でクックの距離0.5以下に収まっていますし、許容範囲といっていいんじゃないでしょうか。