Примерное

35

Недавно я смотрел на симуляцию Монте-Карло и использовал ее для аппроксимации констант, таких как π (окружность внутри прямоугольника, пропорциональная область).

Однако я не могу придумать соответствующий метод аппроксимации значения e [число Эйлера] с использованием интеграции Монте-Карло.

Есть ли у вас какие-либо указания о том, как это можно сделать?

статистикаnewbie12345
источник
7
Есть много, много, много способов сделать это. То, что это так, может стать очевидным, если подумать о том, что делает Rкоманда 2 + mean(exp(-lgamma(ceiling(1/runif(1e5))-1))). (Если использование гамма-функции журнала вас беспокоит, замените ее 2 + mean(1/factorial(ceiling(1/runif(1e5))-2)), которая использует только сложение, умножение, деление и усечение, и игнорируйте предупреждения о переполнении.) Что может быть более интересным, так это эффективные симуляции: можете ли вы минимизировать количество вычислительные шаги, необходимые для оценки e с любой заданной точностью?
whuber
4
Какой восхитительный вопрос! Я с нетерпением жду, чтобы прочитать ответы других. Один из способов, которым вы могли бы действительно привлечь внимание к этому вопросу - возможно, еще полдюжины ответов, - это пересмотреть вопрос и попросить дать эффективные ответы, как предлагает Уабер. Это как кошачья мята для пользователей резюме.
Sycorax сообщает, что восстановит Монику
1
@EngrStudent Я не уверен, что геометрический аналог существует для e . Это просто не естественно (каламбур) геометрическая величина, как π .
Аксакал
6
@Aksakal e - это исключительно геометрическая величина. На самом элементарном уровне это естественно проявляется в выражениях для областей, связанных с гиперболами. На более продвинутом уровне это тесно связано со всеми периодическими функциями, включая тригонометрические функции, геометрическое содержание которых очевидно. Реальная проблема здесь в том , что это просто так легко моделировать значения , связанные с e !
whuber
2
@StatsStudent: e само по себе не интересно. Однако, если это приводит к несмещенным оценкам величин, таких как
exp{0xf(y)dG(y)}
это может оказаться наиболее полезным для алгоритмов MCMC.
Сиань

Ответы:

34

Простой и элегантный способ оценки по Монте-Карло описан в этой статье . Бумага на самом деле об обучении e . Следовательно, подход кажется идеально подходящим для вашей цели. Идея основана на упражнении из популярного российского учебника по теории вероятностей Гнеденко. Смотри ex.22 на стр.183ee

Случается так, что , где ξ - случайная величина, которая определяется следующим образом. Это минимальное число п такое , что Σ п я = 1 г я > 1 и г я случайные числа от равномерного распределения на [ 0 , 1 ] . Красиво, не правда ли ?!E[ξ]=eξni=1nri>1ri[0,1]

Поскольку это упражнение, я не уверен, что для меня было бы здорово опубликовать решение (доказательство) здесь :) Если вы хотите доказать это сами, вот совет: глава называется «Моменты», которая должна указывать Вы в правильном направлении.

Если вы хотите реализовать это самостоятельно, не читайте дальше!

Это простой алгоритм для моделирования Монте-Карло. Нарисуйте случайный случайный случай, затем еще один и так далее, пока сумма не превысит 1. Количество нарисованных рандомов - ваше первое испытание. Допустим, вы получили:

 0.0180
 0.4596
 0.7920

Затем ваше первое испытание было выполнено 3. Продолжайте выполнять эти испытания, и вы заметите, что в среднем вы получаете .e

Код MATLAB, результат моделирования и гистограмма следуют.

N = 10000000;
n = N;
s = 0;
i = 0;
maxl = 0;
f = 0;
while n > 0
    s = s + rand;
    i = i + 1;
    if s > 1
        if i > maxl
            f(i) = 1;
            maxl = i;
        else
            f(i) = f(i) + 1;
        end
        i = 0;
        s = 0;
        n = n - 1;
    end
end

disp ((1:maxl)*f'/sum(f))
bar(f/sum(f))
grid on

f/sum(f)

Результат и гистограмма:

2.7183


ans =

  Columns 1 through 8

         0    0.5000    0.3332    0.1250    0.0334    0.0070    0.0012    0.0002

  Columns 9 through 11

    0.0000    0.0000    0.0000

введите описание изображения здесь

ОБНОВЛЕНИЕ: я обновил свой код, чтобы избавиться от массива результатов испытаний, чтобы он не занимал ОЗУ. Я также напечатал оценку PMF.

Обновление 2: вот мое решение Excel. Поместите кнопку в Excel и свяжите ее со следующим макросом VBA:

Private Sub CommandButton1_Click()
n = Cells(1, 4).Value
Range("A:B").Value = ""
n = n
s = 0
i = 0
maxl = 0
Cells(1, 2).Value = "Frequency"
Cells(1, 1).Value = "n"
Cells(1, 3).Value = "# of trials"
Cells(2, 3).Value = "simulated e"
While n > 0
    s = s + Rnd()
    i = i + 1
    If s > 1 Then
        If i > maxl Then
            Cells(i, 1).Value = i
            Cells(i, 2).Value = 1
            maxl = i
        Else
            Cells(i, 1).Value = i
            Cells(i, 2).Value = Cells(i, 2).Value + 1
        End If
        i = 0
        s = 0
        n = n - 1
    End If
Wend


s = 0
For i = 2 To maxl
    s = s + Cells(i, 1) * Cells(i, 2)
Next


Cells(2, 4).Value = s / Cells(1, 4).Value

Rem bar (f / Sum(f))
Rem grid on

Rem f/sum(f)

End Sub

Введите количество испытаний, например 1000, в ячейку D1 и нажмите кнопку. Вот как должен выглядеть экран после первого запуска:

введите описание изображения здесь

ОБНОВЛЕНИЕ 3: Серебряная рыбка вдохновила меня на другой путь, не такой элегантный, как первый, но все же крутой. Он рассчитал объемы n-симплексов с использованием последовательностей Соболя .

s = 2;
for i=2:10
    p=sobolset(i);
    N = 10000;
    X=net(p,N)';
    s = s + (sum(sum(X)<1)/N);
end
disp(s)

2.712800000000001

По совпадению он написал первую книгу о методе Монте-Карло, которую я прочитал еще в старшей школе. На мой взгляд, это лучшее введение в метод.

ОБНОВЛЕНИЕ 4:

Silverfish в комментариях предложил простую реализацию формулы Excel. Вот такой результат вы получите с его подходом после примерно 1 миллиона случайных чисел и 185K испытаний:

введите описание изображения здесь

Очевидно, что это намного медленнее, чем реализация Excel VBA. Особенно, если вы измените мой код VBA, чтобы не обновлять значения ячеек внутри цикла, а делать это только после сбора всей статистики.

ОБНОВЛЕНИЕ 5

Решение Сианя №3 тесно связано (или даже в некотором смысле то же, что и комментарий jwg в ветке). Сложно сказать, кто придумал эту идею сначала Форсайт или Гнеденко. Оригинальное издание Гнеденко 1950 года на русском языке не имеет разделов «Проблемы» в главах. Таким образом, я не смог найти эту проблему с первого взгляда, где она есть в более поздних выпусках. Возможно это было добавлено позже или похоронено в тексте.

Как я прокомментировал в ответе Сианя, подход Форсайта связан с другой интересной областью: распределением расстояний между пиками (экстремумами) в случайных (IID) последовательностях. Среднее расстояние оказывается равным 3. Последовательность обратного хода в подходе Форсайта заканчивается дном, поэтому, если вы продолжите выборку, вы получите еще одно дно в какой-то момент, затем еще одно и т. Д. Вы можете отслеживать расстояние между ними и строить распределение.

Аксакал
источник
Ух ты, круто! Не могли бы вы добавить параграф или два, объясняющие, почему это работает?
Sycorax говорит восстановить Монику
7
(+1) Гениально! Ответ заслуживает самой высокой оценки, поскольку он опирается только на унифицированное моделирование. И не использует никакого приближения, кроме того, что связано с Монте-Карло. То, что он соединяется с Гнеденко, является еще одним преимуществом.
Сиань
2
Mean[Table[ Length[NestWhileList[(Random[]+#) &, Random[], #<1&]], {10^6}]]
4
@wolfies Следующий прямой перевод Rрешения, которое я разместил в ответе Сианя, в двадцать раз быстрее:n=10^6; 1. / Mean[UnitStep[Differences[Sort[RandomReal[{0, n}, n + 1]]] - 1]]
whuber
1
e
19

Я предлагаю опровергнуть ответ Аксакала. Он беспристрастен и опирается только на метод генерации единичных отклонений.

e

loge

e

nni1n1np=(11n)n.

exp(1)=limn(11n)n

поэтому мы также можем написать

exp(1)p^=i=1mIiBjm

То есть наша оценка находится путем оценки вероятности того, что конкретное наблюдение опущено из начальной загрузки во многих таких - то есть доли вхождений объекта в начальной загрузке.pmBji

В этом приближении есть два источника ошибок. Конечное всегда будет означать, что результаты приблизительны, то есть оценка смещена. Кроме того, будет колебаться вокруг истинного значения, потому что это симуляция.np^

Я нахожу этот подход несколько очаровательным, потому что студент или другой человек, у которого достаточно мало дел, могут приблизиться к используя колоду карт, кучу маленьких камней или любые другие предметы в руке, в том же ключе, что и человек, которого можно оценить используя компас, прямой край и несколько песчинок. Я думаю, что это хорошо, когда математика может быть отделена от современных удобств, таких как компьютеры.eπ

Полученные результаты

Я провел несколько симуляций для различного числа загрузочных повторов. Стандартные ошибки оцениваются с использованием нормальных интервалов.

Обратите внимание, что выбор числа загружаемых объектов устанавливает абсолютный верхний предел точности результатов, поскольку процедура Монте-Карло оценивает а зависит только от . Установка излишне большим просто приведет к перегружению вашего компьютера, либо потому, что вам нужно только «грубое» приближение к либо потому, что смещение будет затоплено дисперсией из-за Монте-Карло. Эти результаты для и точностью до третьего знака после запятой.nppnnen=103p1e

Этот график показывает, что выбор имеет прямые и глубокие последствия для стабильности в . Синяя пунктирная линия показывает а красная линия показывает . Как и ожидалось, увеличение размера выборки дает все более точные оценки . mp^pep^введите описание изображения здесь

Я написал смущающе длинный R-скрипт для этого. Предложения по улучшению могут быть представлены на обратной стороне 20-долларовой купюры.

library(boot)
library(plotrix)
n <- 1e3

## if p_hat is estimated with 0 variance (in the limit of infinite bootstraps), then the best estimate we can come up with is biased by exactly this much:
approx <- 1/((1-1/n)^n)

dat <- c("A", rep("B", n-1))
indicator <- function(x, ndx)   xor("A"%in%x[ndx], TRUE) ## Because we want to count when "A" is *not* in the bootstrap sample

p_hat <- function(dat, m=1e3){
    foo <- boot(data=dat, statistic=indicator, R=m) 
    1/mean(foo$t)
} 

reps <- replicate(100, p_hat(dat))

boxplot(reps)
abline(h=exp(1),col="red")

p_mean <- NULL
p_var <- NULL
for(i in 1:10){
    reps <- replicate(2^i, p_hat(dat))
    p_mean[i] <- mean(reps)
    p_var[i] <- sd(reps)
}
plotCI(2^(1:10), p_mean, uiw=qnorm(0.975)*p_var/sqrt(2^(1:10)),xlab="m", log="x", ylab=expression(hat(p)), main=expression(paste("Monte Carlo Estimates of ", tilde(e))))
abline(h=approx, col='red')
Sycorax говорит восстановить Монику
источник
4
+1 Это имеет большой смысл. Есть ли шанс, что вы можете поделиться своим кодом, если вы написали его?
Антони Пареллада
2
Несмотря на то, что это может быть сколь угодно точным, в конечном итоге это неудовлетворительно, потому что оно имитирует только приближение к а не к . ee
whuber
1
Конечно. Вы бы просто завершили один повторный вызов внутри другого, который по сути такой же, как у нас сейчас.
Sycorax сообщает восстановить Monica
1
@whuber Я действительно не вижу различия между сколь угодно точным приближением к сколь угодно точному приближению к и сколь угодно точным приближением к самой . ee
JWG
1
@jwg В дополнение к важности концептуально, это также практически важно, потому что реализация приближения к приближению требует отслеживания того, насколько точна каждая из двух аппроксимаций. Но я должен согласиться, что когда оба приближения приемлемо хороши, тогда общий подход действительно хорош.
whuber
14

Решение 1:

Для распределения Пуассона Следовательно, если , что означает, что вы можете оценить с помощью моделирования Пуассона. И моделирование Пуассона может быть получено из генератора экспоненциального распределения (если не самым эффективным способом).P(λ)

P(X=k)=λkk!eλ
XP(1)
P(X=0)=P(X=1)=e1
e1

Замечание 1: Как обсуждалось в комментариях, это довольно запутанный аргумент, поскольку моделирование из распределения Пуассона или эквивалентного экспоненциального распределения может быть трудно представить без участия log или функции exp ... Но затем В. Хубер пришел к спасение этого ответа с наиболее элегантным решением на основе упорядоченной униформы. Однако это является приближением , поскольку распределение равномерного интервала является бета- , подразумевая, что который сходится к какU(i:n)U(i1:n)B(1,n)

P(n{U(i:n)U(i1:n)}1)=(11n)n
e1nрастет до бесконечности. В качестве еще одной стороны, которая отвечает на комментарии, экспоненциальный генератор фон Неймана 1951 года использует только однородные поколения.

Решение 2:

Другой способ добиться представления константы в виде интеграла состоит в том, чтобы напомнить, что когда то который также является распределением. Таким образом, Второй подход к аппроксимации от Монте-Карло, таким образом, должен моделировать нормальные пары и контролировать частоту времен . В некотором смысле это противоположность аппроксимации Монте-Карло для связанной с частотой времен ...e

X1,X2iidN(0,1)
(X12+X22)χ12
E(1/2)
P(X12+X222)=1{1exp(2/2)}=e1
e(X1,X2)X12+X222πX12+X22<1

Решение 3:

Мой коллега из Уорикского университета М. Поллок указал на другое приближение Монте-Карло, называемое методом Форсайта : идея состоит в том, чтобы запустить последовательность равномерных поколений до . Ожидание соответствующего правила остановки , которое представляет собой число раз, когда равномерная последовательность пошла вниз, равно тогда как вероятность того, что нечетно, равна ! ( Метод Форсайта на самом деле нацелен на моделирование из любой плотности вида , поэтому он более общий, чем аппроксимация и .)u1,u2,...un+1>unNeNe1expG(x)ee1

Это довольно параллельно с подходом Гнеденко, использованным в ответе Аксакала , поэтому мне интересно, может ли одно быть выведено из другого. По крайней мере, оба имеют одинаковое распределение с вероятностьюдля значения .1/n!n

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

use=runif(n)
band=max(diff((1:(n-1))[diff(use)>0]))+1
bends=apply(apply((apply(matrix(use[1:((n%/%band)*band)],nrow=band),
2,diff)<0),2,cumprod),2,sum)
Сиань
источник
12
Пока кто-то знает, как делать симуляцию Пуассона, не зная . e
Glen_b
5
Если я вызову генератор r rpoiss (), я могу притворяться, что не знаю . Более серьезно, вы можете генерировать экспоненциальные переменные [используя функцию вместо ] до тех пор, пока сумма не превысит а результирующее число минус один - это Пуассон . eE(1)loge1P(1)
Сиань
5
Вычисление равносильно вычислению , поскольку они являются обратными. Вы можете избежать вычисления любой такой функции различными способами. Вот одно решение, основанное на вашем первом ответе: оно использует только элементарную арифметику. logexpn <- 1e5; 1/mean(n*diff(sort(runif(n+1))) > 1)
whuber
3
Я считаю, что метод Форсайта такой же, как у Гнеденко. Выбор формы такой, что меньше 1, аналогичен выбору меньше , и, если мы добились успеха, условно равномерно распределено между и 0.xnnxixn1n1xi1nxi1n1xi
jwg
3
Я не знал о подходе Форсайта. Однако это связано с чем-то еще очень интересным. Если вместо остановки на вы продолжаете выборку, то ожидание расстояния от до следующего дна составляет ровно 3.n+1n
Аксакал
7

Не решение ... просто быстрый комментарий, который слишком длинный для поля комментария.

Аксакал

Аксакал опубликовал решение, в котором мы рассчитываем ожидаемое количество стандартных чертежей Униформы, которые должны быть взяты так, чтобы их сумма превышала 1. В Mathematica моей первой формулировкой было:

mrM := NestWhileList[(Random[] + #) &, Random[], #<1 &]

Mean[Table[Length[mrM], {10^6}]] 

РЕДАКТИРОВАТЬ: только что быстро поиграть с этим, и следующий код (тот же метод - также в Mma - просто другой код) примерно в 10 раз быстрее:

Mean[Table[Module[{u=Random[], t=1},  While[u<1, u=Random[]+u; t++]; t] , {10^6}]]

Сиань / Вубер

Whuber предложил быстрый классный код для имитации решения Сианя 1:

Версия R: n <- 1e5; 1/mean(n*diff(sort(runif(n+1))) > 1)

ММА версия: n=10^6; 1. / Mean[UnitStep[Differences[Sort[RandomReal[{0, n}, n + 1]]] - 1]]

который он отмечает, это в 20 раз быстрее первого кода (или примерно в два раза быстрее, чем новый код выше).

Просто ради интереса, я подумал, что было бы интересно посмотреть, насколько оба подхода эффективны (в статистическом смысле). Для этого я сгенерировал 2000 оценок e, используя:

  • Метод Аксакала: dataA
  • 1 метод Сианя с использованием whuber-кода: dataB

... оба в Mathematica . Следующая диаграмма сравнивает непараметрическую оценку плотности ядра результирующих наборов данных dataA и dataB.

введите описание изображения здесь

Таким образом, хотя код whuber (красная кривая) примерно в два раза быстрее, метод не выглядит «надежным».

оборота волчицы
источник
Вертикальная линия в месте истинного значения значительно улучшит это изображение.
Sycorax сообщает восстановить Monica
1
Это очень интересное наблюдение, спасибо. Поскольку полуширина будет масштабироваться квадратично с размером симуляции, а полуширина метода Сианя примерно вдвое больше, чем у метода Аксакала, то выполнение четырехкратного числа итераций сделает их одинаково точными. Остается вопрос о том, сколько усилий требуется в каждой итерации: если одна итерация метода Сианя занимает менее четверти усилия, тогда этот метод все равно будет более эффективным.
whuber
1
Я полагаю, что ситуация становится ясной, когда вы сравните число реализаций случайных величин, требуемых в обоих методах, а не номинальное значение . n
whuber
1
@whuber wrote: running four times as many iterations will make them equally accurate///// ..... Просто поигрался с этим: увеличил количество точек выборки, использованных в методе 1 Сианя, с до 6 x (то есть в 6 раз больше числа баллы) производит кривую, аналогичную Аксаксал. 106106
волки
1
Хорошо сделано с кодом - это будет трудно улучшить.
whuber
2

Метод, требующий нечестного количества образцов

Во-первых, вы должны иметь возможность выбирать из нормального распределения. Предполагая, что вы собираетесь исключить использование функции или просмотреть таблицы, полученные из этой функции, вы можете получить приблизительные выборки из нормального распределения через CLT. Например, если вы можете сделать выборку из равномерного (0,1) распределения, то . Как указал Уубер, чтобы подход окончательной оценки приближался к размеру выборки , необходимо, чтобы количество используемых однородных выборок приближалось к когда размер выборки приближался к бесконечности.f(x)=exx¯12n˙N(0,1)e

Теперь, если вы можете производить выборку из нормального распределения с достаточно большими выборками, вы можете получить непротиворечивые оценки плотности . Это можно сделать с помощью гистограмм или сглаживателей ядра (но будьте осторожны, чтобы не использовать ядро ​​Гаусса для следования правилу no !). Чтобы ваши оценки плотности были согласованными, вам нужно, чтобы df (число бинов на гистограмме, обратное к окну для сглаживания) приближался к бесконечности, но медленнее, чем размер выборки.N(0,1)ex

Так что теперь, с большой вычислительной мощностью, вы можете аппроксимировать плотность , то есть . Поскольку , ваша оценка для .N(0,1)ϕ^(x)ϕ((2))=(2π)1/2e1e=ϕ^(2)2π

Если вы хотите полностью сходить с ума, вы можете даже оценить и используя методы, которые вы обсуждали ранее.22π

Метод, требующий очень мало выборок, но вызывающий неоправданное количество числовых ошибок

Совершенно глупый, но очень эффективный ответ, основанный на комментарии, который я сделал:

Пусть . Определить, Определить .Xuniform(1,1)Yn=|(x¯)n|e^=(1Yn)1/Yn

Это будет сходиться очень быстро, но также приведет к крайней числовой ошибке.

Уубер указал, что здесь используется функция power, которая обычно вызывает функцию exp. Это можно обойти путем дискретизации , так что является целым числом, а мощность можно заменить повторным умножением. Было бы необходимо, чтобы при дискретизация становилась все точнее, а дискретизация должна исключать . При этом теоретически оценщик (т. Е. Мир, в котором не существует числовой ошибки) будет сходиться к и довольно быстро!Yn1/YnnYnYn=0e

Клифф AB
источник
2
Подход CLT менее чем удовлетворителен, потому что в конечном итоге вы знаете, что эти значения обычно не распределяются. Но существует множество способов генерирования нормальных переменных без необходимости использования или логарифмов: метод Бокса-Мюллера - один. Однако для этого требуются триггерные функции и (на фундаментальном уровне) те же функции, что и у экспонент. e
whuber
1
@whuber: Я не использовал Box-Muller из-за того, что в моей книге требовалось слишком прямое преобразование журнала в экспоненциальное. Я бы рефлексивно допустил соз и грех, но это было только потому, что я на мгновение забыл о сложном анализе, так что хорошая мысль.
Клифф А.Б.
1
Однако я бы поспорил с идеей, что сгенерированное нормальное приближение является слабым местом этой идеи; оценка плотности еще слабее! Вы можете подумать об этой идее иметь два параметра: , число униформ, используемых в вашей «аппроксимированной нормали», и количество используемых аппроксимированных нормалей, оценивают плотность как . Когда и приближаются к , оценщик приближается к . На самом деле, я очень уверен, что скорость сходимости будет гораздо более ограничена чем ; непараметрическая плотность имеет медленную скорость сходимости! n1n2ϕ(2)n1n2en2n1
Клифф А.Б.
2

Вот еще один способ сделать это, хотя это довольно медленно. Я не претендую на эффективность, но предлагаю эту альтернативу в духе полноты.

В отличие от ответа Сианя , для целей этого вопроса я предполагаю, что вы можете сгенерировать и использовать последовательность из равномерных псевдослучайных переменных и затем вам нужно оценить некоторым методом с использованием основных арифметических операций (то есть вы не можете использовать логарифмические или экспоненциальные функции или любые распределения, использующие эти функции). Данный метод мотивирован простым результатом, включающим однородные случайные величины:nU1,,UnIID U(0,1)e

E(I(Ui1/e)Ui)=1/e1duu=1.

Оценка с использованием этого результата:e сначала мы упорядочиваем значения выборки в порядке убывания, чтобы получить статистику порядка а затем определяем частичные суммы:u(1)u(n)

Sn(k)1ni=1k1u(i)for all k=1,..,n.

Теперь пусть а затем оцените путем интерполяции упорядоченных равномерных переменных. Это дает оценку для :mmin{k|S(k)1}1/ee

e^2u(m)+u(m+1).

Этот метод имеет небольшое смещение (из-за линейной интерполяции точки отсечки для ), но он является последовательной оценкой для . Метод может быть реализован довольно легко, но он требует сортировки значений, что требует больших вычислительных затрат, чем детерминистский расчет . Этот метод медленный, так как включает в себя сортировку значений.1/eee

Реализация в R: метод может быть реализован в Rиспользовании runifдля генерации однородных значений. Код выглядит следующим образом:

EST_EULER <- function(n) { U <- sort(runif(n), decreasing = TRUE);
                           S <- cumsum(1/U)/n;
                           m <- min(which(S >= 1));
                           2/(U[m-1]+U[m]); }

Реализация этого кода дает сходимость к истинному значению , но она очень медленная по сравнению с детерминированными методами.e

set.seed(1234);

EST_EULER(10^3);
[1] 2.715426

EST_EULER(10^4);
[1] 2.678373

EST_EULER(10^5);
[1] 2.722868

EST_EULER(10^6); 
[1] 2.722207

EST_EULER(10^7);
[1] 2.718775

EST_EULER(10^8);
[1] 2.718434

> exp(1)
[1] 2.718282

Я считаю, что мы хотим избежать любого метода, который использует любое преобразование, которое включает экспоненциальный или логарифм. Если мы можем использовать плотности, которые используют экспоненты в своем определении, то можно получить из этих алгебраически, используя вызов плотности.e

Восстановить Монику
источник