- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2022-10-25T00:50:52+09:00","default:takataka","takataka")
#author("2022-11-11T09:55:02+09:00","default:takataka","takataka")
* データ分析 2022年度 ex06 [#xa9b83a6]
&color(red){''工事中''};
//&color(red){''工事中''};
#contentsx
////////////////////////////////////////
** Quiz [#quiz]
授業開始後すぐに Moodle 上でQuiz(小テスト)を行う予定です.
授業時間中に Moodle 上でQuiz(小テスト)を行う予定です.
正確な開始時刻や実施法は授業時間中にお知らせします.
Moodle へのアクセスの仕方については,[[第1回のページ>../ex01#moodle]] へ
////////////////////////////////////////
** 練習1 [#renshu1]
この問題についての解説動画: [[Data2022-06-movie2>https://web.microsoftstream.com/video/a4533a9a-0dbb-423a-978a-4dcfcd3fbd98]] (13m)
>
''注意: 動画中で「シート1」という名前が付いているシートは,この問題では「main」という名前になっています.''
<
*** スプレッドシートとデータの準備 [#wda679df]
+ [[ex06mpi.csv>Data:ex06mpi.csv]] を自分の PC にダウンロードしてください
+ [[Google Classroom>https://classroom.google.com/c/NDk4MzU3NDcwOTMx]] 上のこの問題のスプレッドシートにこの授業で説明した手順でインポートしてください.
>
「ファイル」>「インポート」>「アップロード」>(CSVファイルをアップロード)>「新しいシートを挿入する」
<
-- インポートの仕方は,[[ex02練習1>../ex02#renshu1]] で説明している通りです.Excel で開くのではありません.
*** 元データの解釈 [#t6e0b4f5]
+ 「数学」,「物理」,「情報」の平均,標準偏差を計算しましょう
>
&color(blue){''注意'': 平均と標準偏差を求める関数については,[[ex02課題A>../ex02#kadaiA]] 参照};
<
+ それぞれのヒストグラムを描きましょう
+ 学籍番号「う06」のひとは,3科目とも80点ですが,どの科目の成績が「良い」と言えるか,平均,標準偏差,ヒストグラムから考えましょう
*** データの正規化 [#s19b146a]
+ CSVファイルをインポートしたシートに,「数学(正規化)」,「物理(正規化)」,「情報(正規化)」という3つの列を作り,それぞれの生徒の「数学」,「物理」,「情報」の点数を正規化した値を求める計算式を入れましょう.
>
データ &mathjax{x_1, x_2, \dots , x_N}; の平均値が &mathjax{\bar{x}}; で,標準偏差が &mathjax{s}; だったとすると,
#mathjax{{
z_n = \frac{(x_n - \bar{x})}{s}\qquad (n = 1, 2, \dots , N)
}}
として得られるデータ &mathjax{z_1, z_2, \dots , z_N}; の平均は &mathjax{0};,標準偏差は &mathjax{1}; になるのでした.
<
&color(blue){''注意'': スプレッドシートで上記の式を計算する場合,平均や標準偏差の値を一つ一つのセルの中の計算式で毎回計算するのは無駄ですね.「main」というシートにすでに算出した値がありますから,そのセルの値を利用しましょう('$'を付けて絶対参照にする).};
+ 正規化した値は,小数点以下の表示桁数が3になるように設定しよう.
メニューバー中の,「.0」の下に「←」が描かれたボタンと,「.00」の下に「→」が描かれたボタンで,表示桁数を調整できます.
*** 正規化したデータの解釈 [#f2254ba0]
+ 「数学(正規化)」,「物理(正規化)」,「情報(正規化)」それぞれのヒストグラムを描きましょう
+ 「main」に,「数学(正規化)」,「物理(正規化)」,「情報(正規化)」それぞれのヒストグラムを描きましょう
-- 一つの図に三つヒストグラムを重ねて描くのではなく,三つ別々の図を描きましょう
-- 横軸の範囲は -4 から 4 までにそろえておくとよいでしょう
-- パケットサイズ等はヒストグラムを解釈しやすいように修正しましょう
+ 次のものをノート等にメモしておきましょう
-- 学籍番号「う06」のひとの「数学(正規化)」,「物理(正規化)」,「情報(正規化)」の値
-- それらの値から,この生徒の「数学」「物理」「情報」の点数はどの科目が「良い」と言えそうか
////////////////////////////////////////
** 課題A [#kadaiA]
&color(red){''工事中''};
//&color(red){''工事中''};
''回帰分析入門(1)'' - 表計算ソフトに頼ってやってみよう -
この課題についての解説動画: [[Data2022-06-movie3>https://web.microsoftstream.com/video/82dce212-2eb5-4e87-9490-30ae1f47fa94]] (17m)
>
''注意: 動画中で「シート1」という名前が付いているシートは,この問題では「main」という名前になっています.''
<
***スプレッドシートとデータの準備 [#d3d9dead]
+ [[ex08gorigori.csv>Data:ex08gorigori.csv]] を自分の PC にダウンロードしてください
+ [[Google Classroom>https://classroom.google.com/c/NDk4MzU3NDcwOTMx]] 上のこの問題のスプレッドシートにこの授業で説明した手順でインポートしてください.
***問題の設定とデータの観察 [#l10c606a]
インポートしたデータは,あるアイス販売店で集計した,1日ごとの平均気温(単位は[度])とその日のアイス売上数(単位は[個])を表したものです.
気温を &mathjax{x}; [度],アイス売上数を &mathjax{y}; [個] としたとき, &mathjax{y}; を &mathjax{x}; の式で表すことを考えてみましょう.
そのような式が求まれば,平均気温からその日のアイス売上数を予測することができそうです.
ここでは,その式として,
#mathjax{{
y = ax+b
}}
という単純な直線の方程式を考えてみます.
まずは,インポートしたデータの散布図を描きましょう
- 横軸の範囲は [-5, 40],縦軸の範囲は [0, 130] としてください
- 横軸縦軸それぞれにタイトルをつけてください.タイトルは,列の見出しと同じにするのがよいでしょう
***「予測値」列の作成 [#p2218692]
「main」シートに,上記の &mathjax{a}; と &mathjax{b}; の値を表すセルがあります.
その値を使い, 個々の気温の値 &mathjax{x_n}; に対して &mathjax{ax_n + b}; という値を計算する列をつくりましょう.
列の見出しには,「予測値」と記しておいてください.
*** データと予測値の直線を重ねたグラフの作成 [#z183d2bd]
散布図に直線 &mathjax{y=ax+b}; を重ねたグラフを描きましょう.
先に作った散布図とは別に,新しいグラフを挿入します.
+ メニューから 「挿入」 > 「グラフ」 を選択
+ グラフエディタで ''「グラフの種類」を「折れ線グラフ」に''
+ 「データ範囲」として, ex08gorigori シートのデータ値が存在する範囲を選択(一番上の見出しも含めたらよい)
+ 横軸が行番号で3つの折れ線グラフが描かれる
+ グラフエディタの「設定」タブで,「X軸」を気温にして「系列」から気温を削除
+ 「カスタマイズ」タブで,「すべての系列に適用」を「アイス売上数」に切り替えて,「ポイントのサイズ」と「線の太さ」を適切に変更
+ 最初に作った方のグラフと同様に,横軸縦軸の範囲とタイトルを設定
+ ''&mathjax{a}; と &mathjax{b}; の値を表すセルの値を変更すると,予測値の直線のグラフが変化するはずです.&mathjax{a}; と &mathjax{b}; の値をいろいろ変えて,データにうまくあてはまるような値を探しましょう.''
*** ソフトに直線の式を求めさせてみる [#l16f43d6]
+ 先に描いた散布図の方のグラフエディタを開き,「カスタマイズ」タブの「カスタマイズ」 > 「系列」で,「トレンドライン」にチェックを付け,「ラベル」として「方程式を使用」を選択してみましょう
+ 散布図の方に直線が描かれ,ラベルとして直線の式が示されるはずです.
次回以降解説しますが,この直線は,この「気温」対「アイス売上数」のデータによくあてはまる(予測の誤りが少ない)ものになっています.
//+ その直線の傾きと切片の値を &mathjax{a, b}; のセルに書いてみましょう
+ 上記の直線の傾きと切片の値は,関数を使って求めることもできます.
以下のリンク先の文書も参考にしながら,「シート1」のセルF8, F9, F10にそれぞれ,SLOPE関数,INTERCEPT関数, LINEST関数を使った式を書いて,それらの値が求まることを確認しましょう.''引数の順番に注意''.
-- SLOPE関数: https://support.google.com/docs/answer/3094048
-- INTERCEPT関数: https://support.google.com/docs/answer/3093632
-- LINEST関数: https://support.google.com/docs/answer/3094249 この関数だけ他の2つの関数よりも多くの引数を指定できますが,ここでは他の2つと同じ引数にすれば ok です.
この関数は,SLOPEとINTERCEPTの機能を併せ持っており,それらと同じ2つの値を返すはずです.
+ ''得られた傾きと切片の値をノート等にメモしておきましょう''(有効数字を考えると下の方の桁の値は不確かですが,すべての桁の値をメモしといてください).また,気温とアイス売上数の間にどんな関係があるか,グラフと式を眺めて考えてみましょう.
*** 別のデータでも... [#za58c12e]
動画中ではこの課題の続きとして別のデータでもやってねと言ってますが,別の課題とすることにしました.
** おまけ課題 [#na8c1cd8]
//&color(red){''工事中''};
- [[Data/2022/omake]]
////////////////////////////////////////
** 宿題 [#homework]
&color(red){''次のことを次回の授業までに必ずやっておいてください.''};
+ [[ex06課題A>#kadaiA]]
+ [[ex07>../#ex07]] の &color(blue){★宿題★};