Qual é a distribuição desses dados?


8

Eu peguei os dados, plotei a distribuição dos dados e uso a função qqnorm, mas parece que não segue uma distribuição normal, então qual distribuição devo usar para descrever os dados?

Função de distribuição cumulativa empírica insira a descrição da imagem aqui

insira a descrição da imagem aqui


Uma plotagem do histograma também pode ser útil para inspecionar. Pode parecer uma distribuição enviesada, em vez de precisar de um modelo de mistura.
John

1
Você poderia nos contar um pouco sobre por que você está tentando descrever essa distribuição? Afinal, existem muitas alternativas para dar o nome de alguma função matemática conhecida: suavização do kernel, resumos de n-letras, o próprio ECDF e assim por diante. Todas são descrições adequadas nas configurações apropriadas.
whuber

Respostas:


11

Eu sugiro que você dê heavy-tail Lambert W x F ou enviesada Lambert W x F distribuições uma tentativa (disclaimer: Eu sou o autor). Em R, eles são implementados no pacote LambertW .

XFYLambert W×FFh

δ0γRUN(0,1)×Z

Z=Uexp(δ2U2)

δ>0 ZUδ=0ZU

Se você não quiser usar o Gaussian como sua linha de base, poderá criar outras versões Lambert W da sua distribuição favorita, por exemplo, t, uniforme, gama, exponencial, beta, ... No entanto, para o seu conjunto de dados, um double heavy- A distribuição de Lambert W x Gaussian (ou Lambert W xt) parece ser um bom ponto de partida.

library(LambertW)
set.seed(10)

### Set parameters ####
# skew Lambert W x t distribution with 
# (location, scale, df) = (0,1,3) and positive skew parameter gamma = 0.1
theta.st <- list(beta = c(0, 1, 3), gamma = 0.1)
# double heavy-tail Lambert W x Gaussian
# with (mu, sigma) = (0,1) and left delta=0.2; right delta = 0.4 (-> heavier on the right)
theta.hh <- list(beta = c(0, 1), delta = c(0.2, 0.4))

### Draw random sample ####
# skewed Lambert W x t
yy <- rLambertW(n=1000, distname="t", theta = theta.st)

# double heavy-tail Lambert W x Gaussian (= Tukey's hh)
zz =<- rLambertW(n=1000, distname = "normal", theta = theta.hh)

### Plot ecdf and qq-plot ####
op <- par(no.readonly=TRUE)
par(mfrow=c(2,2), mar=c(3,3,2,1))
plot(ecdf(yy))
qqnorm(yy); qqline(yy)

plot(ecdf(zz))
qqnorm(zz); qqline(zz)
par(op)

ecdf e qqplot de distribuições Lambert W x F inclinadas / de cauda pesada

θ=(β,δ)ββ=(μ,σ)β=(c,s,ν)t

### Parameter estimation ####
mod.Lst <- MLE_LambertW(yy, distname="t", type="s")
mod.Lhh <- MLE_LambertW(zz, distname="normal", type="hh")

layout(matrix(1:2, ncol = 2))
plot(mod.Lst)
plot(mod.Lhh)

insira a descrição da imagem aqui

Como essa geração de cauda pesada é baseada em transformações bijetivas de RVs / dados, você pode remover as caudas pesadas dos dados e verificar se elas são boas agora, ou seja, se são gaussianas (e teste usando testes de normalidade).

### Test goodness of fit ####
## test if 'symmetrized' data follows a Gaussian
xx <- get_input(mod.Lhh)
normfit(xx)

insira a descrição da imagem aqui

Isso funcionou muito bem para o conjunto de dados simulado. Eu sugiro que você tente e veja se você também pode Gaussianize()seus dados .

No entanto, como @whuber apontou, a bimodalidade pode ser um problema aqui. Então, talvez você queira verificar os dados transformados (sem as caudas pesadas) o que está acontecendo com essa bimodalidade e, assim, fornecer informações sobre como modelar seus dados (originais).


+1 Muito claro e bem ilustrado: você se esforça para compartilhar essas idéias conosco e agradeço.
whuber

γRθδ

1
@ Macro: Eu fiz edições no post original para esclarecer esses dois pontos.
Georg M. Goerg

Eu sou um fã, e começou a trabalhar em um scikit-learn como a versão aqui: github.com/gregversteeg/gaussianize
Greg Ver Steeg

7

Parece uma distribuição assimétrica que possui caudas mais longas, em ambas as direções, do que a distribuição normal.

  • Você pode ver a cauda longa porque os pontos observados são mais extremos do que os esperados na distribuição normal, no lado esquerdo e direito (ou seja, estão abaixo e acima da linha, respectivamente).

  • Você pode ver a assimetria porque, na cauda direita, a extensão em que os pontos são mais extremos do que o que seria esperado na distribuição normal é maior do que na cauda esquerda.

Não consigo pensar em nenhuma distribuição "enlatada" que tenha esse formato, mas não é muito difícil "preparar" uma distribuição com as propriedades declaradas acima.

Aqui está um exemplo simulado (em R):

set.seed(1234)
x=rexp(1e3)
y=-rexp(1e3,rate=2)
z=c(x,y)
qqnorm(z)
qqline(z) # see below for the plot. 
plot( ecdf(z) ) # see below for plot (2nd plot)

exponential(1)exponential(2)

Este exemplo produz um qqplot e CDF empírico bastante semelhante (qualitativamente) ao que você está vendo:

insira a descrição da imagem aqui insira a descrição da imagem aqui


1
Modelos de mistura +1 são úteis. Especialmente se você tiver dados gerados em duas ou mais circunstâncias diferentes.
Seth

+1 O uso de distribuições flexíveis também pode ser considerado.

@Procrastinator, a que distribuições flexíveis você se refere (ou é um termo técnico)?
Macro

Por exemplo, distribuições skew-t: 1 , 2 , 3 , 4 , 5 . Eles são unimodais, contêm um parâmetro de assimetria e um parâmetro de curtose e evitam a suposição nos modelos de mistura de que existem duas ou mais populações gerando as observações, como @Seth mencionou.

1
t

0

Para descobrir qual distribuição é a mais adequada, primeiro identificaria algumas possíveis distribuições de destino: pensaria no processo do mundo real que gerou os dados, depois ajustaria algumas densidades em potencial aos dados e compararia suas pontuações de probabilidade de log para ver qual distribuição potencial se encaixa melhor. Isso é fácil no R com a função fitdistr na biblioteca MASS.

Se seus dados são como z da Macro, então:

>fitdistr(z,'cauchy',list(location=mean(z),scale=sqrt(sd(z))))$loglik
[1] -2949.068

> fitdistr(z,'normal')$loglik
[1] -3026.648

> fitdistr(z,'t')$loglik
[1] -2830.861

Portanto, isso fornece a distribuição t como a mais adequada (daquelas que tentamos) para os dados da Macro. confirme isso com alguns qqplots usando os parâmetros de fitdistr.

> qqplot(z,rt(length(z),df=2.7))  

Em seguida, compare esse gráfico com os outros ajustes de distribuição.


1
t

@ Macro Muitas distribuições "prontas para uso" podem lidar com situações de cauda inclinada e pesada. F e Gamma vêm à mente, juntamente com quase todas as distribuições de 3 e 4 parâmetros. Acabei de adicionar uma resposta para que o pôster original tenha uma idéia de como quantificar a 'qualidade do ajuste' e fazer comparações numéricas.
Seth

Entendi seu argumento, mas estou apenas tentando descobrir se alguma distribuição "pronta para uso" funcionaria aqui. Gamma e F são não-negativos e não acho que a Gamma possa atingir esse tipo de forma, mesmo se você alterou os dados adequadamente para que não fossem negativos.
Macro

Seth e @Macro, o gráfico do EDF na pergunta exibe bimodalidade, então esqueça de conseguir um bom ajuste com uma distribuição convencional se houver a necessidade de capturar esse segundo modo. No momento, não temos um critério eficaz para recomendar um ajuste. E se o PO tiver resíduos de dados de enchentes em regressão ou catástrofes financeiras e, portanto, precisar se encaixar bem na cauda superior? E se for essencial para ele / ela separar os modos? As respostas serão surpreendentemente diferentes, dependendo da aplicação. O ajuste da distribuição deve ser mais do que um exercício matemático cego!
whuber
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.