出展:パーソナルソフトウェア技法 Watts S. Humphrey 著 ISBN4-320-02929-1
PSP課題 06A : 90%と70%の予測
前提条件
7章までと A8 節と 課題 04A 及び 05A
要求
1つの「見積もりオブジェクト LOC」と n 個の実数の組 (見積もりオブジェクト LOC, 実際の新規及び変更の LOC)を ファイルから読込みリンクリストに格納せよ。 β0とβ1と予測値及び70%と90%の範囲を出力せよ。 C04_05A フォルダに 04A と 05Aの必要なファイルをコピーし、 ベースは
C04_05A とせよ。(DoWhen05ADone.bat を実行すればできる。) Γ関数のために
../Lib/gamma.h
,
../Lib/gamma.cpp
を用いてよい。(利用しなくてもいい。) (Γ(x) = exp(lngamma(x)))
テスト
テスト1
の出力が以下のようになること
β0 -22.55 β1 1.7279 Est 644.429 (0.7) 414.4 - 874.4 (0.9) 258.5 - 1030.4
但し、ファイルの1行目は、見積もりオブジェクト LOC である。
参考
必ず、A8.1 節、A8.2 節、A5.4 節を読むこと。 参考として、A1.6 節、A1.7 節も読んだ方がいい。
06A で注意すべきなのは、t(α/2,n-2) を求める必要があるのだが、 325ページの (A8) の g(x) の式とは異なるということである。 具体的には、70 % の信頼区間を求めるためには、 n = 10 の場合、t(0.85,8) = 1.108 を求める必要がある。 しかし、(A8) の式は、g(1.108,8) = 0.85 が成り立つだけである。 つまり、逆関数を求める必要がある。 簡単な方法としては「2分法」(アルゴリズム事典 210ページ)などが利用できる。
式
g(x,n) := Γ((n+1)/2)/sqrt(n*PI)/Γ(n/2)*integral_-∞_x((1+u^2/n)^(-(n+1)/2)) du
g(0,n) = 0.5
Γ(x) := (x-1)Γ(x-1), Γ(1) = 1, Γ(1/2) = sqrt(PI)
δ^2 := 1/(n-2)*sum_i((y_i - β0 - β1 * x_i)^2)
range := t(α/2,n-2) * σ * sqrt(1 + 1/n + (x - Ave(x))^2 / sum_i((x_i - Ave(x))^2))