標題:
[發問]
如何判斷"斜率值"
[打印本頁]
作者:
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
Sub Test()
Dim i, cnt
With ActiveSheet.Range("C1:C28")
.FormulaR1C1 = "=COVAR(RC[-2]:R[2]C[-2],RC[-1]:R[2]C[-1])/VARP(RC[-2]:R[2]C[-2])"
.Value = .Value
For i = .Count To 1 Step -1
If Abs(.Cells(i).Value) <= 0.5 Then
cnt = cnt + 1
Else
If cnt >= 5 Then .Cells(i + 1).Resize(cnt).Delete xlShiftUp
cnt = 0
End If
Next
End With
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/)