2013-04-09 10 views
1

와 나는 약간 주가에 대한 OHLC 시간 시리즈가 : 플롯에서 볼 수 있듯이,이 개 아래로 스파이크가OHCL 시계열 - 변형 탐지 다변량 가우시안 분포

library(quantmod) 
library(mnormt) 
library(MASS) 

download.file("http://dl.dropbox.com/u/25747565/941.RData", destfile="test.RData") 
load("test.RData") 
chartSeries(p) 

941 OHLC time series

있습니다를, 대부분 일종의 데이터 오류로 인한 것입니다. 이 두 가지 잘못된 데이터 요소가 포함 된 행을 검색하기 위해 다 변수 가우스를 사용하고 싶습니다.

Error in pd.solve(varcov, log.det = TRUE) : x appears to be not symmetric 

이 오류 :

x <- coredata(p[,1:4]) 
mu <- apply(x, 2, mean) 
sigma <- cov.rob(x)$cov 
prob <- apply(x, 1, dmnorm, mean = mu, varcov = sigma, log = TRUE) 

그러나,이 코드는 다음과 같은 오류를 던졌습니다 : 여기

> x[122,] 
941.Open 941.High 941.Low 941.Close 
    85.60  86.65  5.36  86.20 
> x[136,] 
941.Open 941.High 941.Low 941.Close 
    84.15  85.60  54.20  85.45 

각 데이터 포인트의 확률 분포에 맞게 및 계산하는 내 코드입니다 공분산 행렬을 계산하기 위해 표준 cov() 함수를 사용했지만 강력한 공분산 행렬 함수를 사용했을 때만 나타났습니다. 공분산 행렬 자체는 나에게 상당히 상냥하게 보이므로 어떤 일이 일어나고 있는지 잘 모르겠습니다. 공분산 행렬의 견고한 추정을 사용하려는 이유는 표준 공분산 행렬이 훈련 세트에 이상을 포함하고 있기 때문에 몇 가지 오 탐지 (false positive)를주기 때문입니다.

누군가는 말해 줄 수 :이 방법도 의미를 만드는 경우

A) 방법이

B)를 해결하기 위해

감사합니다!

P. Cross Validated에서 게시하는 것을 고려했지만 "프로그래밍"문제와 같이 SO가 더 적절하다고 생각했습니다.

답변

1

당신은 바로 가고 있습니다. 나는 오류를 수정하는 방법을 모르지만 새로운 점의 색인을 찾는 방법을 제안 할 수 있습니다.

  1. 훈련 데이터는 달리 교차 검증 및 테스트 결과가 귀하의 요구 사항에 따라

    mu=mean(traindata); 
        sigma=cov(traindata); 
    
  2. 설정 엡실론으로 MATLAB 에

  3. 계산 말은 고통과 공분산 것 이상의 소수가있을 수 있습니다

    count=0; 
        Actual=[]; 
        for j=1:size(cv,1) 
        p=mvnpdf(cv(j,:),mu,sigma); 
         if p<eplison 
         count=count+1; 
         Actual=[Actual;j]; 
          fprintf('j=%d \t p=%e\n',j,p); 
        end 
    end 
    
  4. 튠 임계 값 만족스러운 결과를 얻지 못하면

  5. 완료 테스트 데이터에 모델을 적용 (F-1 점수가 1이면, 당신이 바로 그것을했다) 모델 F-1 점수를 사용하여 평가!