Estou procurando uma distribuição em que a densidade de probabilidade diminua rapidamente após algum ponto da média ou, em minhas próprias palavras, uma "distribuição em forma de platô".
Algo entre o gaussiano e o uniforme.
Estou procurando uma distribuição em que a densidade de probabilidade diminua rapidamente após algum ponto da média ou, em minhas próprias palavras, uma "distribuição em forma de platô".
Algo entre o gaussiano e o uniforme.
Respostas:
Você pode estar procurando por uma distribuição conhecida sob os nomes de distribuição normalizada generalizada (versão 1) , Subbotin ou distribuição de energia exponencial. É parametrizado por localização , escala e forma com pdf
como você pode notar, para ele se assemelha e converge para a distribuição Laplace, com converge para o normal e quando para distribuição uniforme.β = 2 β = ∞
Se você está procurando um software que o tenha implementado, pode verificar a normalp
biblioteca para R (Mineo e Ruggieri, 2005). O que é legal nesse pacote é que, entre outras coisas, implementa a regressão com erros distribuídos normalmente generalizados, ou seja, minimizando a norma .
Mineo, AM e Ruggieri, M. (2005). Uma ferramenta de software para a distribuição exponencial de energia: O pacote normalp. Journal of Statistical Software, 12 (4), 1-24.
O comentário do @ StrongBad é uma sugestão muito boa. A soma de um VR uniforme e de um RV gaussiano pode fornecer exatamente o que você está procurando se escolher os parâmetros corretamente. E na verdade tem uma solução de formulário fechado razoavelmente agradável.
O pdf desta variável é dado pela expressão:
σ é o "raio" do VR uniforme com média zero. é o desvio padrão do VR gaussiano com média zero.
Há um número infinito de distribuições "em forma de platô".
Você buscava algo mais específico do que "entre o gaussiano e o uniforme"? Isso é um tanto vago.
Aqui está uma pergunta fácil: você sempre pode colocar uma meia-normal em cada extremidade de um uniforme:
Você pode controlar a "largura" do uniforme em relação à escala do normal, para ter platôs mais largos ou mais estreitos, fornecendo toda uma classe de distribuições, que incluem o gaussiano e o uniforme como casos limitantes.
A densidade é:
Talvez possamos chamar essa densidade de "uniforme de cauda gaussiana".
Veja minha distribuição da "Torre do Diabo" aqui [1]:
A distribuição "slip-dress" é ainda mais interessante.
É fácil construir distribuições com o formato que você deseja.
[1]: Westfall, PH (2014)
"Kurtosis as Peakedness, 1905 - 2014. RIP"
Alt. Stat. 68 (3): 191-195. doi: 10.1080 / 00031305.2014.917055
acesso público pdf: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4321753/pdf/nihms-599845.pdf
Outro ( EDIT : simplifiquei agora. EDIT2 : simplifiquei ainda mais, embora agora a imagem não reflita realmente esta equação exata):
Aqui está um exemplo de código em 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
é a nossa distribuição. Vamos traçá-lo para uma sequência dex
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)
Saída do console:
#[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"
E trama:
Você poderia alterar a
e b
, aproximadamente o início e o fim da inclinação, respectivamente, mas seria necessária mais normalização, e eu não a calculei (é por isso que estou usando a = 2
e b = 1
no gráfico).
Se você está procurando algo muito simples, com um platô central e os lados de uma distribuição triangular, pode, por exemplo, combinar distribuições de triângulo N, N dependendo da proporção desejada entre o platô e a descida. Por que triângulos, porque suas funções de amostragem já existem na maioria dos idiomas. Você escolhe aleatoriamente um deles.
Em R isso daria:
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)
Aqui está uma bonita: o produto de duas funções logísticas.
(1/B) * 1/(1+exp(A*(x-B))) * 1/(1+exp(-A*(x+B)))
Isso tem o benefício de não ser por partes.
B ajusta a largura e A ajusta a inclinação da queda. Abaixo, são mostrados B = 1: 6 com A = 2. Nota: Não tomei tempo para descobrir como normalizar isso corretamente.