Многомерная нормальная функция плотности в C++

Как я могу вычислить многомерную нормальную функцию плотности в C++ (для произвольного измерения) в численно устойчивым способом, а в идеале с минимальным количеством зависимостей?

Чтобы быть точным, я после логарифма плотности.


person Grzenio    schedule 17.01.2013    source источник
comment
Что такое численно устойчивый способ и минимальное количество зависимостей? Потому что, например, точное определение стабильности зависит от контекста, но оно выводится из точности алгоритма. Если вы уточните требования, будет меньше неправильных предложений.   -  person SChepurin    schedule 17.01.2013


Ответы (1)


Я бы рассчитал по формуле нормального распределения. Вы пробовали это?

person Satish    schedule 17.01.2013
comment
Вы понимаете, что интеграл для нормального распределения неразрешим и аппроксимируется только численными методами? - person amit; 17.01.2013
comment
@amit: Зачем вам это нужно интегрировать? - person Oliver Charlesworth; 17.01.2013
comment
да, он ищет PDF, а не CDF. Я не думаю, что есть необходимость интегрировать... просто оцените это. - person thang; 17.01.2013
comment
@amit, в формуле для плотности нет интеграла (есть в cdf). Существует определитель и обратная ковариационная матрица. Я не думаю, что в Boost есть что-то легкодоступное для расчета. Более того, прямое использование формулы в ее нынешнем виде может привести к численной нестабильности. - person Grzenio; 17.01.2013
comment
Извините, не прочитал вопрос должным образом. Это многомерный NDF. Я не знаю. - person Satish; 17.01.2013
comment
у вас есть случаи, когда могут быть корреляции между переменными? - person thang; 17.01.2013
comment
@thang, да, может быть корреляция. По сути, ковариационная матрица фиксирует все это. Мне нужно сделать его общим (к сожалению). - person Grzenio; 17.01.2013
comment
вы можете заглянуть в корневую библиотеку (root.cern.ch). в частности, посмотрите root.cern.ch/root/html/RooNDKeysPdf.html. Вероятно, делает больше, чем вы хотите, и, возможно, даже не то, что вы хотите, но попробовать стоит. Я не использовал root в течение длительного времени. - person thang; 17.01.2013