www.crosshyou.info

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

都道府県別の経済構造実態調査のデータの分析6 - R言語のlm()関数で回帰分析をして、ggplot() + geom_point() + geom_abline()で散布図に回帰直線を重ねる

UnsplashClement Souchetが撮影した写真 

www.crosshyou.info

の続きです。

前回はANOVA分析をしてみました。今回は回帰分析をしてみようと思います。

pc_val: 一人当たりの売上高を被説明変数にして回帰分析をしてみます。

まず、p_male304050: 30代40代50代の男性の比率を説明変数にしてみましょう。

回帰分析をする前に、散布図を描いてみます。前回でtidyverseパッケージを読み込んでいますので、今回はplot()関数ではなくて、ggplot()関数とgeom_point()関数で散布図を描いてみます。

p_male304050の値が大きいほうがpc_valが大きいような感じです。

lm()関数で回帰分析をして、summary()関数で結果を表示します。

p_male304050の係数が6.23なので、p_male304050が0.01, つまり30代40代50代の男性の比率が1%上昇したら、pc_valが0.0623, 6230円一人当たりの売上高が増加します。

pc_valの平均値は約35万円なので結構大きい影響のように思います。

先ほどの散布図に、回帰分析で得られた回帰直線を重ねます。

p_male304050だけだと、pc_valを説明するのは難しいですね。R2は0.009372ですから、0.9%しかp_male304050はpc_valを説明していません。

industryを説明変数に加えてみます。

R2が0.8014になりました。industryも加えると、pc_valの値を80%ぐらい説明できます。

hospiとsellingの係数が統計的にかなり有意な値です。

hospiとsellingの回帰直線を重ねてみます。

sellingの回帰直線の傾きはもっと大きな傾きになっているほうがいい感じですよね。

新しい industry 区分として、selling, hospi, その他の3つの区分を作ります。

case_when()関数というのを利用して、hospiはhospi, sellingはselling, その他はotherとして、mutate()関数でsectorという名前で新しい変数を作り、as.factor()関数でファクター型に変換しています。

このsectorとp_male304050を説明変数にします。そして今回は相互作用項も加えます。

sectorがhospiのときの回帰直線は、

pc_val = 1.730 - 4.2478 * p_male304050 です。なんと、30代40代50代の比率が高いほうがpc_valは減少するのですね。

 

sectorがotherのときの回帰直線は、

pc_val = 1.730 -2.2286 + (-4.2478 + 7.449) * p_male304050 です。30代40代50代の比率が高いほうがpc_valは増加します。

 

sectorがsellingのときの回帰直線は、

pc_val = 1.730 - 8.8731 + (-4.2478 + 57.3695) * p_male304050 です。30代40代50代の比率が0.01, つまり1%上昇すると、pc_valは53万円も増えます。

 

散布図にこの3つの回帰直線を重ねてみます。

sellingの傾きが大きいことがよくわかります。

今回は以上です。

初めから読むには、

www.crosshyou.info

です。