Расчет кучности

 

Есть фиксированный ряд чисел. Необходимо рассчитать "кучность" в процентном соотношении.

Пример 1: (23, 25, 24, 25, 22)

Пример 2: (23, 27, 24, 25, 21)

Какие мысли приходят мне в голову:

1) Берём минимум, максимум и среднеарифметическое:

пример 1: 22, 25, 23.8

пример 2: 21, 27, 24

2) Находим процентное соотношение между минимумом и средним, между максимумом и средним:

пример 1: 7.6% и -5%

пример 2: 12.5% и -12.5%

3) Находим разницу вычисленных процентных соотношений:

пример 1: 12.6%

пример 2: 25%


Всё ли верно я делаю?

 
AlexSTAL:

Есть фиксированный ряд чисел. Необходимо рассчитать "кучность" в процентном соотношении.

СКО / МО * 100%
 
PapaYozh:
СКО / МО * 100%

А для тех, у кого 3 класса образования расшифровать можно?
 
AlexSTAL:

А для тех, у кого 3 класса образования расшифровать можно?


СКО - среднеквадратическое отклонение

МО - математическое ожидание

Да, надо МО брать помодулю, т.е.

СКО / |МО| * 100%

 
PapaYozh:


СКО - среднеквадратическое отклонение

МО - математическое ожидание


Вы мне очень помогли этим!

В формулах МТ4 изобразите, как в примере?

 
AlexSTAL:

Вы мне очень помогли этим!

В формулах МТ4 изобразите, как в примере?


В википедии посмотрите как считается среднеквадратичное отклонение.

Все элементарно.

 
PapaYozh:

Все элементарно.


Да, всё просто, как дважды два четыре. Извините за беспокойство
 
Кто поможет написать код?
 
AlexSTAL:

Вы мне очень помогли этим!

В формулах МТ4 изобразите, как в примере?

Пример 1: (23, 25, 24, 25, 22)

Пример 2: (23, 27, 24, 25, 21)

В примитиве так:

int i;
double arr1[5] = { 23, 25, 24, 25, 22 };
double arr2[5] = { 23, 27, 24, 25, 21 };
double MO,D,SKO;

// 1
for ( MO=0, i=0; i<5; i++ )
   MO += arr1[i];
MO /= 5.0;

for ( D=0, i=0; i<5; i++ )
   D += MathPow( arr1[i] - MO, 2.0 );
D /= 5.0;

SKO = MathPow( D, 0.5 );
K = SKO / MathAbs( MO ) * 100.0;

Print("Кучность 1: ",K," %")

// 2
for ( MO=0, i=0; i<5; i++ )
   MO += arr2[i];
MO /= 5.0;

for ( D=0, i=0; i<5; i++ )
   D += MathPow( arr2[i] - MO, 2.0 );
D /= 5.0;

SKO = MathPow( D, 0.5 );
K = SKO / MathAbs( MO ) * 100.0;

Print("Кучность 2: ",K," %")
 
PapaYozh:

В примитиве так:


Премного благодарен.
 
AlexSTAL:

Премного благодарен.


Наверное, кучность надо вычислять как:

( 1.0 - SKO / MathAbs( MO ) ) * 100.0

тогда поучится, чем ближе число к 100.0, тем больше кучность.

Да и на 100.0 не обязательно умножать, будет коэффициент в диапазоне от 0.0 до 1.0