Como vocês algoritmam a detecção de aglomerados de ração MA? - página 6

 

Calcularo preçomediano em um determinado intervalo com um determinado número de aproximações.

Olá. Há uma série de valores.

A tarefa é escrever uma função.

Parâmetros de entrada:

- a matriz contém números de elementos necessários para calcular a mediana - bufInBar[]

- tamanho da matriz -bufInBar[]- contar

- número de aproximações da mediana - fokus

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

Ou seja, há uma classe

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

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

Na saída :

BP[bufInBar[i]].Mediana; 

Preenchido em ordem ascendente, por exemplo, de 0 a 10.

Isto é, sefokus=10 na condição, então no intervalo i<contar os dez valores

BP[bufInBar[i]].Mediana;

será de 1 a 10.

Por exemplo

BP[3256].Mediana=0;
BP[6256].Mediana=1;
BP[9256].Mediana=2;
...
 
Não está claro o que é o fokus
 
Em teoria, a mediana é o valor do elemento no meio de uma matriz ordenada. O que é isso em seu caso?
 
Dmitry Fedoseev:
Não está claro o que é fokus
Aleksei Stepanenko:
Em teoria, a mediana é o valor do elemento no meio de uma matriz ordenada. O que é isso em seu caso?

Exemplo:

Conjunto de 30 valores de preço de MA, procure o meio do conjunto encomendado.

Recebemos o valor 15(L0) no meio da matriz, depois recebemos duas matrizes de L0 para baixo e L0 para cima e encontramos o meio dessas matrizes e assim por diante até obter o númerofokus (sete valores, por exemplo)

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

 
Mikhail Toptunov:

Exemplo:

Conjunto de 30 valores de preço de MA, procure o meio do conjunto encomendado.

Recebemos 15(L0) como o valor no meio da matriz, depois recebemos duas matrizes de L0 para baixo e L0 para cima e encontramos o meio dessas matrizes e assim por diante até obter o númerofokus (sete valores, por exemplo)

E se houver um número par de elementos de matriz, qual elemento será a mediana, ou deve ser calculado como a média de dois ou algo mais?

 
Mikhail Toptunov:

Exemplo:

Estou correto ao assumir que precisamos encontrar sete percentis: 12,5, 25, 37,5, 50, 62,5, 75, 87,5?

Se assim for, divida o número de elementos da matriz ordenada por 8 (7+1) e multiplique pelo número do percentil desejado. Obtemos os seguintes índices de elementos: 3, 7, 11, 15, 18, 22, 26.

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

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

double value=bufInBar[index];

Certo, ou estou indo na direção errada? Se assim for, o mais importante aqui é criar um mecanismo parcimonioso para manter uma matriz ordenada.

 
Por queMathQuantile() não pode ser usado?
 
Dmitry Fedoseev:

E se a matriz tiver um número par de elementos, qual elemento é a mediana, ou deve ser calculada como a média de dois ou algo assim?

Acho que é mais fácil tomar um valor inteiro uniforme.

Se houver 15 elementos, então a mediana é 8.

 
Aleksei Stepanenko:

Entendo corretamente que precisamos encontrar sete percentis: 12,5, 25, 37,5, 50, 62,5, 75, 87,5?

Se for o caso, divida o número de elementos da matriz ordenada por 8 (7+1), e multiplique pelo número do percentil requerido. Obtemos os seguintes índices de elementos: 3, 7, 11, 15, 18, 22, 26.

Certo, ou estou indo na direção errada? Se assim for, o mais importante aqui é criar um mecanismo parcimonioso para manter uma matriz ordenada.

Da matriz de valores de MA você precisa encontrar a mediana de toda a matriz, depois as medianas das matrizes obtidas acima/abaixo a primeira mediana, etc.

 

Parece certo então, a mediana da primeira parte da matriz é um quarto da matriz total, e é de 25 por cento. E a mediana da segunda parte é de 75 por cento.

Isto:

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

é igual a isto:

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