また、これによって分散分析法を実験計画法から切り離すことが可能と なり、畜産分野で頻繁に見られる不揃いデータの分散分析が容易に なった(最小自乗分散分析法)。さらに、実験計画法から切り離された ことで、家畜育種分野では後述するBLUP法などのフィールドデータを 用いた分析法へと発展した。
ただし、すべての問題が最小自乗法で解けるわけではない。BLUP法などの 混合モデルでは後述する最尤法によらなければならない。
このモデルを次のように書き直します。
y = 1a + xb + e
ここで1は全ての要素が1のベクトルです。さて、1aとxb をひとつにしてしまいましょう。
y = Xc + e
X= ( (1, x1), (1, x2), ... ), c= ( a, b ) ですね。
残差は e = y - Xc ですから、残差自乗和は
= (y - Xc)'(y - Xc)
= y'y - 2c'X'y + c'(X'X)c
微分して=0とおけば残差自乗和を最小値にするパラメータの値が求められます。
-2 X'y + 2 X'Xc = 0
X'Xc = X'y
この式を正規方程式と呼び、この連立1次方程式をcについて 解けば、パラメータの推定値を求めることができる。 c^ = (X'X)-1X'y
非線形モデルを最小自乗法で当てはめる時には、多くの場合、計算式を 解析的に求めることができない。そこで、多くの反復解法が考案されて きた。通常はニュートン法とその改良手法を使えば十分であるが、非線形性 の強い場合にはマルカート法やPowell法を使う必要がある。また、偏微分 すら求められない場合には、数値微分法をもとにしたアルゴリズムを 使用しなければならない。
Excelで次のデータを入力する。
このデータを「ファイルの種類」を「テキスト(タブ区切り)」にして
growth.txtと名前をつけて保存する。
Rを起動してgrowth.txtを読み込む。
> gdata <- read.table("growth.txt")
> gdata
Age Weight
0 0 6.7
1 1 17.0
2 2 34.5
3 3 56.5
4 4 80.3
5 5 94.6
6 6 100.7
7 7 103.7
8 8 104.9
9 9 103.5
10 10 104.8
11 11 105.7
12 12 106.6
13 13 108.0
14 14 107.9
15 15 107.3
>
非線形回帰パッケージnlsとgdataを使用するという宣言をする。
> library(nls) > attach(gdata)パラメータの初期値をA=100.0, B=1.0, k=0.1として計算する。
> result <- nls( Weight ? A*(1.0-B*exp(-k*Age)), data=gdata, start = list( A=100.0, B=1.0, k=0.1))結果のサマリーを表示する。
> summary(result)
Formula: Weight ? A * (1 - B * exp(-k * Age))
Parameters:
Estimate Std. Error t value Pr(>|t|)
A 112.63730 3.85214 29.240 3.02e-13 ***
B 1.03431 0.05552 18.631 9.27e-11 ***
k 0.28909 0.03906 7.401 5.19e-06 ***
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
Residual standard error: 7.194 on 13 degrees of freedom
Correlation of Parameter Estimates:
A B
B -0.3012
k -0.7871 0.5903
成熟体重(A)は112.64、成熟速度(k)は0.2891、積分定数は1.0343と推定
されました。
寄与率を計算してみます。
> predict <- Weight + resid(result) > cor( Weight, predict)*cor( Weight, predict) [1] 0.9682295 >
最終更新年月日 2004年6月4日