統計処理 統計とは:集団の個々の構成要素の分布を調べ、その集団の属性を数量的に把握すること。 また、その結果を数値や図表で表現したもの。(大辞泉より) ここでは,基本的な統計処理を取り扱う。 1.基本統計量 分布の中心に関する指標 平均値:データの合計÷データの個数。分布の重心でもある。 中央値(メジアン) :データを降順(あるいは昇順)にならべたとき,真ん中に位 置するデータの値。 最頻値(モード) :頻度のもっとも多いデータの値。 分布の広がりに関する指標 範囲:データの最大値と最小値の差。 分散: (データ - 平均)2 の平均 または, データ 2 の平均 - 平均 2 (この 2 つの量は同じもの。プリント最後尾参照) 標準偏差:分散の平方根。データと同じ単位を持った量になる。 2.例 toukei_kiso.c 1 //経営システム学科2年A組99番 金沢太郎 2 #include <stdio.h> 3 #include <math.h> 4 void main() { 5 double sintyo, taiju; 6 double s_sum = 0, s_var = 0, s_ave, s_max=0, s_min=300; 7 int cnt = 0; 8 FILE *fp; 9 10 printf(" 身長 体重\n"); 11 fp = fopen("toukei_data.csv", "r"); 12 while (fscanf(fp, "%lf,%lf\n", &sintyo, &taiju) != EOF) { 13 printf(" %6.1f %6.1f\n", sintyo, taiju); 14 cnt++; 15 s_sum += sintyo; 16 s_var += sintyo*sintyo; 17 if (sintyo > s_max) s_max = sintyo; 18 if (sintyo < s_min) s_min = sintyo; 19 } 1 20 21 22 23 24 25 26 27 28 29 30 31 } fclose(fp); s_ave = s_sum/cnt; s_var = s_var/cnt - s_ave*s_ave; printf("-----------------------------\n"); printf("最大 %6.1f\n", s_max); printf("最小 %6.1f\n", s_min); printf("平均 %6.1f\n", s_ave); printf("分散 %6.1f\n", s_var); printf("標準偏差%6.1f\n", sqrt(s_var)); printf("範囲 %6.1f\n", s_max - s_min); 3 行目:sqrt(平方根の計算する関数)を使用するときに必要 6 行目:身長の最大値の初期値(0)最小値の初期値(300)を設定 8 行目:ファイル構造体 fp の宣言 11 行目:ファイル(toukei.csv)を読み込みモード(r)で開く 12-19 行目:toukei.csv から身長と体重のデータを読み込みで処理するプロセス 12 行目:データを読みきるまで繰り返す。(EOF は End Of File の略) %lf,%lf\n ⇒ 実数データ,実数データ改行 の書式のデータを想定 14 行目:データ数のカウント 15 行目:身長の足し上げ (s_sum = s_sum + sintyo; と同じ) 16 行目:身長 2 の足し上げ (s_var = s_var + sintyo*sintyo; と同じ) 17 行目:身長の最大値の計算 18 行目:身長の最小値の計算 21 行目:身長の平均値の計算 22 行目:身長の分散の計算 ※分散の計算について データ x の平均を<x>と書く。 分散=<(x-<x>)2> =<x2-2x<x>+<x>2> =<x2>-2<x>2+<x>2 =<x2>-<x>2 2
© Copyright 2024 ExpyDoc