2015-09-28 29 views
0

所以我一直在研究PCA中的matlab異常檢測數據集。
我使用T^2和Q統計進行了降維和異常檢測。
但是我注意到,當我的代碼中出現真正的異常時,錯誤的數據被用來更新模型。我試圖阻止它,但無濟於事。
這裏是我的代碼:Hotelling的T^2和Q統計循環

for i =5:(size(Qlimit)) 
    if Q(i) > Qlimit(i) && Q(i-1) > Qlimit(i-1) && Q(i-2) > Qlimit(i-2) && Q(i-3) > Qlimit(i-3) && Q(i-4) > Qlimit(i-4) 
     for j = i:(i+Xwindow) 
      Qlimit(j) = Qlimit(j-1); 
      T2limit(j) = T2limit(j-1);   
     end 
    end 
end 

所以,我希望發生的是,如果Q值大於它的控制範圍我想用以前的值一定次數(Xwindow的代碼)時,但是當我這樣做,如果它發生在接近尾聲時,它會查找一個不存在的值。
我只查找Q統計量被違反的次數,因爲T^2只違反了幾個樣本,並且持續時間不長,但如果我得到它的Q值,則很容易實現T^2。

任何幫助,將不勝感激

回答

1

首先

if Q(i) > Qlimit(i) && Q(i-1) > Qlimit(i-1) && Q(i-2) > Qlimit(i-2) && Q(i-3) > Qlimit(i-3) && Q(i-4) > Qlimit(i-4) 

可以寫成

if all(Q(i-4:i) > Qlimit(i-4:i)) 

如果你擔心極端情況,那麼也許你可以試試:

if all(Q(max(0,i-4):i) > Qlimit(max(0,i-4):i)) 

我不明白你的問題與PCA有什麼關係,但我認爲你應該改變標題。

+0

使用PCA降低數據集的維數後,我使用霍特林的T^2和Q統計量來監測系統。 – MRaff16

+0

@ MRaff16那麼你的問題是關於「Hotelling的T^2和Q統計」,而不是你已經成功實施的PCA。所以,我認爲你應該改變標題。 – Dan

+0

對你更好嗎? – MRaff16