Я шукаю розподіл, де щільність ймовірності швидко зменшується через деяку точку від середньої, або, власними словами, «платоподібний розподіл».
Щось між Гауссом та мундиром.
Я шукаю розподіл, де щільність ймовірності швидко зменшується через деяку точку від середньої, або, власними словами, «платоподібний розподіл».
Щось між Гауссом та мундиром.
Відповіді:
Ви можете шукати розподіл, відомий під назвами узагальненого нормального (версія 1) , розподілу суботинів або експоненціального розподілу потужності. Параметризується розташуванням , шкалою σ та формою β з pdf
як ви можете помітити, для він нагадує і переходить до розподілу Лапласа, при β = 2 він переходить до нормального, а коли β = ∞ до рівномірного розподілу.
Якщо ви шукаєте програмне забезпечення, яке його реалізувало, ви можете перевірити normalp
бібліотеку на R (Mineo та Ruggieri, 2005). У цьому пакеті приємно те, що він, серед іншого, реалізує регресію з узагальненими нормально розподіленими помилками, тобто мінімізацією норми .
Mineo, AM, & Ruggieri, M. (2005). Програмний інструмент для експоненціального розподілу енергії: пакет normalp. Журнал статистичного програмного забезпечення, 12 (4), 1-24.
@ Коментар StrongBad - це дійсно гарна пропозиція. Сума рівномірного RV і Gaussian RV може дати вам саме те, що ви шукаєте, якщо правильно вибрати параметри. І це насправді має досить приємне рішення закритої форми.
Pdf цієї змінної задається виразом:
- "радіус" нульової середньої рівномірної RV. σ - стандартне відхилення нульового середнього гауссова RV.
Існує нескінченна кількість «платоподібних» розподілів.
Ви були після чогось більш конкретного, ніж "між гауссом і мундиром"? Це дещо розпливчасто.
Ось один простий: ви завжди можете дотримуватися пів-нормального на кожному кінці форми:
Ви можете керувати "шириною" рівномірного відносно шкали нормальної, щоб ви мали ширші або вужчі плато, даючи цілий клас розподілів, до складу яких входять гауссові та уніформа як обмежуючі випадки.
Щільність:
Ми можемо, можливо, назвати цю щільність "обмундированою Гауссом".
Дивіться мою дистрибуцію "Башта диявола" тут [1]:
Розподіл "ковзання" ще цікавіший.
Легко сконструювати розподіли, що мають форму, яку ви хочете.
[1]: Westfall, PH (2014)
«Куртоз як пік, 1905 - 2014. RIP»
Am. Стат. 68 (3): 191–195. doi: 10.1080 / 00031305.2014.917055
публічний доступ pdf: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4321753/pdf/nihms-599845.pdf
Ще один ( EDIT : я спростив його зараз. EDIT2 : я ще більше спростив його, хоча тепер малюнок насправді не відображає цього точного рівняння):
Ось приклад коду в R:
f = function(x, a, b, alpha){
y = log((cosh(2*alpha*pi*a)+cosh(2*alpha*pi*x))/(cosh(2*alpha*pi*b)+cosh(2*alpha*pi*x)))
y = y/pi/alpha/6
return(y)
}
f
наш розподіл. Давайте побудуємо його для послідовностіx
plot(0, type = "n", xlim = c(-5,5), ylim = c(0,0.4))
x = seq(-100,100,length.out = 10001L)
for(i in 1:10){
y = f(x = x, a = 2, b = 1, alpha = seq(0.1,2, length.out = 10L)[i]); print(paste("integral =", round(sum(0.02*y), 3L)))
lines(x, y, type = "l", col = rainbow(10, alpha = 0.5)[i], lwd = 4)
}
legend("topright", paste("alpha =", round(seq(0.1,2, length.out = 10L), 3L)), col = rainbow(10), lwd = 4)
Вихід консолі:
#[1] "integral = 1"
#[1] "integral = 1"
#[1] "integral = 1"
#[1] "integral = 1"
#[1] "integral = 1"
#[1] "integral = 1"
#[1] "integral = 1"
#[1] "integral = NaN" #I suspect underflow, inspecting the plots don't show divergence at all
#[1] "integral = NaN"
#[1] "integral = NaN"
І сюжет:
Ви можете змінити a
і b
, приблизно початок і кінець схилу відповідно, а потім додатково нормалізації були б необхідні, і я не розрахував його (саме тому я використовую a = 2
і b = 1
в сюжеті).
Якщо ви шукаєте щось дуже просте, із центральним плато та сторонами розподілу трикутника, ви можете, наприклад, поєднати N розподілів трикутників, N залежно від бажаного співвідношення між плато та спуском. Навіщо трикутники, адже їх функції вибірки вже існують у більшості мов. Ви випадково сортуєте один із них.
У R це дало б:
library(triangle)
rplateau = function(n=1){
replicate(n, switch(sample(1:3, 1), rtriangle(1, 0, 2), rtriangle(1, 1, 3), rtriangle(1, 2, 4)))
}
hist(rplateau(1E5), breaks=200)
Ось досить: продукт двох логістичних функцій.
(1/B) * 1/(1+exp(A*(x-B))) * 1/(1+exp(-A*(x+B)))
Це має перевагу в тому, що не бути кусочно.
B регулює ширину, а A регулює крутизну падіння. Нижче показано B = 1: 6 при A = 2. Примітка. Я не знайшов часу, щоб зрозуміти, як правильно це нормалізувати.