表計算ソフトを用いたデータの整理

Last modified: Wed Oct 20 13:56:10 JST 2010

ここでは授業中にデータの整理の章で紹介した統計量のいくつかを 表計算ソフト(OpenOffice.org Calc)を用いて求める方法を説明します。

OpenOffice.org についての基本的な情報は情報科学演習で学習するとし、 あらかじめOpenOffice.org 3.2がインストールされているものとして説明します。 (無償で利用できるということで、このソフトで紹介します。MS Excelでも ほぼ同様にできると思います。) OSとしてはMS Windows XPの利用を前提に書いていますが、他のOSでもほぼ同様と思います。

1. 1次元のデータ

ここでは具体的な1次元データを用いて、度数分布表やヒストグラム、 平均や分散の求め方を説明します。

以下の例題を考えましょう。

例題1. 次の資料は、ある男子40人の身長を表す。

  172.8   164.8   175.8   171.6   161.7   175.0   169.4   158.2   154.1   169.4
  181.1   167.0   177.9   180.8   168.6   165.0   167.5   160.2   170.1   173.9
  166.5   169.7   163.9   161.2   171.2   168.8   175.3   157.4   164.1   174.7
  175.1   168.5   170.3   177.1   177.0   172.3   175.1   178.4   178.5   167.2
(1) 度数分布表にまとめよ。ただし、階級の幅は3cmとし、154.5cmを階級の1つとせよ。
(2) ヒストグラムをつくれ。
(3) 平均および分散、標準偏差を求めよ。

hyo1-1

解法: まずはデータの入力です。
OpenOffice.org Calc を起動してください。
次にA列1行のセル(以下A1と略します)を左クリックしアクティブにします。 これで A1 は太枠で囲まれ入力可能となりました。
ここに、身長と入力します。
次に、A2をアクティブにして 172.8 と入力します。同様に A3 に 164.8 と、A4 に 175.8 と、 最後の A41 に 167.2 まで入力します。
このとき、左の図のようになっていると思います。 (アクティブなセルの位置は違っているとは思います。)
ここで、これを保存することを忘れないでください。 ここでは data1.csv と保存したとしましょう。 (ここからdownloadできます。)
(CSV形式はデータを保存するには、メニューバーの「ファイル(F)」メニューから「名前を付けて保存(A)」を選択したあと適当な名前を付けて「ファイルの種類」を「テキスト csv」を選び、適当な名前をつけて保存します。 「テキストのエキスポート」はOKとして構いません。)

(1) 度数分布表の作り方

まず、B1のセルに 階級 と入力します。 「階級の幅は3cmとし、154.5cmを階級の1つ」とあり、このデータの中での最小値は154.1なので、 B2 に 152.9 と入力します。
次に、B3 に 155.9 と入力してもよいのでが、ここでは =B2+3 と入力することにしましょう。 これは B2 のセルの数値に 3 を加えよという命令を意味するので、155.9 と出力されます。
次のB4には =B3+3 と入力すればよいのですが、ここではもう一つ技を使って、 B3 のセルをコピーし B4 に 貼り付けします。(このためには、B3 をアクティブにし右クリックし「コピー(C)」を 選択します。 次に B4 をアクティブにし右クリックし「貼り付け(P)」を選択すればできます。) このとき、B4 のセルには =B2+3 ではなく =B3+3 と入力したことになります。
データの最大値は 181.1 なので 182.9 までの11の階級が必要となりますから引き続き B5 から B12 ま で貼り付けを行います。(B4 から B12 まで左クリックでドラッグしておいて、右クリックから「貼り付け(P)」を 選択する方法もあります。)

C1 に 度数 と入力します。
度数を出したいセルの範囲をマウスで指定します。 ここでは、C13 から C2 まで左クリックでドラッグして囲みます。
ここで、C2は152.9の隣ですが、実際には152.9以下の区間を表します。 また155.9の隣のC3は、152.9より大きく155.9以下の区間を表します。 (これで153以上156未満の区間を表すと考えます。) 以下同様です。
最後のC13の隣には区間の値は入っていませんが、ここは182.9より上の区間を表します。
そして、C2のセルに以下のような関数を書きます。

    =FREQUENCY(A2:A41,B2:B12)
これを入力した後は、単にエンターキー (Enter)を押すのではなく、 シフトキー(Shift)とコントロールキー(Ctrl)を押しながら、 エンターキー(Enter)を押して下さい。(これは、この関数が配列関数であるためです。)
ここでは、ファイルを保存名の拡張子をOpenOffice.org Calcの標準である .ods とし、 data1.ods と保存する必要があります。 (data1.csv のまま保存すると関数を用いて書いた書式が、 数値のみで保存されてしまいます。)
このためには「ファイルの種類」で「ODF 表計算ドキュメント(.ods)」を選び保存します。

右下の図のB1からC13のセルのようになっているはずです。

data1-2

D1 に 相対度数 と入力します。
D2 に =C2/40 と入力します。 これは C2 のセルの数値を 40 で割れという命令を意味します。
次のC2 のセルをコピーし、C3 から C12 まで左クリックでドラッグしておいて、 右クリックから「貼り付け(P)」を選択します。
これで、相対度数が求まります。
もし、小数点以下の桁数が足りない場合は C2 から C12 まで左クリックでドラッグしておいて、 右クリックし「セルの書式設定(F)」を左クリックし セルのフォーマットのウィザード を呼び出し、「数」のタブのオプションの「小数点以下の桁数(D)」を 3 に変更して、 「OK」を左クリックします。
ここでファイルを上書き保存しておきましょう。 (メニューバーの「編集(E)」の下にあるflopを左クリックします。)

(2) ヒストグラムの作り方

B2 から C13 まで左クリックでドラッグしておいて、メニューバーの「挿入(I)」→「グラフ(A)」で グラフのウィザードを呼び出し、グラフの種類選択で棒線とし、「次へ(N)>>」→ 「最初の列を項目名に引用(I)」にチェックを入れ、「完了(F)」とすれば、図のような棒グラフが できます。
ここでも、ファイルを上書き保存しておきましょう。

(3) 平均および分散の求め方

平均は =AVERAGE(A2:A41) で、分散は =VARP(A2:A41) で求まります。
偏準偏差は分散の平方根なので図のように分散を C19 で求めた場合、 求めたいセルに =SQRT(C19) と記入すれば求めることが出来ます。 (標準偏差は =STDEVP(A2:A41) と入力しても求まります。)
小数点以下の桁数が足りない場合は(1)の最後の部分のように増やしてください。  □

注意. R という無償で使える統計ソフトを用いるともう少しきれいにかけます。
青木氏による「R による統計処理」( http://aoki2.si.gunma-u.ac.jp/R/frequency.html )の data1-R 関数 freq() で度数分布表を関数 hist() でヒストグラムを求めると、 以下のようになります。

          度数 相対度数 累積相対度数
[153,156)    1      2.5          2.5
[156,159)    2      5.0          7.5
[159,162)    3      7.5         15.0
[162,165)    3      7.5         22.5
[165,168)    5     12.5         35.0
[168,171)    8     20.0         55.0
[171,174)    5     12.5         67.5
[174,177)    6     15.0         82.5
[177,180)    5     12.5         95.0
[180,183)    2      5.0        100.0
● OpenOffice.org CalcやExcelは端数の処理に曖昧な点があるなど、研究に用いるべきではないとされているようです。 研究で用いる場合は、R など統計ソフトを用いてください。 CSV形式のファイルを編集したり、日常の統計に使用するに、表計算ソフトは便利な道具です。

演習問題1. 教科書p.31の例題1のデータに対して、次を考察せよ。
(1) 度数分布表にまとめよ。ただし、階級の幅は5時間とし、1472.5時間を階級の1つとせよ。
(2) ヒストグラムをつくれ。
(3) 平均および分散、標準偏差を求めよ。

2. 2次元のデータ

ここでは具体的な2次元データを用いて、相関係数と共分散、散布図と回帰直線の求め方 を説明します。

以下の例題を考えましょう。

例題2. 次の資料は、あるクラス60人の中間テストx と 期末テストy の2次元データ (x ,y ) で ある。

  ( 65, 84)   ( 70, 79)   ( 54, 60)   ( 78, 65)   ( 89, 68)   ( 65, 67)   ( 89, 80)
  ( 95,100)   ( 59,  6)   ( 73, 91)   ( 28, 60)   ( 93, 68)   (100, 84)   ( 68, 62)
  ( 88, 83)   ( 26, 10)   ( 95, 89)   ( 73, 82)   ( 66, 59)   ( 56, 55)   ( 64, 29)
  ( 66, 64)   ( 65, 59)   ( 87, 97)   ( 53, 73)   ( 54, 10)   ( 69, 85)   ( 71, 30)
  ( 89, 87)   ( 61, 94)   ( 37, 60)   ( 89, 82)   ( 73, 85)   ( 62, 70)   ( 32, 33)
  ( 39, 84)   ( 46, 11)   ( 89, 47)   ( 45, 98)   ( 51, 43)   ( 56, 59)   ( 80, 82)
  ( 65, 88)   ( 78, 87)   ( 75, 71)   ( 70, 78)   ( 95, 73)   ( 59, 77)   ( 45, 76)
  ( 85, 89)   ( 37, 51)   ( 65, 73)   ( 62, 58)   ( 91, 93)   ( 55, 79)   ( 91, 85)
  ( 58, 75)   ( 47, 34)   ( 77, 65)   ( 63, 71)
(1) 相関係数と共分散を求めよ。
(2) 散布図をかけ。
(3) (2)の図にy x への回帰直線を書き入れ、その方程式を求めよ。

解法: まずはデータの入力をします。
A1 に 中間テスト, B1 に 期末テスト と入力します。
次に、A2 に 65, B2 に 84 と入力します。同様に A3 に 70, B3 に 79 と、 最後の A61 に 63, B61 に 71 まで入力します。
ここでは、これを data2.csv と保存したとしましょう。 (ここからdownloadできます。)

(1) 相関係数と共分散の求め方

相関係数は =CORREL(A2:A61; B2:B61) で求まります(D2のセルで求めたとします)。
共分散を求めるためには、相関係数に中間テストx の標準偏差と期末テストy の 標準偏差を掛けて求めます。
このため、C3 に x標準偏差 と入力し、D3 に =STDEVP(A2:A61) と入力して求めます。
同様に、C4 に y標準偏差 と入力し、D4 で期末テストの標準偏差を求めます。
C5 に 共分散 と入力し、D5 で =D2*D3*D4 と入力して求めます。
(共分散は =COVAR(A2:A61; B2:B61) と入力しても求まります。)
ここでは、ファイルを保存名の拡張子を .ods とし、data2.ods として保存します。

data1-2

(2) 散布図のかき方

A2 から B61 まで左クリックでドラッグしておいて、 メニューバーの「挿入(I)」→「グラフ(A)」でグラフのウィザードを呼び出し、 グラフの種類選択で散布図を左クリックし「完了(F)」を左クリックすれば、 右の図のような散布図ができます。(位置はドラッグして移動すれば変更できます。)
ここでも、ファイルを上書き保存しておきましょう。

(3) 回帰直線について

散布図を左クリックした後、青色のプロット点のどれでも1つを左クリックすると、 プロット点がすべて緑色の四角に変わます(変わらない場合は、 プロットが緑色になるまでクリックし直して下さい)。
次に、メニューバーの「挿入(I)」→「トレンド線(N)」でデータ系列'列B'用トレンド線(回帰曲線)のウィザードを呼び出し、 タイプのタブで 回帰の種類 で「線形(L)」を選択し、 等式 で「等式を表示(E)」にチェックを入れ「OK」を左クリックすると、 回帰直線が描かれ、回帰直線の方程式が現れます。
方程式の係数の小数点以下の桁数が足りない場合は、方程式を右クリックして「トレンド線の方程式の書式(A)」 を左クリックし、出てきたウィザードの 数 のタブの 分類(C) の「数字」を 選択しオプションの「小数点以下の桁数(D)」を 5 くらいに変更して、 「OK」を左クリックします。
右の図のようになったでしょうか(方程式の係数の桁数は違うかもしれません)。  □

演習問題2. 教科書p.49の練習問題 2-A 1.を OpenOffice.org Calc を用いて解いて解け。
data2-R g(桁数も教科書の解答と同程度以上まで導いてください。 回帰直線が f(x)=0.0784x-7.8233 になったでしょうか。)

参考. R の plot() の関数を使って例題2 (2) の散布図を書くと右のようになります。
もちろん、Rcmdr パッケージにある関数 scatterplot() を用いれば回帰直線も書き入れることが出来ます。
(関数 scatterplot の部分は金子 邦彦 先生の研究室 Web ページ http://www.db.is.kyushu-u.ac.jp/rinkou/r/rcommand.html を参考にしました。)

お詫び. この作成者自身は表計算ソフトや R について初心者以下なので、 もっと適切なやり方があるかと思います。
受講生の皆さんそれぞれが自身で統計ソフトを使う技術を向上させていくことを 期待します。