2016-07-10 2 views
0

현재 Tools. Quartiles Method (Double[,] ,DoubleRange[])을 사용하여 column vector (N x 1matrix)의 5th percentile을 계산하는 방법을 찾고 있습니다. 이에 대한 도움이 필요합니다. 내가 제대로 입력을 하는 방법을 알고하지 않는Accord.Net Statistics.Tools. 4 분위수 방법()

지금까지 내 문제는 방법 내에서 유형DoubleRange[]의 인수에서 비롯됩니다. 사용되는 코드의 조각의 그림으로 검색 할 :

double[,] PMat = Matrix.ToMatrix(dat); // dat being of Type DataTable...methods works 

을 내가 정의한 Accord.Math.ToolsAccord.Statistics.Tools

사이의 ambigous Tools 이름을 감안할 때 :

double[] Percentile = Accord.Statistics.Tools.Quartiles(PMat, xxxx) 
        // all attempts using xxxx has mechanically lead to: 

Error: The best overloaded method match for Accord.Statistics.Tools.Quartiles(double[*,*], out AForge.DoubleRange[]) has some invalid arguments

수정 : 내 아이디어는 ca 주위에 방법 등의 0.2 Quartile을 lculating 난 그냥 백분위 수를 얻을 필요

답변

1

... 그래서, Accord.Statistics.Tools.Quartiles(PMat, 0.2)

가장 좋아하는 마음 뭔가했고 제가에 정착하는 것은이었다

Accord.Statistics.Distributions.Univariate.EmpiricalDistribution 

으로 당신의 가치는 다음 double[]에있는 경우 있음 :

EmpiricalDistribution distribution = new EmpiricalDistribution(values); 
distribution.InverseDistributionFunction(0.05); 

당신에게 5 백분위를 제공합니다.

참고 : 경험적 분포는 매개 변수가 아닙니다. 백분위 수는 데이터가 정렬되면 해당 위치의 데이터 값입니다. (위의 방법으로 제작 된) 첨부 된 그래프에서 볼 수 있듯이 더 보간 피팅가 없습니다 :

InverseDistributionFunction against percentile

+0

물론, 그러나 당신의 제안은 당신이 알고있는 경우 관련 (또는 할 수 있음을 유의하시기 바랍니다 기본 데이터의 '배포'에 대한 가정 (즉, 'CDF'를 알고 있음). 제 질문은 'P/L'의 분포로 끝나는 '역사적 시뮬레이션'과 같은 경험에 더 중점을 두었고, 경험적 분포를 가정하지 않고이 데이터의 '5 번째 백분위'에 관심이 있습니다. –

+0

@ dark.vador, 나는 아직도 그것이 당신이 원하는 것을한다고 생각합니다. 나는 그림을 편집하고 추가했다. –

+0

네, 그렇습니다. 건배 –

관련 문제