2007-10-31

平均

  1. 前回の回答例
    Selection.Cellsを使って、プログラムを開始する前に選択していたセルから計算するようにしておきます。

    Sub 練習()
    Dim x() As Single, wa As Single, i As Integer, n As Integer
    i = 1
    Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1))
      i = i + 1
    Loop
    n = i - 1
    Selection.Cells(n + 1, 1) = "データの個数"
    Selection.Cells(n + 1, 2) = n

    ReDim x(n)
    For i = 1 To n
      x(i) = Selection.Cells(i, 1)
    Next i
    wa = 0
    For i = 1 To n
      wa = wa + x(i)
    Next i
    Selection.Cells(n + 2, 1) = "データの合計"
    Selection.Cells(n + 2, 2) = wa

    End Sub

  2. 今回作ったプログラムをもう一度実行すると、今度は7番目のセルまで空欄で無いので、データは7個だと誤解して、7番目の"データの個数"も足そうとしてエラーになります。従って、プログラムを「セルが空欄でなく、かつ数字」の間だけ繰り返すように修正しましょう。二つの条件が同時に成立することは And を使って表します。

    Sub 練習()
    i=1
    do while selection.cells(i,1) <> "" And IsNumeric(selection.Cells(i, 1))
      i=i+1
    loop
    n=i-1
    selection.cells(n+1,1)="データの個数"
    selection.cells(n+1,2)=n
    End Sub

    のように書きます。二つの条件の片方が成立すれば良いときには Or を使います。

  3. ReDimは便利ですが、
     dim x() as single
     redim x(1)
     x(1)=1
     redim x(2)
    のように途中で変更すると、それまで覚えていたx(1)=1は壊れてしまいます。気をつけてください。

  4. 簡単なデータの集計法を勉強します。次はA組の身長のデータです。
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175

    課題1

    このデータをExcelに貼り付けて、平均を求めてみましょう。平均を求めるには
    ・データの個数を求めて
    ・データの合計を計算して
    ・合計をデータの個数で割ります。

  5. 次にB組の身長の平均も計算してみましょう。
    160
    162
    164
    166
    168
    170
    172
    174
    176
    178
    180
    先ほどのクラスと平均は同じく170ですが、このクラスの方が散らばりが大きいですね。 この散らばり具合を数字で表して見ましょう。

    課題2

    先ほど作った平均を求めるプログラムの後に、散らばり具合を計算するプログラムを書き足しましょう。
    ・まずそれぞれのデータから、既に求めた平均を引いてそれぞれのデータの右に表示しましょう。
    160-10
    162-8
    164-6
    166-4
    168-2
    1700
    1722
    1744
    1766
    1788
    18010
    ・これをそのまま足したのではプラスとマイナスが打ち消しあって0になってしまうので、2乗してから足しましょう。
    ・合計したものをデータの個数で割ります。

    A組なら10、B組なら40になった筈です。
    これを分散と言います。

  6. B組のばらつきはA組の2倍なのですが、分散は2乗してから足しているために4倍になっています。
    そこで分散の平方根を求めましょう。VBAでは平方根はsqr()関数を使います。
    分散の平方根のことを標準偏差と言います。
平均だけでなく分散、標準偏差はデータ解析の基礎として重要です。必ず覚えてください。
今回はBasicの練習のためにVBAを使って計算しましたが、Excelの関数でも計算できます。

0 件のコメント: