crosshyou

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

消費動向調査の分析6 - R言語のaov関数とTukeyHSD関数を使って、どの年が有意に違うのかを調べる。

 

www.crosshyou.info

 の続きです。

前々回の分析で消費者態度指数は年毎に平均値が有意に違うことがわかりました。そこで今回は、どの年の平均値が有意に違うのかを調べてみましょう。

方法は、aov関数とTukeyHSD関数を使います。

早速やってみましょう。

f:id:cross_hyou:20190207201813j:plain

aov関数の結果をanova_modelという名前のオブジェクトにして、これをTukeyHSD関数で処理すると結果が出てくるのですが、年の数が多すぎでどれがどれだかわからないですね。。

もう一工夫しましょう。

f:id:cross_hyou:20190207202139j:plain

TukeyHSDの結果をオブジェクトにしてstr関数で構造を調べてみました。これはリストですね。Yearという名前の120行4列のマトリックスです。

そして、4列目のp adjがp値なので、このp adjで小さい順に並び替えればいいですね。

f:id:cross_hyou:20190207203851j:plain

まず、as.matrix(HSD_result$Year)でリストの1要素($Year)をマトリックスに変換します。さらにそれをas.data.frame関数でデータフレームにしました。

これで、p adjが0.05より小さいものを表示すればいいわけです。dplyrパッケージのfilter関数とarrange関数を使いましょう。

f:id:cross_hyou:20190207204716j:plain

変数名が p adjのようにスペースがあると上手くいかなかったので、p_adjに変更してからfilter関数とarrange関数を使ったのですが。。肝心の何年と何年の差が有意に違うのか、という行名が表示されていません。

行名も変数に加えましょう。

f:id:cross_hyou:20190207205056j:plain

Year_Pairとう名前で変数を作りました。

これで再度、先ほどのコマンドを実行します。

f:id:cross_hyou:20190207205351j:plain

0.05 よりも厳しく 0.01 よりも小さいデータだけにしたのですが、それでも60ぐらいありました。ここには上位のデータだけを表示しました。

2008年と2004年が一番違いがあります。以下、2008年と2005年、2008年と2006年などと続きます。

今回は以上です。