Що означає усічений розподіл?


14

У дослідницькій статті про аналіз чутливості звичайної диференціальної моделі рівняння динамічної системи автор запропонував розподіл параметра моделі як нормальний розподіл (середнє = 1e-4, std = 3e-5), усічений до діапазону [0,5e -4 1,5е-4]. Потім він використовує зразки з цього усіченого розподілу для моделювання моделі. Що означає мати усічений розподіл та вибірку з цього усіченого розподілу?

Я міг би придумати два способи цього:

  • Вибірка з нормального розподілу, але ігноруйте всі випадкові значення, що виходять за межі зазначеного діапазону перед моделюванням.
  • Якось отримайте спеціальний розподіл "Урізана нормальна" і отримайте з неї зразки.

Це чинні та рівнозначні підходи?

Я вважаю, що у першому випадку, якби побудувати експериментальний cdf / pdf зразка, це не виглядало б як нормальне розподіл, оскільки криві не поширюються на ± .

Відповіді:


16

Урізати розподіл - обмежити його значення інтервалом та повторно нормалізувати щільність, щоб інтеграл у цьому діапазоні дорівнював 1.

Отже, урізати розподіл N(μ,σ2) на інтервал (a,b) було б генерувати випадкову змінну, яка має щільність

pa,b(x)=ϕμ,σ2(x)abϕμ,σ2(y)dyI{x(a,b)}

де ϕμ,σ2(x) - щільність N(μ,σ2) . Ви можете взяти вибірку з цієї щільності різними способами. Один із способів (найпростіший спосіб, що я можу придумати) - це створити N(μ,σ2) значень і викинути ті, що випадають поза (a,b)інтервал, як ви згадали. Отже, так, ці дві кулі, які ви перерахували, досягли б тієї ж мети. Також ви маєте рацію, що емпірична щільність (або гістограма) змінних цього розподілу не поширюватиметься на . Звичайно, це було б обмежено ( a , b ) .±(a,b)


17

Моделювання з нормального розподілу поки результат не потрапить в інтервал ( a , b ) , добре, коли ймовірність ϱ = b a φ μ , σ 2 ( x )N(μ,σ2)(a,b) досить великий. Якщо вона занадто мала, ця процедура занадто дорога, оскільки середня кількість розіграшів за один прийом становить 1 / ϱ .

ϱ=abφμ,σ2(x)dx
1/ϱ

Як описано в статистичних методах Монте-Карло (глава 2, приклад 2.2), а також у моєму документі arXiv , більш ефективним способом моделювання цієї усіченої норми є використання методу прийняття-відхилення на основі експоненціального розподілу .E(α)

Розглянемо, не втрачаючи загальності, випадок і σ = 1 . Коли b = + , потенційним інструментальним розподілом є переведений експоненціальний розподіл, E ( α , a ) , з щільністю g α ( z ) = α e - α ( z - a )μ=0σ=1b=+E(α,a) Ставлення р , ( г ) / г α ( г ) α е - α ( г - ) е - г 2 / 2 потім обмежена ехр ( α 2 / 2 - α ) , якщо α > і ехр ( - 2 / 2 ) в іншому випадку. Відповідна (верхня) межа є

gα(z)=αeα(za)Iza.
pa,(z)/gα(z)eα(za)ez2/2
exp(α2/2αa)α>aexp(a2/2) Перший вираз мінімізується на α=1
{1/αexp(α2/2αa)if α>a,1/αexp(a2/2)otherwise.
тоді як ˜ α = a мінімізує другу межу. Оптимальним вибором α є (1).
α=12a+12a2+4,(1)
α~=aα

2
Можливо, мені чогось не вистачає, але що поганого в тому, щоб просто взяти і дозволити X = Φ - 1 ( U ) ? Це не дає бажаного розподілу? UUnif(Φ(a),Φ(b))X=Φ1(U)
bnaul

2
a0

1
Сіань прав, @bnaul. Запуск qnormу циклі R - не дуже гарна ідея.
Стефан Лоран

@ Xi'an: Це правда, але такі функції можуть бути спроектовані довільною точністю.
Ніл Г

9

Вибірка з нормального розподілу, але ігноруйте всі випадкові значення, що виходять за межі зазначеного діапазону перед моделюванням.

Цей метод є правильним, але, як згадував @ Xi'an у своїй відповіді, це пройшло б тривалий час, коли діапазон малий (точніше, коли його міра при нормальному розподілі) мала.

F1(U)ЖUUnif(0,1)FG(a,b)G1(U)UUnif(G(a),G(b))

G1G1GG1 is rather slow, and it is not highly precise for values of a and b outside the "range" of G.

Simulate a truncated distribution using importance sampling

A possibility is to use importance sampling. Consider the case of the standard Gaussian distribution N(0,1). Forget the previous notations, now let G be the Cauchy distribution. The two above mentionned requirements are fulfilled for G : one simply has G(q)=arctan(q)π+12 and G1(q)=tan(π(q12)). Therefore, the truncated Cauchy distribution is easy to sample by the inversion method and it is a good choice of the instrumental variable for importance sampling of the truncated normal distribution.

After a bit of simplifications, sampling UUnif(G(a),G(b)) and taking G1(U) is equivalent to take tan(U) with UUnif(arctan(a),arctan(b)):

a <- 1
b <- 5
nsims <- 10^5
sims <- tan(runif(nsims, atan(a), atan(b)))

Now one has to calculate the weight for each sampled value xi, defined as the ratio ϕ(x)/g(x) of the two densities up to normalization, hence we can take

w(x)=exp(x2/2)(1+x2),
but it could be safer to take the log-weights:
log_w <- -sims^2/2 + log1p(sims^2)
w <- exp(log_w) # unnormalized weights
w <- w/sum(w)

The weighted sample (xi,w(xi)) allows to estimate the measure of every interval [u,v] under the target distribution, by summing the weights of each sampled value falling inside the interval:

u <- 2; v<- 4
sum(w[sims>u & sims<v])
## [1] 0.1418

This provides an estimate of the target cumulative function. We can quickly get and plot it with the spatsat package:

F <- spatstat::ewcdf(sims,w)
# estimated F:
curve(F(x), from=a-0.1, to=b+0.1)
# true F:
curve((pnorm(x)-pnorm(a))/(pnorm(b)-pnorm(a)), add=TRUE, col="red")

ewcdf

# approximate probability of u<x<v:
F(v)-F(u)
## [1] 0.1418

Of course, the sample (xi) is definitely not a sample of the target distribution, but of the instrumental Cauchy distribution, and one gets a sample of the target distribution by performing weighted resampling, for instance using the multinomial sampling:

msample <- rmultinom(1, nsims, w)[,1]
resims <- rep(sims, times=msample)
hist(resims) 

hist

mean(resims>u & resims<v)
## [1] 0.1446

Another method: fast inverse transform sampling

Olver and Townsend developed a sampling method for a broad class of continuous distribution. It is implemented in the chebfun2 library for Matlab as well as the ApproxFun library for Julia. I have recently discovered this library and it sounds very promising (not only for random sampling). Basically this is the inversion method but using powerful approximations of the cdf and the inverse cdf. The input is the target density function up to normalization.

The sample is simply generated by the following code:

using ApproxFun
f = Fun(x -> exp(-x.^2./2), [1,5]);
nsims = 10^5;
x = sample(f,nsims);

As checked below, it yields an estimated measure of the interval [2,4] close to the one previously obtained by importance sampling:

sum((x.>2) & (x.<4))/nsims
## 0.14191
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.