Добрый день, вопрос довольно специфичный, не уверен что могу даже верно сформулировать его для поиска на вашем необъятном форуме.
Задача - расчет энтропии лейкоцитарной формулы по адаптированной формуле Шеннона для неполной группы показателей.
Есть база данных пациентов с исходной информацией, нужно емкой формулой (в одной ячейке) расчитать показатель для каждого.
Целевая формула в текстовом виде выглядит следующим образом
h= H/Hmax
H= - Cумма Ai/100 x log2 Ai/100 Hmax = log2 n
h- относительная энтропия H - энтропия Hmax - предельная энтропия
Ai - процентное содержание группы лейкоцитов
n - количество групп лейкоцитов. В идеале должно быть 6, в исследовании доступно 5. ЕСЛИ какая либо из групп имеет значение A=0, то и предельную энтропию приходится уменьшать на одну группу и, собственно, считать относительную величину нежели строить выводы на базе непосредственно энтропии.
Проблема возникла при расчете H моя текущая формула выглядит следующим образом
источник проблемы LOG((A2:E2)/100;2)) если исходные данные содержат 0, расчет выдает ошибку ибо нелья посчитать логарифм нуля. как можно исключить из диапазона ячейки содержащие ноль? В конкретной подвыборке такой случай всего один, но в дальнейшем нули будут возникать повсеместно.
Добрый день, вопрос довольно специфичный, не уверен что могу даже верно сформулировать его для поиска на вашем необъятном форуме.
Задача - расчет энтропии лейкоцитарной формулы по адаптированной формуле Шеннона для неполной группы показателей.
Есть база данных пациентов с исходной информацией, нужно емкой формулой (в одной ячейке) расчитать показатель для каждого.
Целевая формула в текстовом виде выглядит следующим образом
h= H/Hmax
H= - Cумма Ai/100 x log2 Ai/100 Hmax = log2 n
h- относительная энтропия H - энтропия Hmax - предельная энтропия
Ai - процентное содержание группы лейкоцитов
n - количество групп лейкоцитов. В идеале должно быть 6, в исследовании доступно 5. ЕСЛИ какая либо из групп имеет значение A=0, то и предельную энтропию приходится уменьшать на одну группу и, собственно, считать относительную величину нежели строить выводы на базе непосредственно энтропии.
Проблема возникла при расчете H моя текущая формула выглядит следующим образом
источник проблемы LOG((A2:E2)/100;2)) если исходные данные содержат 0, расчет выдает ошибку ибо нелья посчитать логарифм нуля. как можно исключить из диапазона ячейки содержащие ноль? В конкретной подвыборке такой случай всего один, но в дальнейшем нули будут возникать повсеместно.Misanthrope
buchlotnik, спасибо за ответ, впервые столкнулся с формулой ЕОШ. Можете в кратце пояснить её работу в вашем олгаритме?
Если я все верно понимаю: 1) Функция ЕОШ отсматирвает ряд где расчитана формула логарифма для каждой ячейки 2) находит те ячейки где расчет произошел с ошибкой 3) таким образом выполняется уловие "истина" и ячейке с ошибкой присваивается значение ноль?
и опять же это работает только в массиве
Pelena, С разных сторон писал точно такую же поправку к формуле как Ваша, но она не работала до тех пор пока не ввел её как массив... в чем секрет? почему она не работает если не массив?
Спасибо, буду перечитывать статьи про массивы, похоже именно там скрывалась истина)
buchlotnik, спасибо за ответ, впервые столкнулся с формулой ЕОШ. Можете в кратце пояснить её работу в вашем олгаритме?
Если я все верно понимаю: 1) Функция ЕОШ отсматирвает ряд где расчитана формула логарифма для каждой ячейки 2) находит те ячейки где расчет произошел с ошибкой 3) таким образом выполняется уловие "истина" и ячейке с ошибкой присваивается значение ноль?
и опять же это работает только в массиве
Pelena, С разных сторон писал точно такую же поправку к формуле как Ваша, но она не работала до тех пор пока не ввел её как массив... в чем секрет? почему она не работает если не массив?
Спасибо, буду перечитывать статьи про массивы, похоже именно там скрывалась истина)Misanthrope
т.е. ЕОШ проверяет произошла ли ошибка вычислений, и передает функции ЕСЛИ значение ИСТИНА или ЛОЖЬ. Функция ЕСЛИ при значении ИСТИНА вернёт ноль, в противном случае - вычислит формулу. Общая формула массивная, потому что в качестве аргумента вбита не одна ячейка, а диапазон. Чтобы Excel это понял и на нас не ругался вводим формулу через ctrl+shift+enter
Misanthrope, конструкция такая
Код
=ЕСЛИ(ЕОШ(формула);0;формула)
т.е. ЕОШ проверяет произошла ли ошибка вычислений, и передает функции ЕСЛИ значение ИСТИНА или ЛОЖЬ. Функция ЕСЛИ при значении ИСТИНА вернёт ноль, в противном случае - вычислит формулу. Общая формула массивная, потому что в качестве аргумента вбита не одна ячейка, а диапазон. Чтобы Excel это понял и на нас не ругался вводим формулу через ctrl+shift+enterbuchlotnik