#author("2020-11-16T22:40:44+09:00","default:takataka","takataka") #author("2020-11-16T22:41:04+09:00","default:takataka","takataka") * データ分析 2020年度 ex08 [#xa9b83a6] &color(red){''工事中''}; //&color(red){''工事中''}; #contentsx ** ex08A [#kadaiA] ''回帰分析入門(1)'' - 表計算ソフトに頼ってやってみよう - > &size(13){''この課題そのものには点数は付きませんし,提出も不要です.しかし,あとでこの内容に関する小テストを行います.そのできや点数には影響しますので,必ず取り組んでください.質問は Teams 上でどうぞ.''}; < この課題についての解説動画: [[Data2020-08-movie2>https://web.microsoftstream.com/video/5c9253ca-d39f-4ba8-a287-32b65b7d200c]] ***スプレッドシートとデータの準備 [#d3d9dead] + [[ex08gorigori.csv>Data:ex08gorigori.csv]] を自分の PC にダウンロードしてください + [[Google Classroom 上のこの課題>https://classroom.google.com/w/MTYxODcxNTM2OTg0/tc/MjMwNTI5OTk3OTk1]]のスプレッドシートにこの授業で説明した手順でインポートしてください. ***問題の設定とデータの観察 [#l10c606a] インポートしたデータは,あるアイス販売店で集計した,1日ごとの平均気温(単位は[度])とその日のアイス売上数(単位は[個])を表したものです. 気温を &mathjax{x}; [度],アイス売上数を &mathjax{y}; [個] としたとき, &mathjax{y}; を &mathjax{x}; の式で表すことを考えてみましょう. そのような式が求まれば,平均気温からその日のアイス売上数を予測することができそうです. ここでは,その式として, #mathjax{{ y = ax+b }} という単純な直線の方程式を考えてみます. まずは,インポートしたデータの散布図を描きましょう - 横軸の範囲は [-5, 40],縦軸の範囲は [0, 130] としてください - 横軸縦軸それぞれにタイトルをつけてください.タイトルは,列の見出しと同じにするのがよいでしょう ***「予測値」列の作成 [#p2218692] 「シート1」に,上記の &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] //動画の中ではこの課題の続きとして別のデータでもやってねと言ってますが,別の課題とすることにしました. //[[ex08B>#kadaiB]] を参照してください. //** ex08B [#kadaiB] //''ex08Aのつづき'' //+ [[ex06mpi.csv>Data:ex06mpi.csv]] をダウンロードして,(工事中)[[Google Classroom 上のこの課題>https://classroom.google.com/c/MTYxODcxNTM2OTg0/a/MjIxNjc3MjEwNzgz/details]]のスプレッドシートにインポートしましょう + [[ex06mpi.csv>Data:ex06mpi.csv]] をダウンロードして,この課題のスプレッドシートにインポートしましょう + 横軸が「数学」,縦軸が「情報」の散布図を描きましょう.ただし,次のように設定してください. -- 横軸縦軸とも範囲を [0, 100] とする -- 横軸に「数学」,縦軸に「情報」とタイトルをつける -- トレンドラインを描く + 「LINEST関数の戻り値」と書いてあるセルの右隣のセルに,上記のトレンドラインの傾きと切片の値を求めるための式を書きましょう + 得られた傾きと切片の値をノート等にメモしておきましょう(有効数字を考えると,下の方の桁の値は不確かと考えられますが,とりあえずメモしといてください).また,2つのデータの間にどんな関係があるか,グラフと式を眺めて考えてみましょう.