MAフィードクラスターの検出をどのようにアルゴリズム化しているのでしょうか? - ページ 6

 

与えられた区間の中央値を、与えられた近似回数で計算する。

こんにちは 値の配列があります。

課題は、関数を書くことです。

入力パラメータ。

- 中央値を計算するために必要な要素数を格納した配列 - bufInBar[].

- 配列サイズ -bufInBar[]- カウント

- 中央値近似の数 - fokus

void medianaL0(const int &bufInBar[], int count, int fokus)

すなわち、クラスが存在する

bufInBar[i] - используется для загрузки нужного элемента при расчете медианы 

BP[bufInBar[i]].CenaPerioda; - по этому значению рассчитывается медиана
BP[bufInBar[i]].Period; 

出力中 :

BP[bufInBar[i]].Mediana; 

昇順に記入(例:0から10まで)。

すなわち、条件でfokus=10とすると、区間i<10個の値を数えるときに

BP[bufInBar[i]].Mediana;

は1~10となります。

例えば

BP[3256].Mediana=0;
BP[6256].Mediana=1;
BP[9256].Mediana=2;
...
 
フォーカスが 何であるかは明らかではない
 
理論的には、中央値とは、順序付き配列の真ん中の要素の値である。あなたの場合はどうなんですか?
 
Dmitry Fedoseev:
fokusが 何であるかは不明である
Aleksei Stepanenko:
理論的には、中央値とは、順序付き配列の真ん中の要素の値です。あなたの場合はどうなんですか?

30個のMA値からなる配列で、順序付き配列の中央を 探す。

配列の真ん中にある15(L0)の 値を取得し、次にL0の下とL0の上から2つの配列を取得し、これらの配列の真ん中を求め、フォーカスの(例えば7つの値)を取得するまで繰り返す。

                        --------------|--------------
                        -------|--------------|------
                        ---|-------|------|-------|--
fokus=7
| - значение цены
        

 
Mikhail Toptunov:

30個のMA値からなる配列で、順序付き配列の中央を 探す。

配列の真ん中の値として15(L0) を求め、次にL0から下とL0から上の2つの配列を求め、これらの配列の真ん中を求め、フォーカスの(例えば7つの値)を求めるまで続ける。

また、配列の要素が偶数個の場合、どの要素が中央値になるのか、それとも2つの平均値などで計算すべきなのでしょうか?

 
Mikhail Toptunov:

12.5、25、37.5、50、62.5、75、87.5の7つのパーセンタイルを求める必要があると考えてよいでしょうか。

その場合は、順序付き配列の要素数を8で割って(7+1)、欲しいパーセンテージの数を掛ければよい。以下のような要素インデックスが得られる。3, 7, 11, 15, 18, 22, 26.

int index=ArraySize(bufInBar)*percentile/(fokus+1);

//где percentile - номер нужного перцентиля от 1 до fokus 

double value=bufInBar[index];

そうなのか、それとも道を間違えているのか?もしそうなら、ここで最も重要なことは、順序付き配列を維持するための簡便なメカニズムを作ることです。

 
MathQuantile() はなぜ使えないのですか?
 
Dmitry Fedoseev:

また、配列の要素が偶数個の場合、どの要素が中央値なのか、それとも2つの平均値か何かで計算すべきなのでしょうか?

偶数の整数値を取る方が簡単だと思います。

15個の要素があれば、中央値は8となる。

 
Aleksei Stepanenko:

12.5、25、37.5、50、62.5、75、87.5の7つのパーセンタイルを求める必要があると考えてよいでしょうか。

その場合、順序付き配列の要素数を8で割り(7+1)、必要なパーセンタイルの数を掛ける。以下のような要素インデックスが得られる。3, 7, 11, 15, 18, 22, 26.

そうなのか、それとも道を間違えているのか?もしそうなら、ここで最も重要なことは、順序付き配列を維持するための簡便なメカニズムを作ることです。

MA値の配列から配列全体の中央値を求め、次に最初の中央値より上/下の配列の中央値を求める、といった具合です。

 

その時は、配列の最初の部分の中央値が配列全体の4分の1であり、25パーセンタイルであることが正しいようです。そして、第2部の中央値は75パーセンタイルです。

これです。

                        --------------|---------------
                        -------|--------------|-------
                        ---|-------|------|-------|---

はこれに等しい。

                        ---|---|---|---|---|---|---|---