Можно ли аналитически интегрировать

10

Во-первых, под аналитической интеграцией, я имею в виду, существует ли правило интеграции для решения этой проблемы, в отличие от числового анализа (например, правил трапеции, Гаусса-Лежандра или Симпсона)?

У меня есть функция где - это функция плотности вероятности логнормального распределения с параметры и . Ниже я сокращу обозначение до и буду использовать для кумулятивной функции распределения.f(x)=xg(x;μ,σ)

g(x;μ,σ)=1σx2πe12σ2(log(x)μ)2
μσg(x)G(x)

Мне нужно вычислить интеграл

abf(x)dx.

В настоящее время я делаю это с помощью численного интегрирования с использованием метода Гаусса-Лежандра. Поскольку мне нужно выполнять это большое количество раз, важна производительность. Прежде чем я займусь оптимизацией численного анализа / других частей, я хотел бы знать, есть ли какие-либо правила интеграции для решения этой проблемы.

Я попытался применить правило интеграции по частям, и я достиг этого, где я снова застрял,

  1. udv=uvvdu .

  2. u=xdu=dx

  3. dv=g(x)dxv=G(x)

  4. uvvdx=xG(x)G(x)dx

Я застрял, потому что я не могу оценить G(x)dx .

Это для программного пакета, который я создаю.

Рош
источник
@ Рош, под вы подразумеваете плотность вероятности распределения? lognormal
mpiktas
1
Это выражается в виде постоянной разницы двух нормальных cdf-файлов. Нормальные cdf эффективно вычисляются с использованием рационального чебышевского приближения В. Коди. Вам не нужно и почти наверняка не следует отдавать предпочтение альтернативам численной интеграции. Если вам нужно больше деталей, я могу опубликовать их.
кардинал
@mpiktas, Да, lognormal - это функция плотности вероятности, а lognormalCDF - функция кумулятивной плотности.
Рош
3
@Rosh имеет логнормальное распределение, что означает, что обычно распространяется. Таким образом, подставьте в ваш исходный интеграл. Подынтегральное выражение - это экспонента, аргумент которой является квадратичной функцией от . Завершение квадрата превращает его в кратное нормального PDF, поэтому ваш ответ записывается в терминах обычного CDF и экспонент исходных конечных точек. Есть много хороших приближений к нормальному CDF (кратному функции ошибок). xlog(x)x=exp(y)y
whuber
1
Да, @whuber и я описывали одно и то же. Вы должны получить что-то вроде где и и обозначает нормальный cdf. Обратите внимание, что в зависимости от значений , , и , есть способы переписать это выражение, чтобы оно было более численно устойчивым. eμ+12σ2(Φ(β)Φ(α))β=(log(b)(μ+σ2))/σα=(log(a)(μ+σ2))/σΦ()abμσ
кардинал

Ответы:

15

Краткий ответ : нет, это невозможно, по крайней мере, с точки зрения элементарных функций. Однако существуют очень хорошие (и достаточно быстрые!) Численные алгоритмы для вычисления такой величины, и в этом случае они должны быть предпочтительнее любого метода численного интегрирования.

Количество процентов с точки зрения нормального cdf

Интересующая вас величина на самом деле тесно связана с условным средним логнормальной случайной величины. То есть, если распространяется как логнормальное с параметрами и , то, используя вашу нотацию, Xμσ

abf(x)dx=ab1σ2πe12σ2(log(x)μ)2dx=P(aXb)E(XaXb).

Чтобы получить выражение для этого интеграла, выполните подстановку . На первый взгляд это может показаться немотивированным. Но обратите внимание, что, используя эту замену, и простым изменением переменных, мы получаем где и .z=(log(x)(μ+σ2))/σx=eμ+σ2eσz

abf(x)dx=eμ+12σ2αβ12πe12z2dz,
α=(log(a)(μ+σ2))/σβ=(log(b)(μ+σ2))/σ

Следовательно, где - стандарт нормальная кумулятивная функция распределения.Φ ( x ) = x - 1

abf(x)dx=eμ+12σ2(Φ(β)Φ(α)),
Φ(x)=x12πez2/2dz

Численное приближение

Часто утверждается, что никакого известного выражения замкнутой формы для существует. Однако теорема Лиувилля начала 1800-х годов утверждает нечто более сильное: для этой функции не существует выражения в замкнутой форме . (Доказательство в этом конкретном случае см. В статье Брайана Конрада .)Φ(x)

Таким образом, нам осталось использовать численный алгоритм для аппроксимации желаемой величины. Это можно сделать с точностью до плавающей запятой двойной точности IEEE с помощью алгоритма WJ Cody's. Это стандартный алгоритм для этой задачи, и использование рациональных выражений из довольно низкого порядка, это довольно эффективно, тоже.

Вот ссылка, которая обсуждает приближение:

WJ Cody, Рациональные чебышевские приближения для функции ошибок , Math. Комп. , 1969, с. 631-637.

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

Вот связанный вопрос, если вам интересно.

кардинальный
источник