- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
6#
發表於 2013-6-20 14:56
| 只看該作者
回復 5# acdx
用回歸直線的方法排除差異過大的值,看看是否有幫助,
須注意這裡用的回歸直線是包含偏差值的資料所推出的直線,
所以deltaY值請自行斟酌- Sub Test()
- Dim d, fm
- Dim a, b, it
- Dim deltaY
-
- fm = Array(32.2, 44.3, 63, 79.1, 95.2, 111.3)
- Set d = CreateObject("scripting.dictionary")
- For i = 0 To UBound(fm)
- d(i) = fm(i)
- Next
-
- '回歸直線 fm=ax+b
- a = WorksheetFunction.Index(WorksheetFunction.LinEst(d.items, d.keys), 1)
- b = WorksheetFunction.Index(WorksheetFunction.LinEst(d.items, d.keys), 2)
-
- deltaY = 1.5 '與回歸線Y軸上的容許誤差
- For Each it In d.keys
- '排除誤差過大的值
- If Abs((it * a + b) - d(it)) > deltaY Then d.Remove it
- Next
-
- MsgBox Join(d.items, ",")
- Set d = Nothing
- End Sub
複製代碼 |
|