# 課題レポート3: 基本的な統計処理を実装してみよう。

## 課題概要
- 1日毎の降水量を複数観測したとする。その時の降水量の平均値や分散を求めてみよう。

---
## 取り組み方
- 友人らと話し合って取り組んで構わないが、考察は自分自身の言葉で述べること。試して分かったこと、自身で解決できなかった部分等についてどう取り組んだか、といった過程がわかるように示すこと。考えを図表や文章を駆使して表現して報告する練習です。
  - ある事象について妥当と思われる表現が思い浮かばないのなら、そのことを先輩らに尋ねてみよう。

---
## レベル1「降水量の平均値を求めよ」
- 背景
  - [那覇市の2021年1月における日ごとの気象データ](https://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=91&block_no=47936&year=2021&month=1&day=&view=)が公開されている。このうち「1日ごとの降水量」の平均値を求めたい。
- 課題
  - 1日ごとの降水量をリストとして用意したとする。このリストを与えると平均値を返す関数を実装せよ。関数名を average とする。
- 補足
  - 2021年1月は1日〜31日まであるため31個の要素を持つリストとして用意できる。ただしデータの中には **--** のように数値ではない要素もある。レベル1の時点では数値データだけを処理したいことと、平均値を求めること自体は他のデータでも同一処理であることから、適当に数個の要素を持つリストを用意して確認するとよい。具体的には下記実行例のように5日分を用意することとしよう。
  - レポート
    - コードと実行結果を記載せよ。実行結果はVSCodeで実行した場合にはターミナル画面のコピペで良い。
- 実行例
```python
>>> daily_rains = [2.0, 0.0, 0.5, 3.0, 21.0]
>>> print(average(daily_rains))
5.3
```

---
## レベル2「降水量の分散を求めよ」
- 課題
  - 1日ごとの降水量を与えた時に、降水量の分散を求める関数を実装せよ。関数名を variance とする。
- 補足
  - 1日ごとの降水量を $x_i$、1日平均降水量を $\bar{x}$ とすると分散$s^2$は {eq}`variance` により求めることができる。
  ```{math}
  :label: variance
  s^2 = \frac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})^2
  ```
  - 平均値を求める関数はレベル1で実装済みである。関数内のコードをコピペするのではなく、関数を利用して良い。
  - レポート
    - コードと実行結果を記載せよ。実行結果はVSCodeで実行した場合にはターミナル画面のコピペで良い。
- 実行例
```python
>>> daily_rains = [2.0, 0.0, 0.5, 3.0, 21.0]
>>> print(variance(daily_rains))
62.7599999999999
```

```{note}
あらゆるプログラムは一度に全てを実装する必要はない。自分なりに分解し、実装して動作確認しやすい小さな部品を考えてみよう。どのような部品が必要かを洗い出し、それをどのように組み合わせるかを考えてみよう。これが整理の本質だ。
```

---
## レベル3「分散の意味を考察せよ」
- 背景
  - レベル2で分散を求めることができるようになったが、そもそも分散とはどのような値だろうか。分散の意味を咀嚼するためにいくつか異なるデータを与えて結果を観察することで考えてみよう。
- 課題
  - 以下のデータに対する平均値・分散をそれぞれ求め、どのように変化するかを観察せよ。これらの結果から分散がどのような意味を持つか考察せよ。
  - ケース1: 雨量データそのもの。
    - ``daily_rains = [2.0, 0.0, 0.5, 3.0, 21.0]``
  - ケース2: ケース1の各要素に5を足したもの。（つまり毎日の降雨量が5mm増えた状況を想定している）
    - ``daily_rains = [7.0, 5.0, 5.5, 8.0, 26.0]``
  - ケース3: ケース1の各要素を10倍にしたもの。（つまり毎日の降雨量が10倍に増えた状況を想定している）
    - ``daily_rains = [20.0, 0.0, 5.0, 30.0, 210.0]``
- 補足
  - 上記は最低限のケースを用意した。傾向を観察するためにより多くのケースを観察したいのであれば自由にやって構わない。
  - 考察は、分散を求める式から導いても良い。文章だけではなく図表を組み合わせても良い。
  - レポート
    - 3つのケースに対する平均と分散を記載せよ。
    - 結果から分散の意味を50字程度（最大200字）で述べよ。

---
## オプション課題例
- 降雨量データには ``--`` となっている箇所がある。その意味はサイト上に書いてあるが、今回のデータに限らず様々なデータセットにおいて「数値ではない値」が紛れ込んでいることがある。それらが文字列として紛れ込んでいるものを想定した場合、文字列を除外して平均・分散を求めるにはどうしたら良いだろうか。
