の続きです。
今回はR言語のlm関数で、健康寿命を回帰分析してみます。
まず、na.omit関数でNAのないデータフレームを作成します。
yearとprefのlengthが47となっています。一つの調査年度だけということですね。
head関数ではじめの数行をみてみます。
2010年度ですね。
gdp: 県内総生産額やdoctor: 医師数などの変数をpop: 総人口で割って、人口当りの数字に変換します。mutate関数で可能です。
summary関数で平均値などを見てみます。gdpはそのまま人口で割りましたが、その他は1万人当りの数にしました。
gdp_pop: 1人当りの県内総生産額の平均値は354万5千円です。
doctor_pop: 1万人当りの医師数の平均値は23.47人です。
dental_pop: 1万人当りの歯科医師数の平均値は7.164人です。
pharm_pop: 1万人当りの薬剤師数の平均値は19.85人です。
nurese_pop: 1万人当りの看護師数の平均値は82.99人です。
これらの変数間の相関係数を確認しておきます。
一番相関の強い組み合わせはdoctot_popとnurse_popで、0.684です。
df3のデータフレームは、male: 男性の健康寿命、female: 女性の健康寿命と別々の変数になっていましたから、これをjumyouという名前の変数で一つに集めましょう。男性と女性を区別する変数名はgenderにしましょう。gather関数をつかってデータフレームを組み替えます。
区別する変数名はkey = で、集める変数名はvalue = で、そしてどの変数を集めるかを指定します。うまくできているか見てみます。str関数でみてみましょう。
genderのデータ型が文字列なので、ファクター型にfactor関数で変換しておきましょう。
回帰分析するときに便利なbroomパッケージを読み込んでおきます。
では、lm関数でjumyouを回帰分析してみます。
lm関数でlm_1という回帰分析モデルを作りました。summary関数でモデルの概要をみます。
p-valueが < 2.2e-16と0.05よりも小さいですので、有意なモデルです。
gdp_pop, dental_pop, gendermaleの係数のp値が0.05以下ですね。
gdp_popが1、つまり百万円上昇すると、健康寿命は0.29歳上昇するということです。
dental_popが1、つまり1万人当りの歯科医師数が1人増えると、健康寿命は0.2歳ぐらい低くなります。これは、歯科医師数 >>> 健康寿命という関係というよりは、健康寿命 >>> 歯科医師数という関係のような気がします。医師数や薬剤師数、看護師数も係数はみなマイナスですので、健康寿命が長いほど医療関係者は少なくて済む、ということだと思います。gendermaleが-3.3ということは、男性のほうが3.3歳女性よりも健康寿命が短いということですね。
broomパッケージを読み込みましたから、tidy関数でlm_1を表示してみましょう。
tidy関数をつかって回帰分析モデルを出力すると、このように係数の信頼区間も表示してくれます。
今回は以上です。
はじめから読むには、
です。