- まず、12月6日の方法で未知数が3つの方程式を解くプログラムを作る。
- 12月13日の方法で,繰り返し実行している部分をFor文でまとめる。
- 12月20日の方法でさらにFor文でまとめる。
- 12月20日の方法でまとめてしまうと,For文の繰り返しをひとつ増やすだけで,未知数が4つの連立一次方程式を解くプログラムになります。
未知数の数が4つの連立一次方程式も解ける様になった人は次の課題に挑戦してください。
以下のように日本の20都市に対して、1月の日最低気温の月平均値、緯度、経度、標高のデータがあります。
都市番号 | 都市 | 気温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とおきます。 緯度、経度、標高と気温の関係は色々考えることが出来ますが、ここでは簡単なものとして
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 件のコメント:
コメントを投稿