Re: [問題] Array Matrix 用法

作者: lgen7604   2013-07-04 01:09:10
我建議妳應該先了解MultipleRegression能幫你做什麼
這個module的說明如下
The general purpose of multiple regression is to gain information about the
relationship between several independent
variables (x_i) and a dependent variable (y). The procedure involves
fitting an equation of the form:
y = b_o + x_1 * b_1 + x_2 * b_2 +... ... x_n * b_n
This is a minimal implementation of least squares procedure that accepts
a List-of-Lists in which each nested list
corresponds to a single set of observations. The single exported routine
returns the coefficients (b_i) and R^2.
所以他其實是用最小平方法求迴歸方程式的module
單純一行 745 36 66 的意思是
你想知道某個方程式 y = b0 + x1 * b1 + x2 * b2
也可以看成 z = b0 + x * b1 + y * b2
其中 b0, b1, b2 是你希望程式幫你求出的常數
但是你只提供一組數據 (x,y,z) = (33,66,745)
當然解不出來
為了求出上列方程式
你應該至少要提供三組 (x,y,z) 的值
例如:
(x,y,z) = (1,1,6) (x,y,z) = (1,2,9) (x,y,z) = (2,1,7)
這三組數據可以推導出 z = 2 + x * 1 + y * 3
你可以試試看
my $lol = [
[qw/6 1 1/],
[qw/9 1 2/],
[qw/7 2 1/],
];
可以算出答案係數為 2, 1, 3 R^2 = 1
其實他算出的答案是 2 0.999999999999998 3
由此可以看出這個功能的計算精確度不足
如果你用下列數據
my $lol = [
[qw/6 1 1/],
[qw/9 1 2/],
[qw/7 2 1/],
[qw/28 5 6.9/], # 我故意加入一組誤差數據
];
答案係數會變成 1.91619600061059 1.02953747519464 3.03388795603723
R^2 = 0.999997886406065
了解code在幫你做什麼事
你才有辦法利用他來解決問題
※ 引述《yu1 (~renard~)》之銘言:
: 感謝,想請問另一個問題是
: Multiple Regression 需要使用矩陣的inverse嗎?
: 如果單純一行 745 36 66
: 應該為745 + 0*x1+0*x2
: 也就是回傳 745, 0 ,0 才是?

Links booklink

Contact Us: admin [ a t ] ucptt.com