- 本日の作業内容
- 前回の宿題について
最小二乗法や回帰曲線についてまったく理解できていない人が結構いました.残念です.なるべく授業中に質問してください.また,メンターも活用してください.
まず理解してもらいたいことは,個々の測定データはそれぞれ種々の誤差を含んでいるので,その一つ一つで何かを計算することはしない,というのが最小二乗法の大原則です.まず,とにかくここを理解してください.なので,測定された全てのデータを使って誤差を最小にする係数を求める作業を行うということです.
下図のような取り扱いをしている人がたくさんいましたが,全く意味がありません.もし,重力加速度が落下時間に依存して変化するというようなことがあるのなら(まったく物理的には考えられませんが),このようなプロットをして傾きを出すことは手続きとしてはありますが,今回は全然関係ないですね.
今回は自由落下の実験ということで,物理で習った式は以下です.
y = g t 2 / 2
実験結果の表の数値をそのままグラにすると,以下の図のようになったはずです.
この結果に対して linest() 関数で近似曲線の形を求めますが,理論式から時間 t の1次の項が無いことと,原点を通ることはわかっています.そこで,実際の求め方としては,
=linest(Yの範囲,Xの範囲^{2},0,1) |
となります.実行すると次のような配列表現のセルが現れます.
4.9166663058 | 0 |
0.0109124591 | #N/A |
0.9999408902 | 0.0030578583 |
203000.081718448 | 12 |
1.898151794 | 0.000112206 |
一番左上のセルが2次の項の係数ですから g / 2 が 4.91666.. となりました.ですので,2倍して重力加速度 g は 9.83333 [m/s2] となります.実際の重力加速度は 9.80665 ですので,誤差は
9.83333 - 9.80665 | |
------------------------------- | = 0.002721 |
9.80665 | |
となり,誤差1%以内と通常の実験では考えらないくらい正確な実験だということができます.
最後に近似曲線の挿入ですが,1次の項を持たない2次関数近似ですので,実は近似曲線の挿入の機能は使えません.それで入れた人はまあほとんど誤差が無いので大丈夫だとは思いますが,正しくは近似曲線用のデータセルを作ってその値を入れます.
のセルを時間 t を0.01刻み程度で作成します.そして,その値でグラフを作成します.詳しいことは本日の作業のところにありますので,その時にまたやってください.とりあえず入れたものは下の図のようになります.
本日の宿題では変数変換が必要な例を試すのですが,この宿題でも同じように横軸を t 2 にしてプロットすると直線近似になります.そこで,下図のように最小二乗法を適用するのももちろん有りです.
最後に,表には罫線を入れるように何度もここで書いているのですが,依然として罫線なしの人が多いです.もしかしてそんなこともわからないのかもしれない人がいるのかと思って以下に方法を説明します.表には罫線をつけてください.
- 前回の復習
前回は線形回帰を求める最小二乗法について学習しました.表計算ソフトでは linest() という関数が用意されていて,それを使うと簡単に回帰直線や回帰曲線が求まります.ただし,前回のマティーセンの法則のように途中が飛ぶべきのような場合には,グラフの方から回帰曲線ではきちんとした近似にはならないこともあるので,注意してください.
今回はより一般的な関数系についての最小二乗法です.
- 自習資料
資料を参考に予習してください.
- 演習
資料の方にあるように科学技術関連の実験データの解析にはべき乗や指数・対数など物理的な背景を反映した理論式と比較する場合が多くあります.しかしながら表計算ソフトはビジネス向けに基本的には開発されているので,そのような目的に適した関数はあまり準備されていません.ですので,少し工夫が必要です.
以下では基本的な関数系であるべき関数と指数関数,対数関数について回帰曲線を求める方法を試してみましょう.
- 単純なべき関数
前回の線形回帰で以下のようなべき級数についての場合を実習しました.
y = a + b1 x + b2 x2 + b3 x3 + ・・・
しかし,実際の問題では従属変数 y が独立変数 x の何乗に比例するのか知りたい場合があります.つまり,以下のような式の場合です.
y = a x b
上式のような単純な場合にはグラフに挿入する近似曲線の式で簡単に求められます.例えば,以下のデータは y = 0.7 x 2.5のものです.
x | y |
1 | 0.7 |
2 | 3.9597979746 |
3 | 10.9119200877 |
4 | 22.4 |
5 | 39.1311896062 |
6 | 61.7271415181 |
回帰の結果をわかりやすくするために関数式通りのデータとしています.
このデータをグラフ化して,前回行ったようにプロット点を右クリックして近似曲線を挿入します.その際には,「累乗」を選択してください.すると,近似曲線が挿入されます.その後で,近似曲線上で右クリックして「近似曲線の方程式を挿入」を選択することで,グラフの中に式が表示されます.その関数形の中の係数が求める変数 a と b です.
なお,この方法では以下のような式については係数を求めることができませんので,注意してください.
y = a + b1 x + b2 xm + b3 xn + ・・・
- 異なる形のべき関数
以下のような関数形の場合の回帰はどうなるでしょうか.
y = a b x
両辺の対数を取ると,
log10 y = log10 a + x log10 b
のようになり,直線の式に変形することができます.そこで,表計算ソフトではそのような場合の最小2乗法のために logest() という関数が用意されています.この関数も前回の linest() 関数と同じように結果を表で出す(配列表現)場合には Ctrl+Shift+Enter の操作が必要です.この操作には頭文字を取ってCSE数式という名前が付いているようです.
以下のようなデータセットで考えてみましょう.これは, y = 0.5 * 3.2 xです.
x | y |
1 | 1.6 |
2 | 5.12 |
3 | 16.384 |
4 | 52.4288 |
5 | 167.77216 |
6 | 536.870912 |
logest() 関数は使い方は linest() と同じですので,先週と同じように作業してみましょう.3つ目の引数は0(FALSE)だと先頭の定数係数を1とし,TRUEだと係数として計算します.きちんと答えが出たでしょうか.
また,この関数形の場合には,グラフから近似曲線を得ることができません.ですので,グラフに近似曲線を引きたい場合には自分でデータを用意する必要があります.
なるべく細かく横軸の値を入れるほうが良いので,例えば,0.2刻みで0.5から6.6まで列のセルを作り,その右に先ほど求めた係数を使用して関数の式を入れ値を作ります.その後で,以下のような操作をすることで近似曲線を追加できます.
- グラフ内で右クリックして「データ範囲」を選択
- 「データ系列」タブがアクティブになっている状態で左下の「追加」ボタンをクリック
- 右側の「データ範囲」エリアの「X値」をクリック
- 「X値の範囲」欄の右端のボタンをクリック
- X値の範囲を選択:範囲の部分にX値の範囲を入力
- 同じように「データ範囲」の「Y値」を選択してYの範囲を入力
- 「データラベル」は適当に入力
- 「OK」をクリックすると点プロットの回帰曲線がグラフに挿入される
- 近似曲線のどれかの点を右クリックして「データ系列の書式」を選択
- 「線」タブを選択して「線の属性」の「スタイル」から「実線」を選択
- 右側の「アイコン」で,「シンボルなし」を選択し,「OK」をクリック
図1 回帰曲線の挿入
- 指数関数
指数関数は科学計算では非常に重要なものですが,表計算ソフトでは重視されていません.そのため,グラフから求めることになります.一番単純な形として次の式のときをまず考えます.
y = a e b x
単純なべき関数の時と同様にグラフを作成し,グラフの近似曲線挿入のときに「指数関数」を選択して,その後で近似式を挿入すれば,係数 a と b の値を得ることができます.次の例で試してください.
x | y |
1 | 1.3445067211 |
2 | 6.025661077 |
3 | 27.00513939024 |
4 | 121.0286380478 |
5 | 542.4127243368 |
6 | 2430.9251782726 |
- 多項式の指数関数
次の式を考えます.
y = a +b x + c e d x
最小二乗法は基本的には線型結合の多項式しか扱えませんので, x の項と ex の項があるとそのままでは適用できません.試しに以下のデータについて,指数関数で近似関数を求めてグラフにするとあまりフィットしません.
x | y |
1 | 30.5578786499 |
2 | 36.4671226971 |
3 | 44.7162234664 |
4 | 58.172771138 |
5 | 83.2187050232 |
6 | 134.0572922631 |
図2 多項式の近似曲線推定
そこで,一度変数変換して z = e xとし,以下のように表を作り直します.
x | z | y |
1 | 2.7182818285 | 30.5578786499 |
2 | 7.3890560989 | 36.4671226971 |
3 | 20.0855369232 | 44.7162234664 |
4 | 54.5981500331 | 58.172771138 |
5 | 148.4131591026 | 83.2187050232 |
6 | 403.4287934927 | 134.0572922631 |
式としては
y = a +b x + c z
という形ですので,先週行った linest() で最小二乗法が適用できます.
e の肩の x の係数が消えてしまいますが,今回はそこは目をつぶりましょう.
上のように表を作りなおして,最小自乗近似を行って近似曲線を作りなおすと次のようなグラフを作成できました.
図3 改善した近似曲線
これでももしズレが大きいようなら z = e k x のように目分量で変数kを入れて表を作るという強引な方法もあります.
- 演習
以下の演習課題を行いましょう.
- RL 回路の過渡現象
インダクタと抵抗からなる回路に直流電源を接続すると,接続直後にインダクタによるかと現象が発生します.このとき,回路に流れる電流 I ( t ) は以下の式で表されることがわかっています.
I ( t ) = E / R ・ ( 1 - e -Rt / L )
ここで, E は直流電源の電圧, R は抵抗,そして, L はインダクタンスです.
5Vの電源を接続してから以下のような電流の時間変化が測定された時, R と L を求めましょう.
t (sec) | I (A) |
0.0001 | 0.005 |
0.0003 | 0.012 |
0.0006 | 0.023 |
0.001 | 0.031 |
0.002 | 0.044 |
0.003 | 0.047 |
0.004 | 0.049 |
0.005 | 0.049 |
0.006 | 0.050 |
0.007 | 0.050 |
0.008 | 0.050 |
0.009 | 0.050 |
0.010 | 0.050 |
- RC 回路の過渡現象
前と同様に,RC回路の過渡現象は以下の式で表されます.
I ( t ) = E / R ・ e -t / R C
ここで C はキャパシタンスです.
20Vの直流電源が接続された時,以下のような電流変化が観測されました.このときの R と C を求めましょう.
t (sec) | I (A) |
0.0001 | 0.375 |
0.0003 | 0.329 |
0.0006 | 0.265 |
0.001 | 0.208 |
0.002 | 0.106 |
0.003 | 0.051 |
0.004 | 0.028 |
0.005 | 0.014 |
0.006 | 0.007 |
0.007 | 0.002 |
0.008 | 0.001 |
0.009 | 0.000 |
0.010 | 0.000 |
- 次回の予習範囲
次回はt検定について学習します.予習用の資料を参考に予習してください.
- 宿題
いつものレポート提出システムを利用して行います.
宿題の公開は原則として授業の後13:00からとなります.また,提出の締め切りは授業前日火曜日の13:00までです.よろしくお願いします.