Board logo

標題: [發問] 如何判斷"斜率值" [打印本頁]

作者: 518587    時間: 2014-6-5 13:48     標題: 如何判斷"斜率值"

想請教各位大大們

如果我有一筆數據如下,

A    B
1        1
2        1
3        2
4        3
5        4
6        5
7        6
8        5
9        4
10        3
11        2
12        1
13        1
14        1
15        2
16        3
17        4
18        5
19        6
20        5
21        4
22        3
23        2
24        1
25        1
26        1
27        1
28        1
29        1
30        2

畫出來圖如下,
[attach]18441[/attach]

我的問題是

假設我想以每3筆資料來看(ex. 123、234、345...),求出每組的斜率值,

並假設如果斜率值連續5組都介於-0.5~0.5之間,則將值去除,如果沒有則繼續。

麻煩各位,謝謝。

※迴歸線斜率的計算方式是:
[attach]18442[/attach]
作者: 518587    時間: 2014-6-6 13:23

各位大大能否幫忙我~~
作者: stillfish00    時間: 2014-6-6 16:25

回復 2# 518587
看不懂要算甚麼,你期望算完的值應該是如何?
作者: 518587    時間: 2014-6-6 21:18

大大你好,

我想算出的是,判斷每組斜率值,如果斜率值連續5組都介於在-0.5~0.5之間的話,將值刪除,沒有的話則保留。

跪求各位大大ㄉ幫忙~~拜託
作者: 518587    時間: 2014-6-7 21:55

假設說,

我以A列每三個為一組(ex. 123,234,345,一直依序下去),
運用上面所提到的迴歸線斜率來算出每組的斜率值,
例如,A列(123)為一組
x為A列值,
y為B列值,
x平均為=(1+2+3)/3=2
y平均為=(1+1+2)/3=1.333

帶入公式則,

斜率值(b) = (((1-2)*(1-1.333))+((2-2)*(1-1.333))+((3-2)*(2-1.333))) / ((1-2)^2+(2-2)^2+(3-2)^2) = 0.5  (此為123組的斜率值)

A列(234)的斜率
x平均=(2+3+4)/3=3
y平均=(1+2+3)/3=2
234組斜率為 = (((2-3)*(1-2))+((3-3)*(2-2))+((4-3)*(3-2))) / ((2-3)^2+(3-3)^2+(4-3)^2) = 1  (此為234組的斜率值)
...依序往下

將所有斜率值算完後,
我要如何判斷,當我的斜率值如果連續超過5筆都介於在-0.5~0.5之間,則將這些值刪除,沒有的話則繼續判斷,直到結束。

如何寫成VBA  拜託各位幫忙了。
作者: stillfish00    時間: 2014-6-8 01:11

回復 5# 518587
  1. Sub Test()
  2.     Dim i, cnt
  3.    
  4.     With ActiveSheet.Range("C1:C28")
  5.         .FormulaR1C1 = "=COVAR(RC[-2]:R[2]C[-2],RC[-1]:R[2]C[-1])/VARP(RC[-2]:R[2]C[-2])"
  6.         .Value = .Value
  7.         For i = .Count To 1 Step -1
  8.             If Abs(.Cells(i).Value) <= 0.5 Then
  9.                 cnt = cnt + 1
  10.             Else
  11.                 If cnt >= 5 Then .Cells(i + 1).Resize(cnt).Delete xlShiftUp
  12.                 cnt = 0
  13.             End If
  14.         Next
  15.     End With
  16. End Sub
複製代碼

作者: 518587    時間: 2014-6-8 14:46

回復 6# stillfish00

謝謝您的指點,

但我有個小疑惑

我如果AB列都增加了值之後,如下

A     B   
1        1
2        1
3        2
4        3
5        4
6        5
7        6
8        5
9        4
10        3
11        2
12        1
13        1
14        1
15        2
16        3
17        4
18        5
19        6
20        5
21        4
22        3
23        2
24        1
25        1
26        1
27        1
28        1
29        1
30        2
31        3
32        4
33        5
34        6
35        5
36        4
37        3
38        2
39        1
40        1
41        1
42        2

我將Range("C1:C28")改為Range("C1:C40")
他算出來的斜率值跟一開始算的不一樣,且沒辦法將斜率值刪除。
拜託幫我解決疑問,感謝感謝~
作者: 518587    時間: 2014-6-9 19:38

大大們,幫小弟解決這個疑惑




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