都市番号 | 都市 | 気温y | 緯度x1 | 経度x2 | 標高x3 |
1 | 稚内 | -8.0 | 45.42 | 141.68 | 2.8 |
2 | 旭川 | -13.6 | 43.77 | 142.37 | 111.9 |
3 | 札幌 | -9.5 | 43.05 | 141.33 | 17.2 |
4 | 青森 | -5.4 | 40.82 | 140.78 | 3.0 |
5 | 盛岡 | -6.7 | 39.70 | 141.17 | 155.2 |
6 | 仙台 | -3.2 | 38.27 | 140.90 | 38.9 |
7 | 金沢 | -0.1 | 36.55 | 136.65 | 26.1 |
8 | 長野 | -5.5 | 36.67 | 138.20 | 418.2 |
9 | 高山 | -7.6 | 36.15 | 137.25 | 560.2 |
10 | 軽井沢 | -10.0 | 36.33 | 138.55 | 999.1 |
11 | 名古屋 | -0.9 | 35.17 | 136.97 | 51.1 |
12 | 飯田 | -4.7 | 35.52 | 137.83 | 481.8 |
13 | 東京 | -0.4 | 35.68 | 139.77 | 5.3 |
14 | 鳥取 | 0.5 | 35.48 | 134.23 | 7.1 |
15 | 京都 | -0.6 | 35.02 | 135.73 | 41.4 |
16 | 広島 | 0.2 | 34.37 | 132.43 | 29.3 |
17 | 福岡 | 1.5 | 33.58 | 130.38 | 2.5 |
18 | 鹿児島 | 2.0 | 31.57 | 130.55 | 4.3 |
19 | 高知 | 0.1 | 33.55 | 133.53 | 1.9 |
20 | 那覇 | 13.5 | 26.23 | 127.68 | 34.9 |
このデータを元に、緯度、経度、標高と気温の関係を数式で表したいと思います。 また神戸の緯度は34.68、経度は135.18、標高は59.30です。神戸の気温を推定しましょう。
気温をy, 緯度をx1、経度をx2、標高をx3とおきます。 緯度、経度、標高と気温の関係は色々考えることが出来ますが、今回は緯度、経度、標高の3変量を使う最も簡単なものとして
y=β0+β1x1+β2x2+β3x3+誤差
という形を考えます。
β0,β1,β2,β3はどうやって決めましょうか。
本当の気温yと、緯度、経度、標高から推定した気温β0+β1x1+β2x2+β3x3
との差が小さくなるように決めましょう。
データの
1番目の都市の気温をy1、緯度をx11、経度をx12、標高をx13
2番目の都市の気温をy2、緯度をx21、経度をx22、標高をx23
・・・・・
20番目の都市の気温をy20、緯度をx20,1、経度をx20,2、標高をx20,3
と書きます。すると、本当の気温と推定した気温の差は
y1-(β0+β1x11+β2x12+β3x13)
y2-(β0+β1x21+β2x22+β3x23)
・・・・・
y20-(β0+β1x20,1+β2x20,2+β3x20,3)
です。これらはプラスになったりマイナスになったりするので、そのまま足すと打ち消しますから、二乗して足して
∑i=120 {yi-(β0+β1xi1+β2xi2+β3xi3)}2
が最小になるようなβ0,β1,β2,β3を求めることにします。
一見、求めるのは難しそうに見えます。でもこれはβ0,β1,β2,β3に関する二次式で、しかもは二乗して足していますから0以上です。だからグラフは下に凸になっていて、どこかで最小値を取ります。
公式の導出は省略しますが、実は最小にするβ0,β1,β2,β3は次の連立一次方程式を解くことで求めることが出来ます。
まず未知数β0,β1,β2,β3を縦に並べた ベクトル
β0 |
β1 |
β2 |
β3 |
ベクトル
y1 |
y2 |
・ |
・ |
y20 |
最後に行列
1 | x11 | x12 | x13 |
1 | x21 | x22 | x23 |
・ | ・ | ・ | ・ |
・ | ・ | ・ | ・ |
1 | x20,1 | x20,2 | x20,3 |
1が縦に並んでいるのはβ0の係数だからです。この時、最小にするβ0,β1,β2,β3は 連立一次方程式
(Xt・X)Β=(Xt・Y)
を解くことで得られます。Xの右上のtは転置を表します。行列X、ベクトルYの配置は上のデータの表と同じですからコピーすれば入力しやすいです。
この連立一次方程式を解いて、β0,β1,β2,β3を求めてください。正解は、 β0=38.3、 β1=-1.17、 β2=0.02、 β3=-0.0098、 そして神戸の気温は、38.3-1.17×34.68+0.02×135.18-0.0098×59.3=-0.15です。実際の気温は1.2でした。
0 件のコメント:
コメントを投稿