出展:パーソナルソフトウェア技法 Watts S. Humphrey 著 ISBN4-320-02929-1

PSP課題 06A_CS : 90%と70%の予測

前提条件

7章までと A8 節と 課題 04A_CS 及び 05A_CS

要求

1つの「見積もりオブジェクト LOC」と n 個の実数の組 (見積もりオブジェクト LOC, 実際の新規及び変更の LOC)を ファイルから読込みリンクリストに格納せよ。 β0β1と予測値及び70%と90%の範囲を出力せよ。
ベースは prob/C04_05A_CS とせよ。
Γ関数は、lngamma を利用せよ。(Γ(x) ⇒ Math.Exp(lngamma(x)))

テスト

入力ファイル期待される出力
テスト106A_CS_test_1.xml 結果1
但し、入力ファイルの1行目は、見積もりオブジェクト LOC である。

参考

必ず、A8.1 節、A8.2 節、A5.4 節を読むこと。 参考として、A1.6 節、A1.7 節も読んだ方がいい。
06A_CS で注意すべきなのは、t(α/2,n-2) を求める必要があるのだが、 325ページの (A8) の g(x) の式とは異なるということである。 具体的には、70 % の信頼区間を求めるためには、 n = 10 の場合、t(0.5+0.7/2,10-2) = 1.108 を求める必要がある。 しかし、(A8) の式は、g(1.108,8) = 0.85 が成り立つだけである。 つまり、逆関数を求める必要がある。 簡単な方法としては「2分法」(アルゴリズム事典 210ページ)などが利用できる。

g(x,n) := Γ((n+1)/2)/Math.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) = Math.Sqrt(Math.PI)
δ^2 := 1/(n-2)*sum_i((y_i - β0 - β1 * x_i)^2)
range := t(α/2,n-2) * σ * Math.Sqrt(1 + 1/n + (x - Ave(x))^2 / sum_i((x_i - Ave(x))^2))

解答例