2017-06-21 21 views
0

我正在創建一個應用程序來監測水質。溫度數據每2分鐘更新一次到Firebase實時數據庫。 App有兩個要求檢測溫度波動的合適公式/算法

1),當溫度超過33度應該提醒用戶或低於23度 - 這部分已經完成

2)應提醒用戶,當它分析數據,每經過大的溫度波動30分鐘 - 這部分我很困惑。

我不知道用什麼算法來檢測一段時間內的大溫度波動並提醒用戶。有人可以幫助我嗎?

回答

1

對於30分鐘的時間,你的應用程序會給你15個值。

如果你想弄清楚這個數據有什麼大的改變,那麼有一種方法可以這樣做。 可以使用實現以下方法:

  1. 計算均值和中值的標準差

  2. 減去平均你的數據,然後把結果的絕對值。

  3. 比較絕對值是否大於一個標準差,如果它大於那麼你有一個大數據。

更好地理解看到這個例子:

讓假設你有10分鐘以下值:

25,27,24,35,28

第一步:

Mean = 27(apprx)

一個標準偏差= 3。8

第二步:絕對(數據 - 平均數)

ABS(25-27)= 2個

ABS(27-27)= 0

ABS(24-27) = 3個

ABS(35-27)= 8個

ABS(28-27)= 1

第三步

檢查是否有相減的比標準差越大

ABS(35-27)給出8,其大於3.8

所以,有一個大的波動。如果所有相減的結果都小於標準偏差,那麼沒有波動。

您仍然可以通過選擇兩個或三個標準偏差而不是一個標準偏差來即興創建結果。

+0

非常感謝你的好友。我想這正是我想要的。上述方法是否有數學名稱?將它包含在我的項目文檔中會很有幫助。 –

+0

一個跟蹤問題,如果30分鐘分析不是一個要求,那麼當新數據到達時,根據以前的數據測量巨大的波動是不是更準確,因爲在以下情況下使用上述方法可能不準確 - 22,30,28, 26,29,27,25,24。根據你的方法,從22到30的巨大波動將不會被檢測到。你不覺得30分鐘波動分析不起作用嗎? –

+0

這種方法被稱爲自適應檢測方法。我認爲30分鐘分析也應該起作用。計算的差值表示該值與平均值有多大偏差。您可以爲您的30分鐘實驗設置一些閾值,如果差異結果偏離一個標準偏差/兩個標準偏差,則表示一個波動。您可以嘗試計算您提供的數據集,並查看您的差異值是否大於標準差。 – Darpan

0

首先定義波動的含義。

你不說你正在使用什麼溫度表。華氏,攝氏,蘭金還是開爾文?

您的採樣率是每兩分鐘一個新的數據值。您是否將波動定義爲最後一點與當前值之差的絕對值?這是有道理的。

如果最大允許絕對值是您的業務中33-23 = 10度的某個倍數。

+0

它是攝氏溫度。儘管如果所有值都在23到33之間,連續數據中的23到30之間的大波動不是健康的讀數。因此,在將波動定義爲最後一點與當前值之差的絕對值時,您有一個好的點,因爲在以下情況下 - 22,30,28,26,29,27,25,24。從22到30的波動很大,但在30分鐘後沒有檢測到,因爲其他數據將在平均時平衡波動。 –