Принуждение набора чисел к гауссовой кривой

9

( Это относится к моему вопросу программирования о переполнении стека : гауссовский алгоритм кривой Белла (Python и / или C #) .)

На Answers.com я нашел этот простой пример:

  1. Найти среднее арифметическое (среднее) => Сумма всех значений в наборе, деленная на количество элементов в наборе
  2. Найти сумму квадратов всех значений в наборе
  3. Разделите вывод (2) на количество элементов в наборе
  4. Вычтите квадрат среднего (1) из результата (3)
  5. Возьмите квадратный корень из результата (4)

Пример: установить A = {1,3,4,5,7}

  1. (1 + 3 + 4 + 5 + 7) / 5 = 4
  2. (1 * 1 + 3 * 3 + 4 * 4 + 5 * 5 + 7 * 7) = 1 + 9 + 16 + 25 + 49 = 100
  3. 100/5 = 20
  4. 20 - 4 * 4 = 20-16 = 4
  5. SQRT (4) = 2

(Это из поста на wiki.answers.com .)

Теперь, учитывая все это, как я могу подогнать вышеуказанные данные к кривой колокольчика (такой как кредитный балл) в диапазоне от 200 до 800. Очевидно, что число 5 в приведенном выше наборе будет 500. Но тогда какова формула для определения того, что 3 должно быть в том же масштабе. Несмотря на то, что исходный набор Set A = {1,3,4,5,7} не является кривой колокольчика, я хочу привести его к кривой колокольчика.

Представьте, что это оценки 5 человек. В следующем месяце оценки могут измениться следующим образом: сет A2={1,2,4,5,9}(один парень теряет очко, а главный получает еще два очка - богатые становятся богаче, а бедные - беднее). Тогда возможно новый парень входит в набор: Сет A3={1,2,4,5,8,9}.

NealWalters
источник
2
Если ваш набор меняет время от времени, его невозможно подогнать к одной и той же кривой. Предположим, у вас есть набор , поэтому 4 должно быть 800, но если появится новое наблюдение 5, то оно должно стать 800.Aзнак равно{1,2,3,4}
mpiktas
1
Добро пожаловать в CrossValidated, NealWalters. Вы можете обнаружить, что распространенным ответом на вопрос статистики «Как мне это сделать» является «Почему вы хотите это сделать?»
остановка
@onestop - см. мою ссылку на предыдущий пост. В школе я помню слух учителей, которые оценивали «по кривой». Таким образом, независимо от того, какой балл вы получили на тесте, только определенный процент людей получит каждый балл. Я понятия не имею, как работают кредитные рейтинги, но это очень похоже на то, что я моделирую. Я даю людям очки, например, когда они выплачивают кредит. Но некоторые люди будут погашать десятки кредитов. Я хочу сжать мои дикие точки в набор нормализованных точек.
NealWalters
Читая ваш последний комментарий, я задаюсь вопросом, какой подход лучше: дайте, например, 1 балл за каждый выплаченный кредит, другие баллы за другие вещи, затем попытайтесь приручить огромный счет в конце, или, возможно, сделайте что-то более значимое с каждым компонентом, который составляет окончательный счет? Например, если вы начисляете баллы за погашенные кредиты, вы можете рассчитать баллы погашенных кредитов (LPO) в виде журнала (1 + NumberOfLoansPaidOff). Таким образом, кто-то с погашенными нулевыми кредитами получает LPO 0, кто-то с погашенными 3 кредитами получает LPO 1,1, а кто-то с 100 погашенными кредитами получает LPO 4,6. Cap LPO в 5.
Уэйн

Ответы:

13

Масштабированный диапазон , например, от 200 до 800 ( например , для спутниковых спутников ), представляет собой просто изменение единиц измерения . (Это работает точно так же, как изменение температуры в градусах Фаренгейта по сравнению с градусами Цельсия.)

Среднее значение 500 соответствует среднему значению данных. Предполагается, что диапазон соответствует примерно 99,7% данных, когда данные соответствуют нормальному распределению («кривая Белла»). Он гарантированно включить 8/9 данных ( неравенство Чебышева ).

В этом случае формула 1-5 вычисляет стандартное отклонение данных. Это просто новая единица измерения для исходных данных. Это должно соответствовать 100 единицам в новом масштабе. Поэтому, чтобы преобразовать исходное значение в масштабированное значение,

  • Вычтите среднее.

  • Разделите на стандартное отклонение.

  • Умножьте на 100.

  • Добавьте 500.

[200,800]

{1,3,4,5,7}421(1-4)/2*100+500знак равно350{350,450,500,550,650}

Nя (я-1/2)/NNзнак равно5язнак равно1,2,3,4,51/10,3/10,5/10,7/10,9/1010%,30%01[200,800]

{1,3,4,5,7}{372,448,500,552,628}

Этот подход « нормального подсчета » всегда будет давать оценки от 200 до 800, если у вас есть 370 или меньше значений. Если у вас 1111 или меньше значений, все, кроме самого высокого и самого низкого значения, будут иметь баллы от 200 до 800.

Whuber
источник
+1, я удалил свой ответ, так как ваш был намного лучше и сделал мой устаревшим :)
mpiktas
Где вы получаете 5 в 1-5? 4 - это среднее. Это должно быть 1-4? Я сегодня тестирую с Python, еще раз спасибо.
NealWalters
@NealWalters Извините, это было скольжение пальца. Я исправил это сейчас, так что он читает (1-4) / 2 * 100 + 500.
whuber
4

(individual_value-min_of_all_valuesmax_of_all_values-min_of-all_values-0,5)*2.

Fish_value-min_all_Fish_valuesmax_all_Fish_values-min_all_Fish_values*600+200

Если обратиться к исходному вопросу о SO и проблеме масштабируемости, преимущество этого подхода состоит в том, что при условии, что любая новая точка данных сама по себе не является новым максимумом или минимумом для набора данных в целом, вы можете применить вышеуказанные вычисления к новой точке данных. получить оценку от 200 до 800, не влияя ни на одну из существующих оценок исходного набора данных. Если новая точка данных является новым максимумом или минимумом, вам придется пересчитать оценки для всего набора данных с этим новым «нормализующим» максимальным или минимальным значением.

babelproofreader
источник