-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathintro.qmd
263 lines (192 loc) · 13.2 KB
/
intro.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
---
title: "はじめに"
---
## データ分析って何?
データ分析とは、
データを人間が利用できる形に変換することで
対象についての理解や予測を目指す手続きを指します。
ここでいうデータとは、観測や実験により取得されるものです。
データ分析には次の目的があります。
- データを<ruby>要約<rt>ようやく</rt></ruby>すること
- データの意味・関係を説明すること
- 新たに得られるデータに対する予測を行うこと
要約とは物事の中心となる大切な部分を短くまとめることです。
一般的にデータ分析の対象となるデータは<ruby>膨大<rt>ぼうだい</rt></ruby>です。
そのため一つ一つのデータを見ていくことは難しいです。
そこでデータを要約する方法として代表値によるデータの集約やグラフによるデータ可視化が行われます。
この方法について、コースの中でも[第2章](summary_statistics.qmd)と[第4章](visualization.qmd)で扱います。
2つ目の目的として、データがもつ意味やデータに含まれる値の関係性を説明することがあります。
例えば、動物園で飼育されるペンギンの各個体について、体の部位を測定したデータを集めたとします。
そのとき、体の部位ごとにどのような意味、関係があるかを説明する場合、データ分析が役立ちます。
次に示す @fig-penguins は、ペンギンの各個体の大きさを記録したデータをグラフ化したものです。
この図からどのようなことが言えるでしょうか。
```{r}
#| label: fig-penguins
#| fig-cap: ペンギンの体の大きさの関係
#| warning: false
#| dev: ragg_png
library(ggplot2)
library(palmerpenguins)
p <-
ggplot(penguins, aes(flipper_length_mm, bill_length_mm)) +
xlab("翼の長さ(mm)") +
ylab("口ばしの長さ(mm)")
p +
geom_point()
```
@fig-penguins のようなグラフを散布図と呼びます。
散布図は2つのデータの関係を示すのによく使われます。
ここではグラフの下部と左側に表記がある通り(それぞれx軸、y軸と言います)、
「翼の長さ」と「口ばしの長さ」を示しています。
軸の横に書かれている数値はその大きさです。
一つ一つの点がペンギンの個体を表しています。
@fig-penguins を見ると、**翼の長さが大きい個体ほど口ばしの長さも大きい**と言えるような気がします。
そこでデータ分析では「ペンギンの個体は翼の長さが大きい個体ほど口ばしの長さも大きい」という仮定を置きます。
この仮定を説明するために、データ分析ではデータの間の関係を説明する「モデル」を考えます。
また、先ほどの**ペンギンデータ**は実は複数のペンギンの種類について調べたデータだったとします。
このとき、体の部位の関係の説明にペンギンの種類という、もう一つのデータが加わることになります。
そこで @fig-penguins の図に手を入れて、種類ごとに色分けした図を見てみることにします (@fig-penguins_species)。
```{r}
#| label: fig-penguins_species
#| fig-cap: ペンギンの体の大きさの関係を種類別に比較する
#| warning: false
#| dev: ragg_png
p +
geom_point(aes(color = species)) +
scale_color_discrete(labels = c("アデリーペンギン", "ヒゲペンギン", "ジェンツーペンギン"))
```
@fig-penguins_species では、最初の仮定(翼の長さと口ばしの長さが比例して大きくなる)が変わることはなさそうです。
しかしペンギンの種類によって体の部位の大きさには幅が決まっていそうだ、ということも見えてきました。
具体的にはアデリーペンギン、ヒゲペンギン、ジェンツーペンギンの順番で体の大きさに違いがあるようです。
これも新たな仮定としておきましょう。
この仮定を調べるためのモデルも存在します。
こうしたデータ間の<ruby>比較<rt>ひかく</rt></ruby>(2つあるいは3つ以上のものを比べ、そこにある違いを考えること)もデータ分析で扱う内容です。
データ分析の最後の目的は、新たに得られるデータに対する予測を行うことです。
これまでに集めたデータや構築したモデルから、新たなデータへの予測を行います。
モデルが存在することで、ある程度の未知のデータに対する予測が可能になります。
ペンギンの体の大きさの例で見たように、翼の長さがわかれば、口ばしの長さに対する見通しが立ちます。
また、ある程度の大きさであれば種類まで特定できるかもしれません。
データ分析を行うために統計学の知識を活用します。
統計学では確率論と呼ばれる数学の力を使うことでデータ分析の幅を広げることができますが、
数学は統計学的な考え方において必須ではありません。
この書籍の中でも高度な数学を用いずにデータ分析を行う方法や、データを表現する可視化の手法について紹介します。
数学は理系の印象がありますが、データ分析は文理問わず求められる技能です。
### データ分析のプロセス
課題や適切なデータを見つける、データを解析する、解析結果を利用する
### データを意思決定に役立てる
データ処理、分析のための専門知識を備える
データに含まれる誤差やバイアスといった性質を正しく理解した上で、
**データから有益な情報(価値)を引き出すための学問分野をデータサイエンス**と呼びます。
データから得られた情報が活用された例として、
1854年にロンドン(イギリス)で発生したコレラの大発生に対する
医師ジョン・スノウによる活躍があります。
当時、コレラの流行は空気中の粒子や未知の細菌が原因と考えられていました。
これに対してジョン・スノウは
地元住民らへの聞き込み調査により、コレラの発生源が、ケンブリッジ・ストリートのブロード・ストリートの公共の水ポンプであると特定
::: {.callout-note .tokupon_none}
ジョン・スノウによる
がされる前は
:::
データサイエンスでは情報学と統計学の技能を生かして
また、データサイエンスにより企業や研究に貢献する人々のことをデータサイエンティストと言います。
## データ、グラフに騙されない
普段の生活の中で、数値やグラフを目にする機会がたくさんあります。
天気予報や学校のテストの成績、スマートフォンやスマートウォッチで記録される歩数(@fig-my_activity)などです。
![スマートフォンに記録される活動量。数値を時間ごとにグラフ化し、一日の活動量と時間帯の関係がわかる](images/my_activity.jpeg){#fig-my_activity}
このような数字やグラフを見た時に感じる印象は人それぞれですが、
多くの人が共感するものも存在します。
```{r}
#| include: false
source("data-raw/hoken_toukei.R")
```
次の @fig-hoken_ugly は文部科学省が毎年行う「学校保健統計調査」から5歳の幼児(男)における都道府県別の身長・体重の平均値を棒グラフにしたものです。全国で最も順位の低い県は徳島県であることがわかります。全国一位の宮城県と比べると何倍も差があるように見えます。しかしこれはグラフのトリックです。注意して横軸を見てみましょう。
```{r}
#| label: fig-hoken_ugly
#| fig-cap: 誤解を招きやすいグラフの例。5歳の幼児における都道府県別の平均身長。グラフの横軸が0から始まっていないために値の差が大きく見えてしまう。
#| echo: false
#| fig.height: 7
#| dev: ragg_png
library(ggplot2)
library(ragg)
p <-
df_hoken_toukei |>
ggplot(aes(forcats::fct_reorder(`区分`, `男_身長_平均値`),
男_身長_平均値)) +
geom_bar(stat = "identity") +
xlab("都道府県") +
ylab("身長(cm)") +
coord_flip() +
labs(title = "5歳の幼児(男)における都道府県別の平均身長",
subtitle = "令和2年度 学校保健統計調査")
p +
scale_y_continuous(limits = c(110, 113),
oob = scales::rescale_none)
```
この**グラフの横軸は0で始まっていない**ことに気がついたでしょうか。
これがグラフのトリックを引き起こしている原因です。
横軸が0からの図(@fig-hoken)と見比べてみましょう。
```{r}
#| label: fig-hoken
#| fig-cap: 横軸を0から示した平均身長を示す棒グラフ
#| echo: false
#| fig.height: 7
#| dev: ragg_png
p
```
先ほどは都道府県間の差が大きく感じたものが、今度はどの県も平坦な様子に思えたのではないでしょうか。
**数値が変わったわけではないので、順位に違いはありませんが見た目の印象が大きく違います**。
数値で確認すると、全国一位の`r df_hoken_toukei$区分[1]`県の5歳の男児の平均身長は`r df_hoken_toukei$男_身長_平均値[1]`cmで徳島県では`r df_hoken_toukei$男_身長_平均値[47]`cmで、その差は`r df_hoken_toukei$男_身長_平均値[1] - df_hoken_toukei$男_身長_平均値[47]`cmです。
@fig-hoken_ugly で何倍も開きがあるように感じた印象ほどではないと思える数値ではないでしょうか。
数字やグラフにはある種の説得力が存在します。
目に見えるものが示す内容を鵜呑みにして物事を判断してしまうことは危険です。
テストの点数がクラスの平均よりも低かったからと言って、クラスの上位に含まれていないとは限りません(逆もあります)。
また、最近では一日の新型コロナウィルス感染症の新規感染者数が報道されますが、悲観的になり過ぎる心配はない場合もあります。
```{r}
#| include: false
set.seed(12)
x <-
sort(round(rnorm(n = 40, mean = 48, sd = 16), digits = 0))
x[32:40] <- x[32:40] + rpois(n = 9, lambda = 10)
```
::: {.callout-tip .tokupon}
#### テストの点数がクラスの平均点よりも低くても上位に含まれる?
40人のクラスで行われたテスト(100点満点)の平均点が`r round(mean(x), digits = 0)`点でした。
このとき、点数が45点だった人はクラスの上位20人の中に含まれるでしょうか。
```{r}
library(ggplot2)
p <-
tibble::tibble(x = x) |>
ggplot(aes(x)) +
geom_density() +
xlim(0, 100) +
labs(title = "40名のテスト点数の分布")
```
答えと解説は[練習問題](exercise.qmd#章-テストの点数がクラスの平均点よりも低くても上位に含まれる)を見てね。
:::
目に見えるデータやグラフには、それを見せる側の意図が存在します。
平均身長のグラフでみたように、同じデータであっても何をどう示すか、どう解釈するかで印象が変わります。
見せ方を工夫して人を騙そうとするものもあり得るでしょう。
こうした**データ、グラフに騙されないためには、データに対する素養を鍛えることが重要**です。
読み書きをする能力のことをリテラシーと言いますが、データに対するリテラシーを備えておくことが求められています。
## 統計
## データ分析で扱う問題
データ分析では「モデル」と呼ばれる考え方
統計モデルを使って問題の解決に挑みます。
[回帰](regression.qmd)と[分類](classification.qmd)
このコースでも、発展として簡単な回帰と分類問題に挑戦します。
::: {.callout-note .tokupon}
#### R言語について
このコースではR言語を使った実習を行うよ。 R言語は統計計算と作図の機能に優れたプログラミング言語の一種だよ。 オープンソース・フリーソフトウェアと言って、誰もが自由に使うことができるんだ。
R言語に関心を持ったなら、付録の「[Rのイロハ](r_intro.qmd)」を見てみてね。
Rのインストール方法、簡単な使い方を紹介するよ。
:::
<!-- Pythonについても一言 -->
## まとめと課題
- 身の回りにあるデータやグラフを探してみよう。それはどんなものかな?
## 参考文献・URL
- [@nishiuchi13]
- [@ezaki20]
- [@R300000001-I030421662-00]
- [@R300000001-I031736628-00]
- 小・中学生のための統計学習 まなぼう統計 https://www.toukei.metro.tokyo.lg.jp/manabou/ma-index.htm
- なるほど統計学園 https://www.stat.go.jp/naruhodo/ ... 総務省統計局による、統計について興味・関心を持ってもらうための統計学習サイト