Precisa de ajuda para identificar uma distribuição por seu histograma


13

Eu tenho a população de amostra de um máximo de amplitude registrada de um determinado sinal. A população é de cerca de 15 milhões de amostras. Eu produzi um histograma da população, mas não consigo adivinhar a distribuição com esse histograma.

EDIT1: Arquivo com valores de amostra brutos está aqui: dados brutos

Alguém pode ajudar a estimar a distribuição com o seguinte histograma: insira a descrição da imagem aqui


1
não que isso importe drasticamente, mas ao usar histogramas, geralmente ajuda a ter a frequência relativa em vez da frequência absoluta no eixo y.
23411 posdef

isto é, fornecer 120000/15000000 = 0,008 em vez de 120000 no eixo vertical?
mbaitoff

@mbaitoff: Seus comentários à resposta da schenectady indicam que você está menos interessado em obter o nome da distribuição, mas em descobrir por que os valores são distribuídos dessa maneira. Isso está correto?
23611 steffen

1
@mbaitoff, não tenho certeza se isso se encaixaria perfeitamente na sua aplicação, mas em áreas de aplicação relacionadas, as magnitudes de ondas que sofrem (muitas) reflexões aleatórias entre fonte e receptor são modeladas por uma distribuição Rayleigh ou uma de suas generalizações, por exemplo, Rice ou Nakagami- distribuições. m
cardeal

2
O interesse real nesses dados está na dúzia ou mais de picos: a quantidade de dados é grande o suficiente para que eles sejam reais , no sentido de que são evidências dos modos locais reais. Parece haver aqui um rico conjunto de dados com uma grande quantidade de informações que seriam negligenciadas se uma fórmula paramétrica simples fosse usada para resumir sua distribuição.
whuber

Respostas:


23

Use fitdistrplus:

Aqui está o link CRAN para fitdistrplus.

Aqui está o antigo link da vinheta para fitdistrplus.

Se o link da vinheta não funcionar, pesquise "Uso da biblioteca fitdistrplus para especificar uma distribuição a partir dos dados".

A vinheta explica bem como usar o pacote. Você pode ver como várias distribuições se encaixam em um curto período de tempo. Também produz um diagrama de Cullen / Frey.

#Example from the vignette
library(fitdistrplus)
x1 <- c(6.4, 13.3, 4.1, 1.3, 14.1, 10.6, 9.9, 9.6, 15.3, 22.1, 13.4, 13.2, 8.4, 6.3, 8.9, 5.2, 10.9, 14.4)
plotdist(x1)
descdist(x1)

f1g <- fitdist(x1, "gamma")
plot(f1g)
summary(f1g)      

insira a descrição da imagem aqui

insira a descrição da imagem aqui


(+1): Não conhecia esse pacote antes.
Steffen

1
(+1 (não sabia que foi chamado um diagrama Cullen / Frey eu tinha que vir para cima com que me em um ponto..
Glen_b -Reinstate Monica

a segunda imagem é com plotdistcomamnd? Como posso obter o diagrama de Cullen / Frey?
juanpablo

1
@juanpablo - Tente descdist(). Atualizei o post acima para incluir algum código e um link para a vinheta antiga. Não foi possível obter o link da vinheta acima para funcionar. Portanto, pesquise no Google o seguinte: "Uso da biblioteca fitdistrplus para especificar uma distribuição a partir de dados". É um arquivo .pdf.
bill_080

3
@juanpablo - A declaração f1g <- fitdist(x1, "gamma")adapta uma distribuição gama aos dados originais x1e os armazena f1g. O gráfico superior esquerdo plot(f1g)mostra um histograma para os dados originais x1como barras e o gráfico de densidade gama ajustado f1gcomo linha contínua. O gráfico de densidade (linha contínua) é desenhado sobre o histograma como uma indicação de quão bem o "ajuste" representa os dados.
Bill_080

6

A população é de cerca de 15 milhões de amostras.

Muito provavelmente você poderá rejeitar qualquer distribuição específica de um formulário simples e fechado.

Mesmo esse pequeno inchaço à esquerda do gráfico provavelmente será suficiente para nos fazer dizer 'claramente não tal e tal'.

Por outro lado, provavelmente é muito bem aproximado por várias distribuições comuns; candidatos óbvios são coisas como lognormal e gama, mas existem muitos outros. Se você observar o log da variável x, provavelmente poderá decidir se o lognormal está correto à vista (depois de registrar os logs, o histograma deve parecer simétrico).

Se o registro estiver inclinado à esquerda, considere se Gamma está correto, se estiver correto, considere se Gamma inverso ou Gaussiano inverso (ainda mais inclinado) está correto. Mas esse exercício é mais para encontrar uma distribuição que seja próxima o suficiente para se viver; nenhuma dessas sugestões realmente possui todos os recursos que parecem estar presentes lá.

Se você tem alguma teoria para apoiar uma escolha, descarte toda essa discussão e use-a.


Uau, que tipo de intuição é essa sobre o assunto; legais! :)
onurcanbektas

1

Não sei por que você deseja classificar uma amostra para uma distribuição específica com um tamanho de amostra tão grande; parcimônia, comparando-a com outra amostra, procurando interpretação física dos parâmetros?

A maioria dos pacotes estatísticos (R, SAS, Minitab) permite plotar dados em um gráfico que gera uma linha reta se os dados vierem de uma distribuição específica. Vi gráficos que produzem uma linha reta se os dados forem normais (log normal após uma transformação de log), Weibull e qui-quadrado chegam ao meu imediatamente. Essa técnica permitirá que você veja discrepâncias e dê a possibilidade de atribuir razões pelas quais os pontos de dados são discrepantes. Em R, o gráfico de probabilidade normal é chamado qqnorm.


Boa ideia sugerindo o qqplot. No entanto, acho que sua explicação sobre a técnica é um pouco vaga / difícil de entender. Você pode fornecer um código R exemplar? Isso aumentaria drasticamente o valor da resposta.
Steffen

Espero que alguém tenha encontrado a imagem como a minha e investigado a distribuição subjacente, porque os valores têm base física.
mbaitoff

Estou investigando o contexto físico da distribuição da amostra - como ela é distribuída e por quê.
mbaitoff
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.