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

PSP課題 10A : 重回帰による90%と70%の予測

前提条件

11章までと A9,A10,A11 節と課題 06A

要求

n 個の5組の実数(番号、新規LOC、再利用LOC、変更LOC、時間) をファイルから読込み1列目を除いてリストに格納せよ。 これを時間に対する 3 変数の重回帰パラメータを求めよ。 70%、90% の信頼区間を出力せよ。 ベースは 06A とせよ。 ../Lib/gamma.h, ../Lib/gamma.cpp を用いてよい。

テスト

新規LOC=185、再利用LOC=150、変更LOC=45 に対し、以下の出力を得ること。
テスト1の結果。
β0 0.56646
β1 0.06533
β2 0.00872
β3 0.15105
Est 20.76
70% 14.63 - 26.89
90% 7.84 - 33.67
テスト2の結果。
β0 6.70134
β1 0.07837
β2 0.01504
β3 0.24606
Est 34.53
70% -11.09 - 80.15
90% -61.56 - 130.62

参考

z_k = β0 + w_k β1 + x_k β2 + y_kβ3
としたとき、
β0 * n + β1 * sum_i(w_i) + β2 * sum_i(x_i) + β3 * sum_i(y_i) = sum_i(z_i)
β0 * sum_i(w_i) + β1 * sum_i(w_i^2) + β2 * sum_i(w_i*x_i) + β3 * sum_i(w_i*y_i) = sum_i(w_i*z_i)
β0 * sum_i(x_i) + β1 * sum_i(x_i*w_i) + β2 * sum_i(x_i^2) + β3 * sum_i(x_i*y_i) = sum_i(x_i*z_i)
β0 * sum_i(y_i) + β1 * sum_i(y_i*w_i) + β2 * sum_i(y_i*x_i) + β3 * sum_i(y_i^2) = sum_i(y_i*z_i)
を解いて b を求める
δ^2 := 1/(n-4) * sum_i((z_i - β0 - β1*w_i - β2*x_i - β3*y_i)^2)
range := t(α/2,n-4) * δ * sqrt(1 + 1/n + (w_k-Ave(w))^2/sum_i((w_i-Ave(w))^2) + (x_k-Ave(x))^2/sum_i((x_i-Ave(x))^2) + (y_k-Ave(y))^2/sum_i((y_i-Ave(y))^2))