入力方法を選んでください。「生データから作る」はデータの列から度数分布表を自動作成し、「度数分布表を直接入力」はすでにある表の値をそのまま入力します。
このページでできること
- 身長・テストの点数・通学時間などの生データ(カンマや空白の区切り)を貼り付け、階級の幅と最初の階級の下限を決めるだけで、度数分布表(階級・階級値・度数・相対度数・累積度数・累積相対度数)を自動で作成できます
- すでにある度数分布表(階級の下限・上限・度数)を直接入力して計算することもできます
- 階級値からの平均値の推定(「(階級値 × 度数)の合計 ÷ 度数の合計」)を、約分済みの分数(厳密値)と小数の両方で表示。最頻値(モード)・中央値を含む階級も求めます
- ヒストグラム(柱状グラフ)と度数折れ線を自動で描画し、PNG・SVGで保存できます
- 「階級・度数・相対度数」など中1「データの活用」の用語のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
テストの得点を10点ごとの階級に分けた度数分布表やヒストグラムは、成績資料の定番です。平均点が同じ60点でも、「60点前後に山が1つ」なのか「30点台と90点台に山が2つ」なのかで、クラスの状況はまったく違います。
相対度数に直せば、人数の違うクラスや学年どうしでも分布を公平に比べられます。模試の成績表で「自分の得点がどの帯に入るか」を示すグラフも、この度数分布の考え方で作られています。
ヒストグラムは、製造業の品質管理で使われる基本道具「QC七つ道具」の1つに数えられています。製品の寸法や重さを測って度数分布にすると、ばらつきの中心や広がり、「規格の上限・下限からはみ出しそうな傾向」が目で見てわかります。
分布の山が2つに割れていれば「2台の機械の設定がずれているのでは」というように、不良の原因探しの手がかりにもなります。
国勢調査の年齢別人口や、世帯の所得の分布は、度数分布表の形で公表されています。所得のように偏りの大きいデータでは、一部の大きな値に引っ張られて平均値が中央値より高くなることが知られていて、「平均〇〇万円」という数字だけでは実態を読み違えることがあります。
度数分布表なら「どの階級に一番多くの世帯がいるか(最頻値の階級)」「真ん中の世帯はどの階級か(中央値を含む階級)」まで見えるので、分布の全体像から判断できます。
気象の分野では、観測した雨量や気温のデータを階級に分けて「1時間に30mm以上の強い雨が年に何回あったか」のように整理します。度数分布にすることで、年ごと・地域ごとの傾向の違いや、極端な階級の頻度の変化が比べられます。
防災の計画は「どのくらいの強さの現象が、どのくらいの頻度で起こるか」という分布の情報を土台にしています。
学校の体力テスト(50m走・ハンドボール投げなど)の全国結果は、記録を階級に分けた度数分布表の形で公表されています。自分の記録がどの階級に入るかを見れば、「全体の中でどのあたりか」が累積相対度数からわかります。
健康診断の身長・体重・血圧などの「基準範囲」づくりでも、多くの人のデータの分布を調べることが出発点になっています。
式とグラフ
用語・記号の解説
記号
| \(n\) | エヌ | 度数の合計(データ全体の個数)を表すのに使われる文字。number(数)の頭文字です。 |
| \(f\) | エフ | 度数(その階級に入るデータの個数)を表すのに使われる文字。frequency(度数・頻度)の頭文字です。 |
| \(r\) | アール | 相対度数を表すのにこのページのコピペ用数式で使っている文字。relative frequency(相対度数)の頭文字です。 |
| \(a,\ b\) | エー・ビー | 階級の下限(〇以上の〇)と上限(〇未満の〇)。「決まった数」を表すときはアルファベットの最初の方の文字 \(a,\ b,\ c\) を使う慣例があります。 |
| \(m\) | エム | 階級値(階級の真ん中の値)を表すのにこのページで使っている文字。middle(真ん中)や midpoint(中点)の頭文字です。 |
| \(\bar{x}\) | エックスバー | 平均値を表す記号。データの値を表す文字 \(x\) の上に、平均を表す横棒(バー)を付けます。統計の分野で広く使われる書き方です。 |
用語
| 度数分布表 | どすうぶんぷひょう | データをいくつかの階級(区間)に分け、それぞれの階級に入るデータの個数(度数)を数えて整理した表。データ全体の様子(分布)をつかむための、統計の基本の道具です。 |
| 階級 | かいきゅう | データを区切る1つ1つの区間のこと。例えば通学時間なら「0分以上5分未満」「5分以上10分未満」…のように、同じ幅で切れ目なく区切るのが普通です。 |
| 階級の幅 | かいきゅうのはば | 1つの階級の区間の大きさ。「10分以上15分未満」なら幅は 5 分です。幅を変えると表やヒストグラムの見え方も変わります。 |
| 階級値 | かいきゅうち | その階級の真ん中の値。(下限 + 上限)÷ 2 で求めます。「10分以上15分未満」の階級値は 12.5 分です。度数分布表から平均値を推定するときに、階級の代表として使います。 |
| 度数 | どすう | その階級に入るデータの個数。人数・回数・個数など、数えたものの単位で表します。 |
| 相対度数 | そうたいどすう | その階級の度数が全体に占める割合。度数 ÷ 度数の合計 で求め、普通小数で書きます。全部の階級の相対度数を足すと 1 になります。 |
| 累積度数 | るいせきどすう | 最初の階級からその階級までの度数を全部足した値。「〇未満のデータが何個あるか」がすぐわかります。 |
| 累積相対度数 | るいせきそうたいどすう | 最初の階級からその階級までの相対度数を全部足した値(累積度数 ÷ 度数の合計)。「〇未満のデータが全体の何割か」がわかります。最後の階級では 1 になります。 |
| 以上 | いじょう | 「10以上」は10を含みます。階級の境界のデータをどちらに入れるか迷わないための決まりで、「10以上15未満」の階級には 10 ちょうどのデータが入ります。 |
| 未満 | みまん | 「15未満」は15を含みません。だから「10以上15未満」の階級に 15 ちょうどのデータは入らず、1つ上の「15以上20未満」に入ります。 |
| ヒストグラム | ヒストグラム | 度数分布表を柱状のグラフにしたもの(柱状グラフ)。横軸に階級、縦軸に度数をとり、長方形の柱を隙間なく並べます。データの散らばり方(分布の形)がひと目でわかります。 |
| 度数折れ線 | どすうおれせん | ヒストグラムの各柱の上の辺の真ん中(階級値の位置)を順に線で結んだ折れ線グラフ。両端は、度数0の階級があるものとして横軸まで下ろします。2つの分布を重ねて比べるときに便利です。 |
| 分布 | ぶんぷ | データがどのあたりに多く、どのあたりに少ないかという「散らばり方」のこと。度数分布表やヒストグラムは、この分布を見るための道具です。 |
| 代表値 | だいひょうち | データ全体の特徴を1つの数値で代表させたもの。平均値・中央値・最頻値がよく使われます。 |
| 平均値 | へいきんち | データの値を全部足して、データの個数で割った値。度数分布表からは(階級値 × 度数)の合計 ÷ 度数の合計 で推定します。 |
| 中央値 | ちゅうおうち | データを小さい順に並べたとき、ちょうど真ん中にくる値(メジアン)。データの個数が偶数のときは、真ん中の2つの値の平均です。度数分布表では「中央値がどの階級に入るか」を累積度数で調べます。 |
| 最頻値 | さいひんち | 最も多く現れる値(モード)。度数分布表では、度数が最も大きい階級の階級値を最頻値とします。 |
| 生データ | なまデータ | 集計する前の、測ったままの1つ1つのデータのこと。生データを度数分布表に整理すると全体の様子が見やすくなる代わりに、1つ1つの値の情報は失われます。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 以上・未満(小学4〜5年) |
|
| 平均値(小学5年〜中学1年) |
|
| 割合(小学5年) |
|
| 分数と小数(小学5年〜中学1年) |
|
| 代表値(小学6年〜中学1年) |
|
Excelで計算する方法
| ある階級の度数 f | 6 |
| 度数の合計 n | 20 |
| 相対度数 r = f ÷ n | =B1/B2 |
| 階級の下限 a | 10 |
| 階級の上限 b | 15 |
| 階級値 m = (a + b) ÷ 2 | =(B1+B2)/2 |
| 階級値1(0以上5未満) | 2.5 |
| 階級値2(5以上10未満) | 7.5 |
| 階級値3(10以上15未満) | 12.5 |
| 階級値4(15以上20未満) | 17.5 |
| 階級値5(20以上25未満) | 22.5 |
| 階級値6(25以上30未満) | 27.5 |
| 度数1 | 1 |
| 度数2 | 5 |
| 度数3 | 6 |
| 度数4 | 4 |
| 度数5 | 3 |
| 度数6 | 1 |
| (階級値 × 度数)の合計 | =SUMPRODUCT(B1:B6,B7:B12) |
| 度数の合計 n | =SUM(B7:B12) |
| 平均値の推定 | =B13/B14 |
| データ1 | 3 |
| データ2 | 5 |
| データ3 | 8 |
| データ4 | 12 |
| データ5 | 14 |
| データ6 | 17 |
| データ7 | 22 |
| データ8 | 26 |
| 0以上5未満の度数 | =COUNTIFS(B1:B8,">=0",B1:B8,"<5") |
| 5以上10未満の度数 | =COUNTIFS(B1:B8,">=5",B1:B8,"<10") |
| 10以上15未満の度数 | =COUNTIFS(B1:B8,">=10",B1:B8,"<15") |
1つ目の表は相対度数の例で、答えは 0.3 になります。2つ目の表は階級値の例で、答えは 12.5 です。
3つ目の表は、このページの計算機の例(通学時間・20人)の平均値の推定です。SUMPRODUCT は「対応するセルどうしを掛けて足す」関数で、(階級値 × 度数)の合計が一度に計算でき、答えは 14 になります。
4つ目の表は、生データから各階級の度数を数える例です。COUNTIFS は「条件に合うセルの個数を数える」関数で、「10以上」と「15未満」の2つの条件を並べると、その階級の度数が数えられます。
Googleスプレッドシートで計算する方法
| ある階級の度数 f | 6 |
| 度数の合計 n | 20 |
| 相対度数 r = f ÷ n | =B1/B2 |
| 階級の下限 a | 10 |
| 階級の上限 b | 15 |
| 階級値 m = (a + b) ÷ 2 | =(B1+B2)/2 |
| 階級値1(0以上5未満) | 2.5 |
| 階級値2(5以上10未満) | 7.5 |
| 階級値3(10以上15未満) | 12.5 |
| 階級値4(15以上20未満) | 17.5 |
| 階級値5(20以上25未満) | 22.5 |
| 階級値6(25以上30未満) | 27.5 |
| 度数1 | 1 |
| 度数2 | 5 |
| 度数3 | 6 |
| 度数4 | 4 |
| 度数5 | 3 |
| 度数6 | 1 |
| (階級値 × 度数)の合計 | =SUMPRODUCT(B1:B6,B7:B12) |
| 度数の合計 n | =SUM(B7:B12) |
| 平均値の推定 | =B13/B14 |
| データ1 | 3 |
| データ2 | 5 |
| データ3 | 8 |
| データ4 | 12 |
| データ5 | 14 |
| データ6 | 17 |
| データ7 | 22 |
| データ8 | 26 |
| 0以上5未満の度数 | =COUNTIFS(B1:B8,">=0",B1:B8,"<5") |
| 5以上10未満の度数 | =COUNTIFS(B1:B8,">=5",B1:B8,"<10") |
| 10以上15未満の度数 | =COUNTIFS(B1:B8,">=10",B1:B8,"<15") |
Pythonで計算する方法
from fractions import Fraction
# 生データ(例:クラス20人の通学時間・分)
data_values = [5, 12, 8, 14, 3, 22, 15, 9, 11, 26,
7, 14, 19, 6, 13, 24, 10, 16, 21, 18]
class_width = Fraction(5) # 階級の幅
first_lower = Fraction(0) # 最初の階級の下限
data_values = [Fraction(v) for v in data_values]
class_count = max(int((v - first_lower) / class_width) for v in data_values) + 1
# 各データを「以上〜未満」で階級に振り分ける
freqs = [0] * class_count
for v in data_values:
freqs[int((v - first_lower) / class_width)] += 1
total = sum(freqs)
mid_times_freq_sum = Fraction(0)
print("階級 / 階級値 / 度数 / 相対度数")
for i, f in enumerate(freqs):
lower = first_lower + i * class_width
upper = lower + class_width
midpoint = (lower + upper) / 2
mid_times_freq_sum += midpoint * f
print(f"{lower}以上{upper}未満 / {float(midpoint)} / {f} / {float(Fraction(f, total))}")
estimated_mean = mid_times_freq_sum / total
print(f"平均値の推定(分数): {estimated_mean}")
print(f"平均値の推定(小数): {float(estimated_mean)}")
print(f"生データの平均値: {float(sum(data_values) / len(data_values))}")
数式記述言語(LaTeX等)での書き方(コピペ可)
r = f ÷ n
r = \dfrac{f}{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>r</mi>
<mo>=</mo>
<mfrac><mi>f</mi><mi>n</mi></mfrac>
</mrow>
</math>
r = f/n
r = f/n
r := f/n;
r = f/n;
r = f/n
m = (a + b) ÷ 2
m = \dfrac{a + b}{2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>m</mi>
<mo>=</mo>
<mfrac>
<mrow><mi>a</mi><mo>+</mo><mi>b</mi></mrow>
<mn>2</mn>
</mfrac>
</mrow>
</math>
m = (a + b)/2
m = (a + b)/2
m := (a + b)/2;
m = (a + b)/2;
m = (a + b)/2
x̄ = (m₁×f₁ + m₂×f₂ + … + mₖ×fₖ) ÷ n
\bar{x} = \dfrac{m_1 f_1 + m_2 f_2 + \cdots + m_k f_k}{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mover><mi>x</mi><mo>¯</mo></mover>
<mo>=</mo>
<mfrac>
<mrow>
<msub><mi>m</mi><mn>1</mn></msub><msub><mi>f</mi><mn>1</mn></msub>
<mo>+</mo>
<msub><mi>m</mi><mn>2</mn></msub><msub><mi>f</mi><mn>2</mn></msub>
<mo>+</mo><mo>⋯</mo><mo>+</mo>
<msub><mi>m</mi><mi>k</mi></msub><msub><mi>f</mi><mi>k</mi></msub>
</mrow>
<mi>n</mi>
</mfrac>
</mrow>
</math>
bar x = (m_1 f_1 + m_2 f_2 + cdots + m_k f_k)/n
Total[m*f]/Total[f]
xbar := add(m[i]*f[i], i = 1..k)/n;
xbar = sum(m.*f)/sum(f);
x̄ = (m_1 f_1 + m_2 f_2 + … + m_k f_k)/n
ChatGPT に聞いて計算してもらう方法
あなたは数学(データの活用・統計)の計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 次のデータを、最初の階級の下限0・階級の幅5の「以上〜未満」の階級に分けて、度数分布表を作ってください。 データ: 5, 12, 8, 14, 3, 22, 15, 9, 11, 26, 7, 14, 19, 6, 13, 24, 10, 16, 21, 18 次の内容をそれぞれ示してください。 1. 度数分布表(階級・階級値・度数・相対度数・累積度数・累積相対度数) 2. 階級値からの平均値の推定(約分済みの分数と小数の両方で) 3. 最頻値(モード)と、中央値を含む階級 4. 生データから直接計算した平均値と、推定値とのずれ Pythonでは標準ライブラリの fractions モジュールを使って厳密に計算し、計算に使った式と実行結果の数値を示してください。
計算ドリル(演習問題)
このページの表と式を、自分の手で計算できるようになるための演習問題です。
次の度数分布表(クラス10人の通学時間)を使って、問1〜問6に答えましょう。
0分以上10分未満 … 3人
10分以上20分未満 … 5人
20分以上30分未満 … 2人
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
