www.crosshyou.info

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

小売物価統計調査の全国統一品目のデータ分析5 - R言語のggplot2パッケージのgeom_point関数で散布図を描く。

 

www.crosshyou.info

 の続きです。

今回は、R言語のggplot2パッケージのgeom_point関数で散布図を描きます。

geom_point関数で散布図

散布図

7月の価格と6月の価格なので、ほぼ一直線上に並んでいます。軸のスケールを対数にします。scale_x_log10()とscale_y_log10を使います。

scale_x_log10

散布図

こちらのほうがわかりやすいですね。

Month_chgとYear_chgの散布図を描いてみましょう。

geom_point関数で散布図

geom_point関数で散布図

これも軸を対数変換しましょう。

geom_point関数で散布図

geom_point関数で散布図

あまりかわらない感じですが、特に傾向は無いようですね。

今回は以上です。

 

小売物価統計調査の全国統一品目のデータ分析4 - R言語のggplot2パッケージのgeom_histogram関数でヒストグラムを描く。

 

www.crosshyou.info

 の続きです。

今回は各変数のヒストグラムを見てみようと思います。ggplot2パッケージの中のgeom_histogram()関数を利用します。

geom_histogram関数でヒストグラム

ヒストグラム

ほとんどの品目は低下価格ですが、6つの品目が高額なため、よくわからないヒストグラムになっています。

dplyrパッケージのarrange関数で高額な品目とその価格を見てみましょう。

arrange関数

ピアノが72万6000円で、ピアノの次が自動車保険料の7万4330円です。自動車保険ってこんなに高いいんですね。自動車に乗らないからわからなかったです。

filter関数でピアノや自動車を除いてから、もう一度ヒストグラムを作ってみます。

filter関数とgeom_histogram関数

ヒストグラム

だいぶわかりやすくなりました。3万円以下の商品だけにしてヒストグラムを作ってみましょう。

filter関数とgeom_histogram関数

ヒストグラム

こうしてみると、値段の安いものになるほど、品目が多いですね。

Y202007を対数変換してからヒストグラムを描いてみましょう。mutate関数とlog関数を使います。

mutate関数とlog関数

ヒストグラム

ようやく分布の中心に多くの品目が集まるようになりました。

binwidth = 1にしてみます。

 

binwidth = 1

ヒストグラム

color = "white" にして見やすくしました。

Y202006も同じようにヒストグラムにします。

mutate関数とlog関数

ヒストグラム

2020年7月とほとんど同じですね。

Y201907も同じようにヒストグラムにします。

mutate関数とlog関数

ヒストグラム

こちらも同じような形状です。

続いて、価格の変化率、Month_chgを見てみます。

geom_histogram関数でヒストグラム

ヒストグラム

価格の変化が無い、1.0が圧倒的に多いことがわかります。

Year_chgを見ましょう。

geom_histogram関数でヒストグラム

ヒストグラム

右がわにポツンとあるのは確か、銀行振り込み料金でした。

これを除いてヒストグラムを描いてみましょう。

filter関数とgeom_histogram関数

ヒストグラム

少しだけ価格が上昇している品目が多いです。

今回は以上です。

 

小売物価統計調査の全国統一品目のデータ分析3 - R言語のdplyrパッケージのarrange関数でデータフレームを並び替える

 

www.crosshyou.info

 の続きです。

今回はR言語のdplyrパッケージのarrange関数でデータを並びかえてみようと思います。

Y202007の小さいものを見てみます。

arrange関数

通信料(IP電話, 通信料)が8.80円で一番安いです。

arrange関数は小さい順に並び替えます。大きい順に並び替えたいときは、desc関数をarrange関数の中で使います。

arrange関数

さきほどはselect関数でItemとY202007を選択したときに、Itemを先に選択したので、出力結果が少し見にくいかたちでした。今回はselect関数でY202007を先に選択したので見やすくなっています。乗用車(普通乗用車, 輸入品)が355万9172円で一番高い品目です。

arrange関数

月刊誌と宿泊料(1泊2食, 平日)の2品目だけが6月と比べて値段が下がっています。

値段が上がっているのは何でしょうか?

arrange関数

レンタカー料金(北海道)が一番値上がりしています。6月と比べて3割も値上がりしています。航空運賃、鉄道運賃が値上がりしています。

1年前との比較はどうでしょうか?

arrange関数

宿泊料(1泊朝食, 休前日)が一番値下がりしています。2割ぐらいです。自動車保険も値段が下がっています。

arrange関数

振込手数料が一番値上がりしています。4.59ってすごいですよね。あとは鉄道運賃です。

振込手数料、気になるので値段を見てみましょう。

arrange関数

filter関数を使いました。2019年7月は54円だったのが、2020年7月は248円になっています。

今回は以上です。

 

小売物価統計調査の全国統一品目のデータ分析2 - R言語のdplyrパッケージのmutate関数で新しい変数を作る。

 

www.crosshyou.info

 の続きです。

今回は、R言語のdplyrパッケージのmutate関数で新しい変数を作ります。

はじめにtidyverseパッケージを読み込みます。

tidyverseパッケージ

tidyverseパッケージを読み込むと、dplyrパッケージをはじめggplot2などデータ分析で便利なパッケージをいっぺんに読み込みます。

では、mutate関数でY202007 / Y202006 を作ります。これは2020年6月と2020年7月なので、Month_chgと名前をつけましょう。

mutate関数

Month_chg:前月変化率は最小で0.9615ですから4%ぐらい価格が下がったものがあります。その一方で、最大が1.312なので3割も値上がりした品目があります。

同じように、Y202007 / Y201907 を作ります。これはYear_chgと名前をつけましょう。

mutate関数

最小値は0.8092ですから2割ぐらい値下がりした品目があります。最大値は4.5926ですから、4.5倍に値上がりした品目もあるのですね。

Month_chgが1.000つまり前月の価格が同じだったらTrue, 価格が変わっていたらFalseという変数も作りましょう。これはMonth_sameと名前をつけましょう。

mutate関数

TRUEが109ということは、109品目は前月と同じ価格、FALSEが29ということは29品目は前月と違う価格ということです。

同じように、Year_chgが1.000ならTRUE, 違うならFALSEというYear_sameという変数を作りましょう。

mutate関数

TRUEが12ですので、12品目は昨年と価格が同じということですね。

最後にMonth_chg, Year_chgが両方ともTRUE, つまり価格が2019年7月、2020年6月、2020年7月で価格が変わっていないものをTRUE, そうでないものをFALSEとする変数を作りましょう、Anteiと名前をつけましょう。

mutate関数

TRUEが12ということは、Year_sameと同じ数なので、Year_sameがTRUEな品目12品目はすべてAnteiもTRUEということですね。Anteiは作らなくてもよかったですね。

NULLで削除しましょう。

NULL

str関数でみると、Anteiが無くなっていることが確認できます。

今回は以上です。

 

小売物価統計調査の全国統一価格品目のデータ分析1 - R言語でデータを読み込み、分析の前処理をする。

今回は、小売物価統計調査のデータから、全国統一価格品目のデータを分析してみようと思います。

政府統計の藏合窓口、www.e-stat.go.jpからデータファイルをダウンロードします。

e-stat.go.jpからデータを取得

ファイルをダウンロードすると、このようなファイルです。

データファイル

必要な部分だけを抜き出しました。

データファイル

これを、R言語のread.csvファイルで読み込みます。

read.csv関数でCSVファイルを読み込む

 

str関数でファイルが読み込まれたかどうか確認します。

str関数でデータの構造を確認

問題がいくつかあります。

Codeの変数名がX.U.FEFF.Codeになっています。それと価格の変数、Y202007, Y202006, Y201907が数値型でなくて文字列になっています。

直しましょう。

まずは、変数名の修正です。names関数で直します。

names関数

なおりました。

次に、Y202007, Y202006, Y201907をas.numeric関数で数値型に直します。

as.numeric関数

数値型になりました。

次に、Y202007, Y202006, Y201907にデータが入っていない、つまりNAな品目は削除します。is.na関数と!を組み合わせます。

indexを作成

summary関数でNAがなくなっていることがわかります。ただ、Y201907の最小値が0というのがあります。価格が0では分析できないので、この行も削除します。

summary関数

Revise、これは価格改定です。価格改定があるとデータの連続性に疑義がありますから、ReviseがNAのものだけにします。

summary関数

分析に必要な項目だけにします。Item, Y202007, Y202006, Y201907だけにします。

summary関数

これで前処理は終わりました。

今回は以上です。

 

都道府県別の宿泊旅行統計調査の分析6 - R言語のggplot2でグラフを描く練習

 

www.crosshyou.info

 の続きです。

今回はggplot2でグラフを描く練習をします。

はじめにggplot2ライブラリを読み込みます。

ggplot2パッケージを読み込む

続いて、ggplot関数でggplotオブジェクトを作ります。

ggplot関数でggplotオブジェクトを作る

pの結果

この時点ではデータフレームを指定しただけなので、グラフには何も表示されません。

X軸とY軸をaes関数で指定します。

aes関数でX軸とY軸を指定

aes関数でX軸とY軸を指定

X軸とY軸が表示されました。

geom_~~~~関数でグラフの種類を指定します。散布図はgeom_point関数です。

geom_point関数で散布図

geom_point関数で散布図

Stpe1からStep3を一度にすると以下のようになります。

ggplot関数で散布図

ggplot関数で散布図

geom_pointをgeom_density2dにすると、2次元のdinsity plotになります。

geom_density2d関数

geom_density2d関数

aes関数でY軸を指定しないで、X軸だけ指定すると、geom_histogram関数でヒストグラム、geom_densityでdensity plotを描くことができます。

geom_histogram関数でヒストグラム

geom_histogram関数でヒストグラム

geom_density関数

geom_density関数

geom_boxplot関数で箱ひげ図です。

geom_boxplot関数で箱ひげ図

箱ひげ図

今回は以上です。

 

都道府県別の宿泊旅行統計調査の分析5 - R言語のlm関数で回帰分析をする。vif関数で多重共線性をチェック

 

www.crosshyou.info

 の続きです。

今回は、R言語のlm関数で回帰分析をしてみようと思います。

response variable(反応変数)をTotal_chgにしてその他の変数をexplanatory variables(説明変数)にします。

lm関数で回帰分析

p-valueは2.2e-16よりも小さな係数ですが、各項のp値が大きいですね。

update関数で単純化します。

update関数とanova関数

update関数で、Tour_chg:Biz_chg:Tour_Biz_Ratioの項を削除しました。

anova関数でmodel1とmodel2を比較しました。p値は0.1858と0.05よりも大きいですので、model1とmodel2では有意な違いはありません。より単純なmodel2を採用します。

summary関数

Biz_chg:Tour_Biz_Ratioは削除してもよさそうです。update関数で削除します。

update関数とanova関数

P値が0.4481ですからmodel2とmodel3では有意な差はありません。

より単純なmodel3を採用します。

summary関数

もう削除はできないです。

もうひとつ、交差項の無いモデルを作ってみます。

lm関数で回帰分析

こちらもp-valueは2.2e-16より小さいの有意なモデルです。Adjusted R-squaredは0.8663です。

Total_chg = 0.182 + 0.534 x Tour_chg + 0.253 x Biz_chg + 0.015 x Tour_Biz_Ratioです。

残差プロットを見てみましょう。

plot関数

残差プロット

左上のグラフが残差プロットですが、特に明確なパターンを形成しているようには見えないので大丈夫です。

多重共線性(Multocollinearity)があるかどうか調べます。carパッケージを読み込んで、vif関数で調べます。

carパッケージを読み込む

vif関数

どの変数も2以下、ほとんど1に近いので多重共線性の問題はありません。

交差項を含んだモデル、model3でVIFを計算してみます。

vif関数

どの変数も10以上なので、よくないです。多重共線性があります。

今回は以上です。