Повторный вызов диапазона чисел в зависимости от интервала, к которому они принадлежат - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть следующая таблица преобразования:

enter image description here

, и мне нужно преобразовать значения второго столбца в значения в первом столбце,как непрерывные переменные.

В настоящее время я пытаюсь написать функцию, которая принимает значение из второго столбца, проверяет его действительность и затем использует следующую формулу преобразования для преобразования данных:

enter image description here

Код в настоящее время выглядит следующим образом:

Public Function ReScale (input As Double)

  'Max and Min values of the old scale.
   Dim MinOld As Double: MinOld = 2
   Dim MaxOld As Double: MaxOld = 6

  'Test input value validity.
   If input > MaxOld Or input < MinOld Then
     ReScale = CVErr(xlErrNA)
   End

   Dim MinNew As Double
   Dim MaxNew As Double

   'Find in which interval the input value belongs.
   If input >= 5.5 Then
     MinOld = 5.5
     MaxOld = 6.0
     MinNew = 85
     MaxNew = 100
   ElseIf input >= 4.50 And input <= 5.49 Then
     MinOld = 4.50
     MaxOld = 5.49
     MinNew = 65
     MaxNew = 84
   ...` <--------------------- Question?

  'Transform the old data to the new scale.
   ReScale = ( (MaxNew - MinNew) / (MaxOld - MinOld) ) * (input - MaxOld) + MaxNew

End Function

Мой вопрос:

Должен ли я искать MaxNew, MinNew, MaxOld и MinOld в зависимости от значения переменной или я должен использовать абсолютный минимум и максимум?

Есть ли более простой способ сделать это?


1 Ответ

0 голосов
/ 22 ноября 2018

Это что-то вроде испытания кадра:

В настоящее время эта система оценивания дает действительно резкое изменение структуры классификации на границах.Например, взгляните на следующие преобразования:
from 3.2 input to 3.3 input is an output change of 1.84, from 3.3 input to 3.4 input is an output change of 1.84, from 3.4 input to 3.5 input is an output change of 2.65, from 3.5 input to 3.6 input is an output change of 1.92, from 3.6 input to 3.7 input is an output change of 1.92

Оценка Кривая обычно называется так, что по причине - чтобы получить гладкоеРаспределение и переход.Если бы вам пришлось сбросить кубическую линию тренда на вашем графике, вы можете почти (но не совсем) попасть туда с помощью y = 0.0015x^3 - 0.1115x^2 + 4.545x - 5.5277:
Graph showing trendline and converted values
(Iобведены резкими переходами, и тот факт, что данное уравнение в настоящее время становится отрицательным при x=2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...