小学校の夏休みの頃は、毎日、天気や気温を記録したりとかの「自由研究」をやったと思います。しかし、今日はweb時代であり、夏休みの間の天気などはwebで調べればたちどころに判ってしまうので、そうした記録を取るだけでは自由研究になりにくい。お子さんも大変なのかも知れない。
関数電卓を使った遊び、として、こんなのを考えてみました。
気象庁に、月間の平均気温などのデータがあります。1年を通してみれば、その変動はsin curveで近似できるでしょう。そのsin curveを回帰分析で調べてみようというのです。
本来ならば、
T = A*sin(t/12*2*pi+B)+C
の様なイデアルな式を用意し、その式で回帰分析しようというのですが、手元には、いわゆる「2変数回帰分析機能」を持った吊るしの電卓しかありません。
大抵の関数電卓にある2変数統計処理機能では、一次式(と、変数の対数などを取ることで派生する、いくつかの数式)の回帰分析しか出来ません。(HP Primeならば、sin curveでの回帰分析機能を持っているので一発で出来てしまうのですが) コレはアカン。
しかし、この式を凝視し、Bの項目をそれっぽい値で固定してやれば、変数はA,Cの2つにまで減らせそうです。更に、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 件のコメント:
コメントを投稿