-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathintro.qmd
354 lines (270 loc) · 23.6 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
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
---
title: "はじめに"
---
## データ分析って何?
私たちは日常中で多くのデータに触れながら暮らしています。
データを扱う計算機の処理性能の向上やインターネット回線の高速化、
そしてスマートフォンの普及により、ビッグデータと呼ばれる莫大な量のデータが身の回りに溢れています。
データと触れている、といってもデータは実体がなく、認識しづらいものです。
データとは一体何でしょうか。
辞書を引いて確認してみますと、「判断や立論のもとになる資料・情報・事実」とあります。
物事を判断、何かについて議論するための材料といったところでしょうか。
材料であるデータは、ある対象について調査、観測や実験などを行うことで得られます。
そこにはたくさんの情報が含まれていることが多いです。
例えば、ある個人の一日の行動を調査し、データ化するとします。
その場合、生年月日や氏名、住所や一日の行動(何時にどこへいたか)などが情報として扱われます[^ch1-1]。
一方でこうしたデータを<ruby>蓄積<rt>ちくせき</rt></ruby>しただけでは、情報の<ruby>羅列<rt>られつ</rt></ruby>となり、あまり意味がありません。
集めたデータをもとにして、分析を行うことで見えてくるものがあります。
**データから得られる情報を読み解き、データを人間が利用できる形に変換・処理を行うことで対象についての理解や予測を目指す手続きを「データ分析」と呼びます**。
[^ch1-1]: こうした個人に関する情報で、特定の個人を識別できるものを「個人情報」と呼びます。
データ分析には次の目的があります。
- データを<ruby>要約<rt>ようやく</rt></ruby>すること
- データの意味・関係を説明すること
- 新たに得られるデータに対する予測を行うこと
要約とは物事の中心となる大切な部分を短くまとめることです。
一般的にデータ分析の対象となるデータは<ruby>膨大<rt>ぼうだい</rt></ruby>です。
そのため一つ一つのデータを見ていくことは難しいです。
そこでデータを要約する方法として代表値によるデータの集約やグラフによるデータ可視化が行われます。
この方法について、コースの中でも[第3章](summary_statistics.qmd)と[第5章](visualization.qmd)で扱います。
2つ目の目的として、データがもつ意味やデータに含まれる値の関係性を説明することがあります。
例えば、動物園で飼育されるペンギンの各個体について、体の部位を測定したデータを集めたとします。
そのとき、体の部位ごとにどのような意味、関係があるかを説明する場合、データ分析が役立ちます。
これについては[第4章](correlation.qmd)で議論します。
またデータを説明するためにはグラフ上にデータを投影することも有効な手段となります。
データ可視化と呼ばれる手法はデータ分析の歴史とともに発展してきました。
[第5章](visualization.qmd)でさまざまなデータ可視化の方法を見ていくとともに実際にグラフを作る方法を学びます。
データの関係を説明する簡単な例をみてみましょう。
次に示す @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)") +
labs(title = "ペンギンの体の大きさの関係")
p +
geom_point()
```
@fig-penguins のようなグラフを散布図(または相関図)と呼びます。
散布図は2つのデータの関係を示すのによく使われます。
ここではグラフの下部と左側に表記がある通り(それぞれx軸、y軸と言います)、
「翼の長さ」と「口ばしの長さ」を示しています。
軸の横に書かれている数値はその大きさです。
一つ一つの点がペンギンの個体を表しています。
@fig-penguins を見ると、**翼の長い個体ほど口ばしも長い**と言えるような気がします。
そこでデータ分析では「ペンギンの個体は翼の長い個体ほど口ばしも長い」という仮定を置きます。
この仮定を説明するために、データ分析ではデータの間の関係を説明する「モデル」を考えます。
また、先ほどの[**ペンギンデータ**](dataset.qmd#南極大陸に生育するペンギンの大きさについての観測データ)は実は複数のペンギンの種名[^ch1-2]について調べたデータだったとします。
このとき、体の部位の関係の説明にペンギンの種名という、もう一つのデータが加わることになります。
そこで @fig-penguins の図に手を入れて、種類ごとに色分けした図を見てみることにします (@fig-penguins_species)。
[^ch1-2]: 生物の種を表す名前を種名と呼びます。日本語での種名は和名(カタカナで表記するのが一般的です)、学術的な種名を学名といい、学名はラテン語で表記されます。ここではカタカナ和名を用います。
```{r}
#| label: fig-penguins_species
#| fig-cap: ペンギンの体の大きさの関係を種名別に比較する
#| warning: false
#| dev: ragg_png
source("scripts/color_palette.R")
p +
geom_point(aes(color = species)) +
scale_colour_tokupon(name = "種名",
labels = c("アデリーペンギン", "ヒゲペンギン", "ジェンツーペンギン"))
```
@fig-penguins_species では、最初の仮定(翼の長さと口ばしの長さが比例して大きくなる)が変わることはなさそうです。
しかしペンギンの種類によって体の部位の大きさには幅が決まっていそうだ、ということも見えてきました。
具体的にはアデリーペンギン、ヒゲペンギン、ジェンツーペンギンの順番で体の大きさに違いがあるようです。
これも新たな仮定としておきましょう。
この仮定を調べるためのモデルも存在します。
こうしたデータ間の<ruby>比較<rt>ひかく</rt></ruby>(2つあるいは3つ以上のものを比べ、そこにある違いを考えること)もデータ分析で扱う内容です。
データ分析の最後の目的は、新たに得られるデータに対する予測を行うことです。
これまでに集めたデータや構築したモデルから、新たなデータへの予測を行います。
モデルが存在することで、ある程度の未知のデータに対する予測が可能になります。
ペンギンの体の大きさの例で見たように、翼の長さがわかれば、口ばしの長さに対する見通しが立ちます。
また、ある程度の大きさであれば種類まで特定できるかもしれません。
データ分析を行うために、数学の知識が活用できます。
特に統計学や機械学習では、数学を用いたデータ分析の手法を扱います。
数学は理系の印象がありますが、データ分析では文理問わず求められる技能なのです。
しかし数学はデータ分析において必須ではありません。
この書籍の中でも高度な数学を用いずにデータ分析を行う方法や、データを表現する可視化の手法について紹介します。
::: {.callout-note .tokupon_none}
#### データサイエンスとデータサイエンティスト
データ分析に加えて、データの処理の実行、データから新たな価値を生み出す分野をデータサイエンスと呼ぶよ。
データ分析の技能だけじゃなくて、データを適切に処理することやデータを活用できることが重要になっているんだね。
また、こうしたデータサイエンスの素養をもつ人はデータサイエンティストと呼ばれるよ。
データサイエンスでは情報学と統計学の基礎が求められる一方で、応用先は人や社会であることが多いんだ。
だからこそ文理融合的な学習が必要とされているんだね。
:::
### データ分析の手順
データ分析はいくつかの作業に分けて考えることができます。
まずデータ分析によって解決したい課題や適切なデータを見つける段階があります。
これらの内容は課題ごとに異なります。
その後、典型的な手順に落とし込むことが可能となります。
@fig-data_science_flow は一般的なデータ分析の手順を示したものです。
まずデータを入手し、コンピュータが扱えるように読み込みます。
続いて、その後の処理が行いやすいように整形を行います。
多くのデータは人間が解釈しやすいように記録されています。
その形はコンピュータやプログラムで利用できる状態でないことがしばしばあります。
また、データ化に伴う不備や正しく読み取れないデータというのも存在します。
こうした問題に対する処理もデータ分析では必要になります。
![データ分析の大まかな流れ](images/data_science_flow.png){#fig-data_science_flow}
データを正しく読み取り、プログラムで扱いやすい形式に加工したら、
データ分析の主要な部分である加工、可視化、モデルの作業です。
可視化とは、図表を用いてデータを表現することを意味します。
これらの作業は一方向的なものではなく、互いに繋がっています。
例えば、モデルの作成のためにデータを加工する、加工したデータを使って可視化をする、
といった具合です。
これらの作業を繰り返し、最終的な伝達が行われます。
データ分析の目的で触れたように、データ分析は行っただけで終わりではありません。
レポートの作成やプレゼンテーションなど、何らかの方法によりその内容を伝えなくてはいけません。
### データを意思決定に役立てる
データから得られた情報が有効活用された例を2つ紹介します。
まずは1854年にロンドン(イギリス)で発生したコレラの大発生に対する
ジョン・スノウによる活躍です。
当時コレラは未知の<ruby>疫病<rt>えきびょう</rt></ruby>で多くの死者を出していました。
この原因不明の病いは空気中の粒子や未知の細菌が原因と考えるのが科学者や政府の考えであり、
それに基づく政策が行われていました。
人々が密集するロンドンの街では、下水の整備が追いつかず、排泄物の処理が十分に行われていませんでした。
このことがコレラの流行に繋がると考えた役人は、下水を整備し汚物を川に流すというものでした。
しかしこの政策によってもコレラの患者が減ることはありませんでした。
コレラの原因と考えられていた空気感染に対して疑問を持っていたジョン・スノウは、地元住民らへの聞き込み調査等を行い、最終的にコレラの発生源が、水道ポンプであると特定しました。
その結論に至るまでにジョン・スノウがとった行動は以下に整理できます。
- コレラで亡くなった人の家の周囲環境を調べる
- 同じような条件でコレラにかかった人とそうでない人の違いを比べる
- 「仮説」をもとにコレラの発症に関係すると考えられる要因について検証する
確証がないとの理由から、残念ながらジョン・スノウが導いた細菌に汚染された水が問題であるとする意見は政府に受け入れられた訳ではありませんでしたが、ジョン・スノウは得られたデータ(患者が使用していた井戸水の位置と井戸水を供給する水道会社)をもとに原因解決のために働きます。
問題となる井戸を特定したり、死者が発生した家で利用される水道会社の比較を行うことで、水の停止を求め、一部の地域ではコレラの感染を抑えることに成功しました。
ジョン・スノウはデータと分析に基づき、問題解決のために働いた人物です。
ジョン・スノウが行ったデータの比較方法や分析は、現代の疫学研究の基礎となるものでした。
そのため彼は現代では疫学の父と呼ばれています。
::: {.callout-note .tokupon_none}
#### ジョン・スノウによる地図
ジョン・スノウは住民への聞き込み調査と合わせて、コレラで死亡した人の居住地を地図上にマッピングしたんだ。
@fig-snow_cholera_map に示すように、一人の死者に対して黒い棒グラフを描いて死者が多い地域を強調しようとした試みがされているね。
地図にはさらに井戸の位置も表示されているよ。
これはコレラの流行の原因が、細菌に汚染された水にあると考えるジョン・スノウならではの視点だったのかもしれないね。
![1854年にジョン・スノウが作成したゴールデン・スクエアのブロード・ストリート周辺における死亡者の状態を示す地 パブリックドメイン https://commons.wikimedia.org/wiki/File:Snow-cholera-map-1.jpg](https://upload.wikimedia.org/wikipedia/commons/2/27/Snow-cholera-map-1.jpg){#fig-snow_cholera_map}
:::
データを用いることで医療に貢献した人物として、もう一人、フローレンス・ナイチンゲールの例を挙げます。
近代看護教育の母として知られる人物ですが、効果的なグラフ作成を行った人物でもあります。
ナイチンゲールは1853年から1856年の間に発生していたクリミア戦争において、戦場で負傷した兵士の看護と衛生面の改善に取り組みました。戦争終了後、戦争による死者の原因を分析する中で、戦闘で負った傷が原因で亡くなる兵士よりも、負傷後に何らかの菌に感染した影響で病気となり死亡する兵士のほうが圧倒的に多いことを明らかにしました。
しかし軍はその結果を認めようとはしませんでした。
そこでナイチンゲールはデータをよりわかりやすく、明確に伝えるための工夫としてグラフを作成しました (@fig-nightingale_rose_diagram)。
![Nightingale, Florence. A contribution to the sanitary history of the British army during the late war with Russia. London : John W. Parker and Son, 1859. (page 19 (seq. 25)). Repository: Countway Library of Medicine. Institution: Harvard University. アクセス日: 2022年7月6日. リンク: https://nrs.lib.harvard.edu/urn-3:hms.count:1177146?n=25](images/nightingale_rose_diagram.jpg){#fig-nightingale_rose_diagram}
ナイチンゲールが示したのは風変わりなグラフでしたが、単純な棒グラフ以上に関心を引きやすい、美しい画像を用意することで、政府の説得を目指したのかもしれません。
いずれの話も21世紀に入る前のものですが、なぜ今データ分析、データサイエンスが注目されているのでしょうか。
それには冒頭で述べたようにビッグデータの台頭やコンピュータの性能向上、分析手法の進展があげられます。
現代は、ジョン・スノウやナイチンゲールが活躍した時代と比べて、社会のあらゆる分野においてデータやコンピュータを活用することが当たり前になっています。
データは「21世紀の石油」と呼ばれるように、ビジネスにおいてもデータ分析を活用した課題解決が前提となっています。
データを経済的な資源として考え、それを保有・活用できる企業が大きく成長しています。
GoogleやAmazon、百度などはビッグデータを利用した企業の一例ですが、これらの企業は現代のデータ駆動型社会において他の企業よりも優位な位置を築いています。
## データ、グラフに騙されない
普段の生活の中で、数値やグラフを目にする機会がたくさんあります。
天気予報や学校のテストの成績、スマートフォンやスマートウォッチで記録される歩数(@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}
#| include: false
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
- @isbn9784478022214
- @isbn9784802612906
- @isbn9784198637064
- @isbn9784004317135
- @isbn9784478110348
- @isbn9784791774197
- 小・中学生のための統計学習 まなぼう統計 [https://www.toukei.metro.tokyo.lg.jp/manabou/ma-index.htm](https://www.toukei.metro.tokyo.lg.jp/manabou/ma-index.htm)
- なるほど統計学園 [https://www.stat.go.jp/naruhodo/](https://www.stat.go.jp/naruhodo/) ... 総務省統計局による、統計について興味・関心を持ってもらうための統計学習サイト
- 青空文庫 コレラの伝染様式について [https://www.aozora.gr.jp/cards/001600/files/53757_67624.html](https://www.aozora.gr.jp/cards/001600/files/53757_67624.html)