返回列表 上一主題 發帖

請問有辦法使用vba來作線性回歸嗎?

請問有辦法使用vba來作線性回歸嗎?

如果我有A、B欄資料

想要去作一線性回歸,有辦法使用vba辦到嗎??請各位高手釋疑

如果我有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
   
留意LINEST是陣列公式, 要選上兩個格,然後輸公式, 最後不要只按ENTER,要按CTRL+SHIFT+ENTER
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

感謝 樓上回覆…

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

不知道該怎麼寫出來

TOP

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

所以才會有此一問,如何用vba寫出來,感謝~

TOP

我用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
複製代碼

TOP

回復 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)"
這行程式碼…好像算不出截距來

能不能請你再指點迷津??感謝啊

TOP

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

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

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

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

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

步驟1.先建個圖表,然後右擊加上趨勢線

步驟2. 第1頁,我只懂第1個和這個 :D

步驟3.打勾"顯示公式"

完成, VBA的話可以用這句找出公式
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.text


用同樣方法,可以得出2次方程公式


II. 如果是想EXCEL自己找出個X的Y值 (直線方程)
如X是10的話Y是什麼
=FORECAST(10,A2:A6,B2:B6)  

Excel VBA
application.Worksheetfunction.Forecast(10,RANGE("B2:B5"),RANGE("A2:A5"))

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

vba 只是作輔助用途,真正的功能是在excel本身
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

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

TOP

        靜思自在 : 原諒別人就是善待自己。
返回列表 上一主題