2012-12-06

特性値の計算

先週の課題の続きです。 先週欠席した人は先週のブログを先に読んでください。
また、前々回に説明した準備作業を毎回行ってください。
今日は 'で始まる文章の部分を、自分でマクロを書いてください。

先週の課題

sub 身長と座高()
dim x(20)
for j=1 to 20
  x(j)=cells(j+1,2)
next j
wa=0
for j=1 to 20
  wa=wa+x(j)
next j
cells(23,1)="合計"
cells(23,2)=wa
end sub

身長の平均

このプログラムにどんどん続きを書いていきましょう。
まず平均を求めるために、身長の合計を20で割って、
身長の平均
という変数に代入します。

sub 身長と座高()
dim x(20)
for j=1 to 20
  x(j)=cells(j+1,2)
next j
wa=0
for j=1 to 20
  wa=wa+x(j)
next j
cells(23,1)="合計"
cells(23,2)=wa
身長の平均=wa/20
cells(24,1)="平均"
cells(24,2)=身長の平均
end sub

注意事項
身長の平均=wa/20
を代入し終わった時点で、もう身長の合計の値は要らなくなりますので、waという変数は別の目的に使って構いません。

座高の平均

座高に関しても、同様にy(1), y(2),...,y(20)という変数を用意して、座高の値を代入します。
このように(括弧)の中に番号を書いた変数を配列と言います。
シートから配列にデータを読み込むのは、一番最初にまとめておきましょう。

sub 身長と座高()
dim x(20), y(20)
for j=1 to 20
  x(j)=cells(j+1,2)
  y(j)=cells(j+1,3)
next j
wa=0
for j=1 to 20
  wa=wa+x(j)
next j
cells(23,1)="合計"
cells(23,2)=wa
身長の平均=wa/20
cells(24,1)="平均"
cells(24,2)=身長の平均
'ここに座高の合計を変数 wa に代入するマクロを書く
cells(23,3)=wa
座高の平均=wa/20 cells(24,3)=座高の平均
end sub

注意事項
身長の平均を計算し終わった時点で、waには身長の合計が入っているので、座高の合計を計算する前に必ず
wa=0
でゼロに戻してください。

身長の分散

分散は、数式で書くと となります。マクロで書くなら、2乗は ^2 なので
(x(1)-身長の平均)^2
(x(2)-身長の平均)^2

(x(20)-身長の平均)^2
これら20個を足して、20で割ったものが身長の分散です。
分散の平方根が標準偏差です。
平方根はsqr( )で計算できます。

sub 身長と座高()
dim x(20), y(20)
for j=1 to 20
  x(j)=cells(j+1,2)
  y(j)=cells(j+1,3)
next j
wa=0
for j=1 to 20
  wa=wa+x(j)
next j
cells(23,1)="合計"
cells(23,2)=wa
身長の平均=wa/20
cells(24,1)="平均"
cells(24,2)=身長の平均
'ここに座高の合計を変数 wa に代入するマクロを書く
cells(23,3)=wa
座高の平均=wa/20
cells(24,3)=座高の平均
'ここに、20人分の(身長と身長の平均の差)の2乗の合計を変数 wa に代入するマクロを書く
身長の分散=wa/20
cells(25,1)="分散"
cells(25,2)=身長の分散
身長の標準偏差=sqr(身長の分散)
cells(26,1)="標準偏差"
cells(26,2)=身長の標準偏差
end sub

座高の分散

同様に座高の分散も計算してください。

sub 身長と座高()
dim x(20), y(20)
for j=1 to 20
  x(j)=cells(j+1,2)
  y(j)=cells(j+1,3)
next j
wa=0
for j=1 to 20
  wa=wa+x(j)
next j
cells(23,1)="合計"
cells(23,2)=wa
身長の平均=wa/20
cells(24,1)="平均"
cells(24,2)=身長の平均
'ここに座高の合計を変数 wa に代入するマクロを書く
cells(23,3)=wa
座高の平均=wa/20
cells(24,3)=座高の平均
'ここに、20人分の(身長と 身長の平均 の差)の2乗の合計を変数 wa に代入するマクロを書く
身長の分散=wa/20
cells(25,1)="分散"
cells(25,2)=身長の分散
身長の標準偏差=sqr(身長の分散)
cells(26,1)="標準偏差"
cells(26,2)=身長の標準偏差
'ここに、20人分の(座高と 座高の平均 の差)の2乗の合計を変数 wa に代入するマクロを書く
座高の分散=wa/20
cells(25,3)=座高の分散
座高の標準偏差=sqr(座高の分散)
cells(26,3)=座高の標準偏差
end sub

身長と座高の共分散

共分散は、数式で書くと となりますので
(x(1)-身長の平均)*(y(1)-座高の平均)
(x(2)-身長の平均)*(y(20)-座高の平均)

(x(20)-身長の平均)*(y(20)-座高の平均)
これら20個を足して、20で割ったものが身長と座高の共分散です。

sub 身長と座高()
dim x(20), y(20)
for j=1 to 20
  x(j)=cells(j+1,2)
  y(j)=cells(j+1,3)
next j
wa=0
for j=1 to 20
  wa=wa+x(j)
next j
cells(23,1)="合計"
cells(23,2)=wa
身長の平均=wa/20
cells(24,1)="平均"
cells(24,2)=身長の平均
'ここに座高の合計を変数 wa に代入するマクロを書く
cells(23,3)=wa
座高の平均=wa/20
cells(24,3)=座高の平均
'ここに、20人分の(身長と 身長の平均 の差)の2乗の合計を変数 wa に代入するマクロを書く
身長の分散=wa/20
cells(25,1)="分散"
cells(25,2)=身長の分散
身長の標準偏差=sqr(身長の分散)
cells(26,1)="標準偏差"
cells(26,2)=身長の標準偏差
'ここに、20人分の(座高と 座高の平均 の差)の2乗の合計を変数 wa に代入するマクロを書く
座高の分散=wa/20
cells(25,3)=座高の分散
座高の標準偏差=sqr(座高の分散)
cells(26,3)=座高の標準偏差
'ここに、20人分の(身長と 身長の平均 の差)×(体重と 体重の平均 の差)の合計を変数 wa に代入するマクロを書く
共分散=wa/20
cells(27,1)="共分散"
cells(27,2)=共分散
end sub

身長と座高の相関係数

相関係数は
共分散÷(身長の標準偏差 × 座高の標準偏差)
で計算できます。
今日ここまでに書いたマクロの最後に、
相関係数を計算して、
Cells(28,2)に出力するマクロを書いてください。
来週の最初にメールに貼り付けて提出してください。

解答

次の値になったら正解です。
身長の合計3087, 座高の合計1676
身長の平均154.35, 座高の平均83.8
身長の分散18.2275, 座高の分散7.36
身長の標準偏差4.269368, 座高の標準偏差2.712932
共分散8.67
相関係数0.748543
セルの幅によって表示される桁数が違ってきますので、上のほうの位が合っていれば大丈夫です。

0 件のコメント: