作者tropical72 (藍影)
看板C_and_CPP
標題Re: [問題] 怎麼寫迴歸分析(regress) ???
時間Tue Mar 1 21:51:37 2011
本想用推文的討論, 無耐不小心一路按錯到回文 (應沒人這麼傻..)
這裡便討論一些小弟知道的東西
首先回 purpose 之推文 - 是,原po要做的是4個自變數的一階線性回歸。
在此說我所知道的回歸
1. 概述
回歸真正意義,是要求一條曲線,使得所有點到該線之距離和為最短。
而這條曲線可以是 Y=AX+B,也可以是 Y=AX^2+BX+C,甚至是更高項數,
而原 po 要用的是一階線性回歸,所以用的模型是 Y=AX+B。這裡有個重要的概念,
求出的 Y=AX+B 其中之係數 A, B,「並不能保證通過所有的資料點」,
「但能保證會使所有資料點到此曲線之距離和為最短(MSE)」
這和一般數值分析上的「內差法」還是「插值法」有些不同,內差法是給出一堆點,
而要求的是真正通過這所有點的一條曲線。詳細做法可查「牛頓差值法」
(內差/外差)
2. 公式
在了解定義之後,公式是從定義推導出來的。以一階線性單變數
回歸為例,設 y=ax+b,已知點有 (x0,y0),(x1,y1),(x2,y2) 三點,
根據點到線的距離公式,距離和可寫成
|y0-ax0-b|+|y1-ax1-b|+|y2-ax2-b|
d0+d1+d2 = --------------------------------
(a^2+b^2)^(1/2)
要去求係數 a,b ,使得 d0+d1+d2 最小化,
對於一階線性單變數,已經有人推導出 a, b 之公式,
而一階線性多變數,由於計算繁雜,於是較沒人去推導出相關公式,
即使推導出相關公式,計算時間也較久,故大多人還是建議使用現有之 library 去做
或是直接用 SPSS 這類統計軟體進行協助。
以原po 所說的四個自變數,其模型會設成
f(x1,x2,x3,x4) = a1x1+a2x2+a3x3+a4x4+c,
如果數學夠強的話一樣, 目標式為 min {Sum(di) | i=1~n}
要求 a1,a2,a3,a4 及 c 之值,
由上述, 實在是沒有理由會有「無解」的情況發生
這問題實在覺得放到 數學/統計 版去問會好些..
※補充一點, 這問題一大、變數一多的時候, 可以拿來當做是 GA 的測試模型。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.142
※ 編輯: tropical72 來自: 180.177.76.142 (03/01 22:31)
推 purpose:蠻專業的。翻了一下統計學,多變數的迴歸公式好麻煩 03/01 22:47
→ purpose:最後說GA是指什麼? 03/01 22:48
→ tropical72:GA:基因演算法,期望能在有效時間內找出「近似最佳解」 03/01 23:00
→ tropical72:之演化式演算法,事實上多變數、多階回歸大多都建議用 03/01 23:01
→ tropical72:SPSS 去做,沒什麼人自己寫的. 03/01 23:01
推 purpose:瞭解,謝謝 03/01 23:02
推 ojasono:感謝回應 最後我是利用 AX = b 矩陣求法得到近似解的 03/02 02:38
→ ojasono:不過這方法我也試過OK! 03/02 02:38
竟然找到線性代數解法了..
[定理] 最小平方解之唯一性
若 A 為一 m*n 矩陣, 且其行向量為線性獨立,則
對每一 n*1 矩陣 b, 線性聯立方程組 Ax=b 有最小唯一解
t -1 t
x = (A A) A b
原 po 應是用這個吧
※ 編輯: tropical72 來自: 180.177.76.142 (03/02 09:22)