Szukam rozkładu, w którym gęstość prawdopodobieństwa szybko maleje po pewnym punkcie oddalonym od średniej lub, moim zdaniem, „rozkładem w kształcie płaskowyżu”.
Coś pomiędzy gaussowskim a mundurem.
Szukam rozkładu, w którym gęstość prawdopodobieństwa szybko maleje po pewnym punkcie oddalonym od średniej lub, moim zdaniem, „rozkładem w kształcie płaskowyżu”.
Coś pomiędzy gaussowskim a mundurem.
Odpowiedzi:
Być może szukasz dystrybucji znanej pod nazwą uogólniona normalna (wersja 1) , dystrybucja subbotynowa lub wykładnicza dystrybucja mocy. Jest on parametryzowany przez położenie , skalę σ i kształt β za pomocą pdf
jak widać, dla przypomina i zbiega się do rozkładu Laplace'a, przy β = 2 zbiega się do normalnego, a gdy β = ∞ do równomiernego rozkładu.
Jeśli szukasz oprogramowania, które ma to zaimplementowane, możesz sprawdzić normalp
bibliotekę dla R (Mineo i Ruggieri, 2005). Co jest ładne na temat tego pakietu jest to, że między innymi realizuje regresji z błędami o rozkładzie normalnym uogólnionych, czyli minimalizowanie normę.
Mineo, AM, i Ruggieri, M. (2005). Oprogramowanie do wykładniczej dystrybucji mocy: Pakiet normalp. Journal of Statistics Software, 12 (4), 1-24.
Komentarz StrongBada @ jest naprawdę dobrą sugestią. Suma jednolitego RV i gaussowskiego RV może dać ci dokładnie to, czego szukasz, jeśli odpowiednio wybierzesz parametry. I faktycznie ma całkiem dobre rozwiązanie w formie zamkniętej.
Plik PDF tej zmiennej jest podany w wyrażeniu:
jest „promieniem” równomiernego RV równego zeru. σ to odchylenie standardowe zerowej średniej RV gaussa.
Istnieje nieskończona liczba rozkładów w kształcie płaskowyżu.
Czy szukałeś czegoś bardziej konkretnego niż „pomiędzy gaussowskim a mundurem”? To trochę niejasne.
Oto jedna prosta: zawsze możesz przykleić pół normalną na każdym końcu munduru:
Możesz kontrolować „szerokość” munduru w stosunku do skali normalnej, dzięki czemu możesz mieć szersze lub węższe płaskowyże, co daje całą klasę rozkładów, w tym przypadki Gaussa i mundur jako przypadki ograniczające.
Gęstość wynosi:
gdzie
Gdy dla stałej w , zbliżamy się do munduru na ( μ - w / 2 , μ + w / 2 ), a jako w → 0 dla stałej σ zbliżamy się do N ( μ , σ 2 ) .
Oto kilka przykładów (z w każdym przypadku):
Być może moglibyśmy nazwać tę gęstość „mundurem gaussowskim”.
Zobacz moją dystrybucję „Diabelskiej wieży” tutaj [1]:
, dla | x | < 0,9399 ; f ( x ) = 0,2945 / x 2 , dla 0,9399 ≤ | x | < 2,3242 ; i f ( x ) = 0 , dla 2,3242 ≤ | x | .
Dystrybucja „slip-dress” jest jeszcze bardziej interesująca.
Łatwo jest budować rozkłady o dowolnym kształcie.
[1]: Westfall, PH (2014)
„Kurtosis as Peakedness, 1905 - 2014. RIP”
Popr. Stat. 68 (3): 191–195. doi: 10.1080 / 00031305.2014.917055
publiczny dostęp pdf: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4321753/pdf/nihms-599845.pdf
Kolejny ( EDYCJA : uprościłem go teraz. EDIT2 : uprościłem go jeszcze bardziej, chociaż teraz obraz tak naprawdę nie odzwierciedla tego dokładnego równania):
Oto przykładowy kod w 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
to nasza dystrybucja. Wykreślmy to dla sekwencjix
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)
Dane wyjściowe konsoli:
#[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"
I fabuła:
Można zmienić a
i b
około początek i koniec stoku odpowiednio, ale potem dalej normalizacja byłaby potrzebna, a nie obliczać go (dlatego używam a = 2
i b = 1
na wykresie).
Jeśli szukasz czegoś bardzo prostego, z centralnym płaskowyżem i bokami rozkładu trójkątów, możesz na przykład połączyć N rozkładów trójkątów, N w zależności od pożądanego stosunku między płaskowyżem a zejściem. Po co trójkąty, ponieważ ich funkcje próbkowania istnieją już w większości języków. Losowo sortujesz według jednego z nich.
W R dałoby to:
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)
Oto ładna: produkt dwóch funkcji logistycznych.
(1/B) * 1/(1+exp(A*(x-B))) * 1/(1+exp(-A*(x+B)))
Ma to tę zaletę, że nie jest częściowe.
B dostosowuje szerokość, a A dostosowuje stromość opadania. Poniżej pokazano B = 1: 6 z A = 2. Uwaga: Nie zastanawiałem się, jak właściwie to znormalizować.