2014年8月3日日曜日

夏休みの自由研究 #2

本来、この記事は「夏休み『前』の自由研究」と題する予定でしたが、遅れてしまいました。
小学校の夏休みの頃は、毎日、天気や気温を記録したりとかの「自由研究」をやったと思います。しかし、今日はweb時代であり、夏休みの間の天気などはwebで調べればたちどころに判ってしまうので、そうした記録を取るだけでは自由研究になりにくい。お子さんも大変なのかも知れない。

関数電卓を使った遊び、として、こんなのを考えてみました。

気象庁に、月間の平均気温などのデータがあります。1年を通してみれば、その変動はsin curveで近似できるでしょう。そのsin curveを回帰分析で調べてみようというのです。

本来ならば、
T = A*sin(t/12*2*pi+B)+C
の様なイデアルな式を用意し、その式で回帰分析しようというのですが、手元には、いわゆる「2変数回帰分析機能」を持った吊るしの電卓しかありません。

大抵の関数電卓にある2変数統計処理機能では、一次式(と、変数の対数などを取ることで派生する、いくつかの数式)の回帰分析しか出来ません。(HP Primeならば、sin curveでの回帰分析機能を持っているので一発で出来てしまうのですが) コレはアカン。


しかし、この式を凝視し、Bの項目をそれっぽい値で固定してやれば、変数はA,C2つにまで減らせそうです。更に、sin(...) 部分を計算して、これと平均気温とを関係づけるとアラ不思議、1次式になっているじゃねぇの ! これならば、関数電卓でも回帰分析出来るかも ?


まずは、元データから。以下は、2013年の東京の月間平均気温です。

【表1】気象庁・2013年分平均気温データ(東京)

(t) 1 2 3 4 5 6 7 8 9 10 11 12
平均気温(T) 5.5 6.2 12.1 15.1 19.8 22.9 27.3 29.2 25.2 19.8 13.5 8.3

ワープロで作った表を貼り付けたので、いい具合です。

グラフにすると良く判りますが、1月が最低気温となっています。ここを起点としてsin curveで近似を考えるならば、いっその事、こんな式にしてしまうのはどうでしょうか。


T = A*cos((t-1)/12*2*PI)+C


1
月ならば「t-1=1-1=0」、12月ならば「t-1=12-1=11」、という具合。cos((t-1)/12*2*PI) = X をあらかじめ計算しておき、X T について直線回帰を適用するのです。


少々面倒ですが、データ数も12個しかありません。あらかじめ、表に数値を書き出しておけば、電卓で機械的に入力して計算できます。


t 1 2 3 4 5 6 7 8 9 10 11 12
X 1 0.866 0.5 0 -0.5 -0.866 -1 -0.866 -0.5 0 0.5 0.866
T 5.2 6.2 12.1 15.2 19.8 22.9 27.3 29.2 25.2 19.8 13.5 8.3


こんな表が得られました。この表のうち、X, Tについて、手持ちの35Sにて直線回帰を実施すると、回帰係数が -0.963 となって、結構いい感じになっております。回帰係数が負になるのは「負の相関」であって、絶対値が1に近い事から「強い相関がある」と判断できます。
回帰直線の勾配 = -10.727、切片 = 17.0583 でありますから、回帰式は
T = -10.727 *cos((t-1)/12*2*PI)+17.0583
となります。

グラフを描いて較べてみましょう。(飛び道具「gnuplot」使用)



起点を「エイヤッ」と決めてしまったので、グラフを描くと「ズレ」が見られますが、割合いい感じではないでしょうか。最大値と最小値の中間を起点として、もう一度考え直すなどの方策を講じる事で、よりよい回帰式が得られるのかも知れませんが、それは、この小文を御覧になりました方が各々、御考察戴き度。
 

0 件のコメント: