More Related Content More from wada, kazumi (20) 統計環境R_データ分析編20163. 目 次
I. 分析の対象
II. 仮説による分析
1. 仮説設定
2. データの下調べと前処理
3. 詳細分析① エンゲル係数が高いと米?
4. 詳細分析② 世帯の人数が多いと米?
5. 詳細分析③ 主食による世帯収入の差異
III. 探索的な分析
1. 全データでCART
2. 説明変数を削ってCART
3. 世帯主の年齢階級についての分析
3
4. 演習一覧
A. 主食分類符号の作成
B. 円グラフ、帯グラフ、棒グラフ
C. プロット図の保存と加工(手作業の場合)
D. プロット図の保存(コードによる場合)
E. 主食別支出総額と食料支出の散布図
F. 主食別エンゲル係数の基本統計量
G. 複雑な棒グラフ
H. 世帯人員数の棒グラフ
I. 主食別世帯人員数のクロス表
J. クロス表を棒グラフに
K. 比率で見ると
L. 散布図行列を眺める
M. aov関数による一元配置分散分析
N. 対数変換でデータを正規化
O. 決定木で構造を探る
P. 全データでCART
Q. 説明変数を削ってCART
R. 世帯主の年齢階級の分析 4
演習用コードファイル:
Rデモ03_データ分析編.r
8. 演習A. 主食分類符号の作成
1) 作業領域ファイルgiji.RDataを読み込む
2) 主食分類符号を作成するためのデータ項目である穀類
Youto039とその内訳のYouto040~Youto043の内容を
まず確認
3) 穀類の中で最も金額の多いものを
主食とみなし、分類符号f.MDを
作成する
8
変数名 内容
Youto039 穀類
Youto040 米
Youto041 パン
Youto042 めん類
Youto043 他の穀類
主食分類符号 f.MD
1 米 2 パン 3 麺類 4 その他 不詳
18535 12538 939 15 0
9. 演習B.1 円グラフの作成
9
主食 米 パン 麺類 他の穀類
世帯数 18535 12538 939 15
比率% 57.87 39.15 2.93 0.05
金額(千円) 11296 79467 44027 9536
比率% 45.92 32.30 17.90 3.88
23. 演習I. 主食別世帯人員数のクロス表
世帯人員 米 パン 麺類 その他
2 4605 2551 279 3
3 4811 3436 281 9
4 5149 4544 248 3
5 2703 1608 94 0
6 890 297 27 0
7 290 90 10 0
8 69 12 0 0
9 15 0 0 0
10 3 0 0 0
主食の別
23
28. > rs1 <- aov(f.MD ~ GSyunyu)
> summary(rs1)
Df Sum Sq Mean Sq F value Pr(>F)
GSyunyu 3 29 9.636 31.54 <2e-16 ***
Residuals 32023 9783 0.306
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
演習M. aov関数による一元配置分散分析
P値が小さいので、主食の別により収入データの平
均値に有意差はある。
ただし、この分析法は、データの正規性を仮定し
ているが、データはあまり正規分布に近くない。
P値
対数化してみる
28
30. > rs2 <- aov(f.MD[f.G] ~ log10(GSyunyu[f.G, ]))
> summary(rs2)
Df Sum Sq Mean Sq F value Pr(>F)
log10(GSyunyu[f.G, ]) 3 51 17.118 55.9 <2e-16 ***
Residuals 30913 9467 0.306
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1
対数化データによる一元配置分散分析
やはりP値は非常に小さいので、主食の別により収入データの(幾何)平均
に有意差がある。
P値
金額データなどは、対数化により正規分布に近づけること
ができる。ただし、対数化するとゼロ値は-Inf(マイナス無
限大)、マイナス値はNaN(非数)になるので除く。
30
31. 演習O. 決定木で構造を探る
世帯収入の内訳となる経常収入、特別収入と実収入以
外の収入という三変数を用いて、主食の違い f.MD の分
類を試みる。
外部パッケージrpartとpartykitは予めインストールして
おく。(「R はじめの一歩」、スライド27参照)
31
> require(rpart) # rpart
> require(partykit) # 決定木のプロットに必要
> ct2 <- rpart(f.MD ~., dat= as.data.frame(GSyunyu),
method="class", control = rpart.control(cp = 0.001))
目的変数は f.MD、説明変数は行列Gsyunyuにまとめた三変数。
method=“class”で分類木を指定し、cpの値で枝分かれの程度をコントロール。
cpのデフォルトは0.01で小さくすると枝分かれしやすい。
34. III. 探索的な分析
1. 全データでCART [演習P]
2. 説明変数を削ってCART [演習Q]
3. 世帯主の年齢階級
単純な表の作成 [演習R.1]
因子水準の修正 [演習R.2]
棒グラフ作成 [演習R.3]
年齢階級と主食の別のクロス表作成 [演習R.4]
クロス表からの複雑な棒グラフ [演習R.5]
34
35. 目的変数: 主食の別
説明変数: 全変数項目
演習P. 全データでCART
結果は、米Youto040
と、パンYouto041に
よる分類。
ある意味当然の結果
であるが、当然すぎ
て意味がない。
説明変数から
Youto040~
Youto043を削る
35
主食の別 f.MD
1: 米
2: パン
3: めん類
4: その他の穀類
38. R.3 棒グラフ作成
△1 24歳未満
△2 25~29歳
△3 30~34歳
△4 35~39歳
△5 40~44歳
△6 45~49歳
△7 50~54歳
△8 55~59歳
△9 60~64歳
10 65~69歳
11 70~74歳
12 75歳以上
VV 不詳
38
39. R.4 年齢階級と主食の別クロス表
24歳未満 25~29歳 30~34歳 35~39歳 40~44歳 45~49歳 50~54歳
米 23 275 796 1167 1850 2336 3052
パン 30 550 1641 2289 1946 1479 1159
麺類 15 62 114 102 97 123 77
その他 0 0 6 0 0 0 6
55~59歳 60~64歳 65~69歳 70~74歳 75歳以上 不詳
米 3406 1656 480 105 21 3368
パン 730 313 80 7 5 2309
麺類 52 21 6 3 0 267
その他 0 3 0 0 0 0
年齢階級
39
42. 色指定の方法
番号指定
1 黒 2 赤 3 緑 4 青 5 水色
6 紫 7 黄 8 灰 9 黒 10 赤 …
色名指定
colors() で一覧表示
16進数カラーコード
http://research.stowers-
institute.org/efg/R/Color/Chart/ColorChart.pdf
42
43. 既存のカラーパレット
n <- 16 # 色数指定
rainbow(n) # 虹色
cm.colors(n) # 薄い水色から薄いマゼンタまでのグラデーション
topo.colors(n) # 青 -> 緑 -> 黄 -> オレンジ
terrain.colors(n) # 緑->黄->オレンジ->ピンク->白
heat.colors(n)
gray.colors(n=10) # 白黒の濃淡
gray(1:10/10) # 白黒の濃淡
blues9 # 青系のグラデーションで引数はない
43
Editor's Notes emf: ウィンドウズ メタファイル リサンプリングで間引きする手もある ご飯は一人分炊くのも数人分炊くのもあまり手間は変わらない
残念ながら、日本語は文字化けする模様