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


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


Respostas:
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 .
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)

### 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)

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)

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).
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)
Este exemplo produz um qqplot e CDF empírico bastante semelhante (qualitativamente) ao que você está vendo:

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.