第14回の目標:プログラミングを通してデータの分析について理解を深める。
データの特徴を表す数値を代表値という。
代表値には、平均値や最頻値や中央値などがある。
データの和をデータの個数で割ったもの。
\( x_1, x_2, \cdots , x_n \) の平均値を\( \overline{x} \)とすると\( \overline{x} = \frac{1}{n}(x_1 + x_2 + \cdots + x_n) \)である。
例題1 パラメータとして数値からなる配列を引き受け、各数値の平均値を返す関数 myAverageを定義せよ
function myAverage(arr) {
let n = arr.length; // このようにしてパラメータの配列の要素数を取得できる
}
データで最も個数の多い値。これは主に質的データを扱うときに使うものである。
例:クラスの生徒が注文したTシャツのサイズ M, L, M, S, M, L, M ・・・最頻値はM
例題2 パラメータとして値が"りんご"or"みかん"or"ぶどう"からなる配列を引き受け、その最頻値を返す関数 myModeを定義せよ。ただし、最頻値が1つのケースで動けばよいとする
データを小さい順にならべたときに中央にくる値。データが奇数個であれば中央のデータの値であり、データが偶数個であれば中央に並ぶ2個の平均値である。
並び替えは以下のようにすることができる。
let array1 = [4,3,2]
array1.sort(); // このようにしてリストを小さい順に並び替えられる。
// この命令が実行されるとarray1は[2,3,4]になる
なお、配列.sort()では、要素を文字列に変換し、アルファベット順みたいな感じで並び替える。sort()に関数を渡すことで別の並び替えも可能である(高階関数を参照)が、あまり気にしなくてよい。
また、割り算は/で計算できるが、商はMath.floor( / )で、余りは%で求められる。
let x = 30 / 4; // xには7.5が代入される。
let y = Math.floor(30 / 4); // yには30を4で割った商の7が代入される。
let z = 30 % 4; // zには30を4で割った余りの2が代入される。
例題3 パラメータとして1桁の整数値からなる配列を引き受け、中央値を返す関数 myMedianを定義せよ
データを小さい順に並べたときに、データを4等分する位置にある3つの値をそれぞれ第1四分位数、第2四分位数、第3四分位数という。第2四分位数は中央値に等しい。
下のような箱ひげ図として表現されることが多い。
分散はデータの散らばり具合を表す代表値である。
\( x_1, x_2, \cdots , x_n \) の分散を\( s^2 \) とすると、\( s^2 = \frac{1}{n} \{ (x_1 - \overline{x})^2 + (x_2 - \overline{x})^2 + \cdots + (x_n - \overline{x})^2 \} \)である。
なお、上の式で登場する\( (x_1 - \overline{x}) , (x_2 - \overline{x}) \cdots , (x_n - \overline{x}) \)を偏差という。
例題4 パラメータとして数値からなる配列を引き受け、分散を返す関数 myVarianceを定義せよ
\( \sqrt{分散} \)を標準偏差という
なお、ルートは以下のように計算する。
let x = 16; y = Math.sqrt(x); //ルートx を計算してyに代入する。ここではyは4になる
\( (x_1, y_1), (x_2, y_2), \cdots ,(x_n, y_n) \)に対して\( \frac{1}{n} \{ (x_1 - \overline{x})(y_1 - \overline{y}) + (x_2 - \overline{x})(y_2 - \overline{y}) + \cdots + (x_n - \overline{x})(y_n - \overline{y}) \} \)を共分散といい、\( s_{xy} \)と書く。
\( s_{xy} \)とxの標準偏差\( s_x \) ,yの標準偏差\( s_y \) を用いて定義した \( r = \dfrac{s_{xy}}{s_x s_y} \)を相関係数という。
相関係数は\( -1 \leqq r \leqq 1 \)の範囲の値をとり、1に近いほど正の相関が強く、-1に近いほど負の相関が強い。また相関がないときは0に近い値をとる。
例題5 \( [ [x_1,y_1], [x_2,y_2], \cdots, [x_n,y_n] ] \)のようなデータ(長さ2の配列の配列)をパラメータとして受け取り、相関係数を返す関数myCCを定義せよ。
// 配列の配列の扱い方
let x = [[5,3], [6,2], [4,7]];
let y = x[0]; // yには配列xの0番目つまり、[5,3]が代入される。yは配列である。
let z = x[0][1]; // zには配列x[0]の1番目つまり3が代入される。zは配列でなく値である。