Skip to content

Commit

Permalink
[add]Update
Browse files Browse the repository at this point in the history
  • Loading branch information
uribo committed Jun 27, 2022
1 parent 97a70bd commit c64f5ec
Show file tree
Hide file tree
Showing 7 changed files with 167 additions and 23 deletions.
79 changes: 66 additions & 13 deletions data.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,19 @@ execute:
```{r}
#| include: false
library(dplyr)
library(ragg)
```

```{r}
#| include: false
# dfはデータフレーム(data frame)の頭文字から
df_zoo <-
readr::read_csv("data-raw/tokushima_zoo_animals22.csv",
col_types = "ccdd_")
```

データを図で可視化する方法


## データの種類

Expand All @@ -27,22 +31,35 @@ df_zoo <-
ある動物について、体の一部の大きさや体重を測る、雌雄を調べる。
これらはデータの一つです。

```{r}
# ある動物の種類についての分類群や体重を調べました
c("食肉類", "鳥類", "食肉類")
Rを使ったデータの記述方法を紹介します。
ここではある動物の種類についての体重と分類群を調べた結果を入力します。
`c()`関数[^ch1-1]の括弧の中(<ruby>引数<rt>ひきすう</rt></ruby>)に値である数値や文字列を記述します。
値と値の間にカンマ `,` を入力すると複数の値を記述することになります。
数値は直接入力できますが、文字列を与えるときは引用符 `"` で文字列を囲む必要があります。

[^ch1-1]: cは「組み合わせる」の英単語であるcombineに由来します。

```{r}
#| code-fold: false
# ある動物の種類についての体重と分類群を調べました
# 複数の値を並べるときは カンマ , を使います
c(6, 3.5, 5.4)
# 文字列は 引用符 " で囲みます
c("食肉類", "鳥類", "食肉類")
```

複数の動物の体重のように共通の手法によって得られた値のことを**変数**といいます。
「複数の動物の体重」のように、共通の手法によって得られた値のことを<ruby><strong>変数</strong><rt>へんすう</rt></ruby>といいます。
動物の体重は、個体や種類が違うと値も変わります。

### 変数の性質の違い

体重を記録するときは数値を用いました。
このように**数量を表す変数のことを量的変数**といいます。
数値からなる変数なので、平均を求めたり大きい順番に並び替えるといった処理が可能です。

量的変数の場合、数値の種類によってさらに離散変数と連続変数に分類できます。
**変数の数値がとり得る値が一定の間隔によりバラバラなものを離散変数**と呼びます。
<strong>変数の数値がとり得る値が一定の間隔によりバラバラなものを<ruby>離散<rt>りさん</rt></ruby>変数</strong>と呼びます。
例えばサイコロの出目は一般的に1から6までの整数であるため、離散変数です。
また動物を1頭、2頭と数えた個体数も同じです。

Expand Down Expand Up @@ -95,7 +112,7 @@ df_zoo_subset <-
df_zoo_subset |>
purrr::set_names(c("分類群", "動物の名前", "体長(cm)", "体重(kg)")) |>
knitr::kable(caption = "5種の動物についての体長・体重のデータフレーム")
knitr::kable(caption = glue::glue("{nrow(df_zoo_subset)}種の動物についての体長・体重のデータフレーム"))
```

データフレームではデータを横に見たものが行、縦に見たものを列と考えます。
Expand All @@ -118,7 +135,10 @@ df_zoo_subset |>
たくさんのデータがあれば、データから見えてくる傾向・パターンも見えやすくなります。
ここでは22種の動物について、同様の体長、体重を調べたデータを用意しました。
ここからはこの**動物データ**を使い、データを調べていくことにします。
なおデータフレームをプログラミング言語で扱うときは列の名前(列名)に
このデータは[とくしま動物園](https://www.city.tokushima.tokushima.jp/zoo/index.html)
飼育される動物について記録したものです。詳細は付録[データセット](dataset.qmd#とくしま動物園で飼育される動物の体の大きさと体重)で解説しています。

データフレームをプログラミング言語で扱うときは列の名前(列名)に
漢字やひらがなを使うと意味がわかりやすいですが、できるだけ英語やローマ字を使ったものにしましょう。
ここでも次のように列名を日本語から英語に変えてあります。

Expand All @@ -128,8 +148,8 @@ df_zoo_subset |>
- `weight_kg`: 体重(単位はkg)

Rで動物データを扱えるようにするコマンドを表示します。
データは`df_zoo`というオブジェクトに格納され、いつでも参照できるようになっています
変数を参照するには`$`を使います。
データは`df_zoo`というオブジェクトに格納され、いつでも表示(参照)できるようになっています
変数を参照するにはドル記号 `$`を使います。

```{r}
#| eval: false
Expand All @@ -143,11 +163,13 @@ df_zoo
```

```{r}
# html上で表を出力するコードです
knitr::kable(df_zoo)
```
```{r}
#| echo: true
#| code-fold: false
# データフレーム中の変数を参照するにはドル記号 $ に続けて変数名を与えます。
df_zoo$name
```

Expand All @@ -161,19 +183,35 @@ df_zoo$name

度数分布表、ヒストグラム、箱ヒゲ図、散布図、カルトグラム

[データ分析の目的](intro.qmd#)の一つに「データを要約すること」があることを示しました。
それでは実際に、データの要約に取り組んでみましょう。
例として動物データの体長を表示します。

```{r}
#| code-fold: false
df_zoo$body_length_cm
```

このような数値の羅列を示してデータの特徴を説明することは困難です。
このデータの特徴として言えることは何でしょうか?
動物データに含まれるわずか`r nrow(df_zoo)`件の数値でも、こうした数値の羅列からデータの特徴を説明することは困難です。
データ分析で扱うデータの件数は数千、数万となる場合もあり、一つ一つデータを見ていくことも
現実的ではありません。
そこでデータを要約するために**代表値**の計算や**データの可視化**が行われます。

データを要約する方法にはさまざまなものがあります。代表的なものは平均値の計算です。
### 代表値

まず、複数の数値の性質や特徴をよく表す代表値について説明します。
代表値によるデータの要約は、データに含まれる数値の傾向を大まかに把握するために便利です。
代表値という名前の通り、数値によるデータの表現方法となります。

代表値によるデータを要約する方法にはさまざまなものがあります。代表的なものは**平均値**の計算です。

平均値にも複数の種類が存在しますが、ここではより一般的な算術平均を平均値の例として扱います。

データに含まれる数値の傾向を大まかに把握する

最小値、最大値

### データの分布

データの分布を明らかにする。

Expand All @@ -197,6 +235,7 @@ count(df_zoo, taxon, name = "frequency") |>

```{r}
#| echo: true
#| code-fold: false
# 動物データの体長について最小値・最大値を求める
min(df_zoo$body_length_cm, na.rm = TRUE)
max(df_zoo$body_length_cm, na.rm = TRUE)
Expand All @@ -206,6 +245,7 @@ max(df_zoo$body_length_cm, na.rm = TRUE)

```{r}
#| echo: true
#| code-fold: false
range(df_zoo$body_length_cm, na.rm = TRUE)
```

Expand All @@ -221,13 +261,20 @@ range(df_zoo$body_length_cm, na.rm = TRUE)

**度数分布表**は手元のデータの値をいくつかの階級 (class)

### データのばらつき

分散、標準偏差

### ヒストグラム

代表値に対して、データを図で表現する方法を解説します。
ヒストグラム、箱ヒゲ図、散布図は数値を図で表すための方法として用いられます。

度数分布をグラフ化する方法の一つとして**ヒストグラム**があります。

```{r}
#| label: 動物の体長のヒストグラム
#| warning: false
library(ragg)
library(ggplot2)
df_zoo |>
Expand All @@ -250,6 +297,12 @@ df_zoo |>

データの特徴を素早く捉えることができます。

### 箱ひげ図

## まとめ

- データの種類

## 参考文献・URL

- [@R300000001-I031484010-00]
14 changes: 10 additions & 4 deletions dataset.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@

## とくしま動物園で飼育される動物の体の大きさと体重

体の大きさ(体長 cm)と体重(kg)をデータセット化しました。
原則として、各種の体長および体重の最大値を記録しています。


```{r}
#| include: false
if (!file.exists("data-raw/tokushima_zoo_animals22.csv")) {
Expand Down Expand Up @@ -79,3 +75,13 @@ if (!file.exists("data-raw/tokushima_zoo_animals22.csv")) {
}
```

[とくしま動物園](https://www.city.tokushima.tokushima.jp/zoo/index.html)で飼育される
22種の動物(2016年4月1日時点の情報)について体の大きさ(体長 cm)と体重(kg)をデータセット化したものです。
体長と体重については各動物のWikipediaのページを参照して記録しています。
原則として、各種の体長および体重の最大値を記録しています。
適当な値の記載がなかった項目については欠損値を与えています。

データは[GitHubリポジトリ](https://github.com/uribo/tokupon_ds)に保存してあります。

https://github.com/uribo/tokupon_ds/blob/main/data-raw/tokushima_zoo_animals22.csv

23 changes: 17 additions & 6 deletions intro.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,40 @@ title: "はじめに"

数学は理系の印象がありますが、データ分析は文理問わず求められる技能です。

データ分析の目的
データ分析には次の目的があります。

- データを要約すること
- データを<ruby>要約<rt>ようやく</rt></ruby>すること
- データの意味を説明すること
- 新たに得られるデータに対する予測を行うこと

要約とは物事の中心となる大切な部分を短くまとめることです。
一般的にデータ分析の対象となるデータは<ruby>膨大<rt>ぼうだい</rt></ruby>です。


### データ分析のプロセス

課題や適切なデータを見つける、データを解析する、解析結果を利用する

### データの要約

### データを意思決定に役立てる

データサイエンス、データサイエンティスト

データ処理、分析のための専門知識を備える

データに含まれる誤差やバイアスといった性質を正しく理解した上で、データから有益な情報を引き出す。
データに含まれる誤差やバイアスといった性質を正しく理解した上で、
**データから有益な情報(価値)を引き出すための学問分野をデータサイエンス**と呼びます。

データサイエンスでは情報学と統計学の技能を生かして

また、データサイエンスにより企業や研究に貢献する人々のことをデータサイエンティストと言います。

## データ、グラフに騙されない

私たちの身の回りには数値やグラフがたくさんあります。

データを見て、何を強調して示したいか(作り手の意図。同じデータであっても何をどう示すかで見方が変わる

こうしたデータ、グラフに騙されないための素養(リテラシー)が重要になります
こうした**データ、グラフに騙されないための素養(リテラシー)が重要**になります

<!-- https://en.wikipedia.org/wiki/Rabbit–duck_illusion -->

Expand Down
11 changes: 11 additions & 0 deletions r_intro.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,21 @@ y

### 関数

関数には

<ruby>引数<rt>ひきすう</rt></ruby>を指定できるものがあります。

`引数名 = 値` の関係で記述します。複数の引数を利用する場合、カンマ `,` を使って引数を区切ります。

```{r}
# 平方根
sqrt(4)
class(sqrt)
x <- c(1, 3, NA, 5)
mean(x)
# na.rm引数にTRUEを指定し、欠損を無視した状態で平均を求めます
mean(x, na.rm = TRUE)
```

## データフレーム
Expand Down
8 changes: 8 additions & 0 deletions references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,11 @@ @book { ezaki20
year = "2020",
URL = "http://id.ndl.go.jp/bib/030791751"
}
@book { R300000001-I031484010-00,
author = "北川源四郎, 竹村彰通 編 and 内田誠一, 川崎能典, 孝忠大輔, 佐久間淳, 椎名洋, 中川裕志, 樋口知之, 丸山宏 著",
title = "教養としてのデータサイエンス = Data Science as the Liberal Arts",
series = "データサイエンス入門シリーズ",
publisher = "講談社",
year = "2021",
URL = "http://id.ndl.go.jp/bib/031484010"
}
20 changes: 20 additions & 0 deletions renv.lock
Original file line number Diff line number Diff line change
Expand Up @@ -811,6 +811,26 @@
"vctrs"
]
},
"tidyr": {
"Package": "tidyr",
"Version": "1.2.0",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "d8b95b7fee945d7da6888cf7eb71a49c",
"Requirements": [
"cpp11",
"dplyr",
"ellipsis",
"glue",
"lifecycle",
"magrittr",
"purrr",
"rlang",
"tibble",
"tidyselect",
"vctrs"
]
},
"tidyselect": {
"Package": "tidyselect",
"Version": "1.1.2",
Expand Down
35 changes: 35 additions & 0 deletions visualization.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@
title: "グラフの作成"
---

```{r}
library(ggplot2)
```


[データをグラフに表現する](data.qmd#データをグラフに表現する)では、ヒストグラムと箱ヒゲ図を紹介しました。

## 1変数のデータの要約

代表値、ヒストグラムや箱ヒゲ図による表現から一歩進んで

ドット、蜂群、ヴァイオリンプロット、Sina、ハイブリッド、雨雲プロット

## 棒グラフ

## 散布図
Expand All @@ -11,3 +24,25 @@ title: "グラフの作成"
[Datasaurus](http://www.thefunctionalart.com/2016/08/download-datasaurus-never-trust-summary.html)の紹介。相関係数や回帰直線が同じであっても散布図の形状が異なる。

アンスコムの例

```{r}
anscombe
```

```{r}
anscombe_long <-
anscombe |>
tidyr::pivot_longer(
tidyselect::everything(),
names_to = c(".value", "set"),
names_pattern = "(.)(.)")
# anscombe_long |>
# dplyr::filter(set == 1) |>
# ggplot(aes(x, y)) +
# geom_point(color = "orange") +
# geom_smooth(method = lm, se = FALSE)
```



0 comments on commit c64f5ec

Please sign in to comment.