Re: [問題] Array Matrix 用法

看板Perl作者時間12年前 (2013/07/04 01:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
我建議妳應該先了解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 才是? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.15.219
文章代碼(AID): #1Hr5gvrh (Perl)
討論串 (同標題文章)
文章代碼(AID): #1Hr5gvrh (Perl)