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

PepsiCo
fonte
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).

Georg M. Goerg
fonte
+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

Macro
fonte
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.

Seth
fonte
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