Board logo

標題: 請問有辦法使用vba來作線性回歸嗎? [打印本頁]

作者: gkld    時間: 2013-1-27 21:57     標題: 請問有辦法使用vba來作線性回歸嗎?

如果我有A、B欄資料

想要去作一線性回歸,有辦法使用vba辦到嗎??請各位高手釋疑
作者: kimbal    時間: 2013-1-27 23:54

如果我有A、B欄資料

想要去作一線性回歸,有辦法使用vba辦到嗎??請各位高手釋疑
gkld 發表於 2013-1-27 21:57


EXCEL有自帶線性回歸公式LINEST
如下圖,自動找出
A7和B7
A7 的2 等於Y=1+2X的 2
B7 的1 等於Y=1+2X的 1
    [attach]14078[/attach]
留意LINEST是陣列公式, 要選上兩個格,然後輸公式, 最後不要只按ENTER,要按CTRL+SHIFT+ENTER
作者: gkld    時間: 2013-1-28 00:19

感謝 樓上回覆…

我曉得excel有自建函數功能有,但是我如果要在vba裡面使用,或是找出回歸的方程式

不知道該怎麼寫出來
作者: gkld    時間: 2013-1-28 00:27

我用appliction.linest,只能跑出上例中的 2值出來

所以才會有此一問,如何用vba寫出來,感謝~
作者: c_c_lai    時間: 2013-1-28 07:11

我用appliction.linest,只能跑出上例中的 2值出來

所以才會有此一問,如何用vba寫出來,感謝~
gkld 發表於 2013-1-28 00:27

比較單純一點就是照 Kimbal 版大的用法:
  1. Sub Test()
  2.     [A8].Formula = "=ROUND(LINEST(B2:B5,A2:A5),0)"
  3.     [B8].Formula = "=ROUND(LINEST(A2:A5,B2:B5),0)"
  4. End Sub
複製代碼

作者: gkld    時間: 2013-1-28 19:13

回復 5# c_c_lai
c_c_lai大:
不好意思…我看不太懂你的解答
您的解答
[A8].Formula = "=ROUND(LINEST(B2:B5,A2:A5),0)"
可以求出回歸後的斜率
可是
[B8].Formula = "=ROUND(LINEST(A2:A5,B2:B5),0)"
這行程式碼…好像算不出截距來

能不能請你再指點迷津??感謝啊
作者: kimbal    時間: 2013-1-28 23:31

本帖最後由 kimbal 於 2013-1-28 23:41 編輯
感謝 樓上回覆…

我曉得excel有自建函數功能有,但是我如果要在vba裡面使用,或是找出回歸的方程式

不 ...
gkld 發表於 2013-1-28 00:19

不太清楚你想要的是什麼, 小弟試試向幾個方向答 (小弟只懂統計學皮毛,如有錯誤請多多包涵)

I. 如果是想找出人看的方程式,可以用圖表的"趨勢線"功能

步驟1.先建個圖表,然後右擊加上趨勢線
[attach]14093[/attach]
步驟2. 第1頁,我只懂第1個和這個 :D
[attach]14094[/attach]
步驟3.打勾"顯示公式"
[attach]14095[/attach]
完成, VBA的話可以用這句找出公式
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.text
[attach]14096[/attach]

用同樣方法,可以得出2次方程公式
[attach]14097[/attach]

II. 如果是想EXCEL自己找出個X的Y值 (直線方程)
如X是10的話Y是什麼
=FORECAST(10,A2:A6,B2:B6)  
[attach]14098[/attach]
Excel VBA
application.Worksheetfunction.Forecast(10,RANGE("B2:B5"),RANGE("A2:A5"))

如果不是直線的話可以參考一下這裡:
http://www.statr.cn/?p=82

vba 只是作輔助用途,真正的功能是在excel本身
作者: gkld    時間: 2013-1-30 18:17

回復 7# kimbal
感謝kimbal版大熱心解答,你說你懂皮毛,太客氣了
本來我想說用vba可以找出線性回歸方程式y=ax+b的a(斜率)及c(截距)值,這樣就可以求得我想要的y值
經版大這樣的解說
原來forecast就可以解決我的問題了~
感謝謝!!:D




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)